aboutsummaryrefslogtreecommitdiff
path: root/nix/modules/home/user.nix
blob: 597eb160bdc83f38c840f2321e099d46cc24701e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{ lib, config, pkgs, ... }:
{
  sops = import ./sops.nix;
  home = {
    activation.startup-files = lib.hm.dag.entryAfter [ "installPackages" ] ''
    if [ ! -d "/home/${config.monorepo.vars.userName}/email/ret2pop/" ]; then
      mkdir -p /home/${config.monorepo.vars.userName}/email/ret2pop/
    fi
    if [ ! -d "/home/${config.monorepo.vars.userName}/music" ]; then
      mkdir -p /home/${config.monorepo.vars.userName}/music
    fi
    if [ ! -d "/home/${config.monorepo.vars.userName}/sounds" ]; then
      mkdir -p /home/${config.monorepo.vars.userName}/sounds
    fi
    touch /home/${config.monorepo.vars.userName}/org/agenda.org
    touch /home/${config.monorepo.vars.userName}/org/notes.org
    touch /home/${config.monorepo.vars.userName}/.monorepo
    '';

    enableNixpkgsReleaseCheck = false;
    username = config.monorepo.vars.userName;
    homeDirectory = "/home/${config.monorepo.vars.userName}";
    stateVersion = "24.11";

    packages = with pkgs; [
      # passwords
      age sops

      # formatting
      ghostscript texliveFull pandoc

      # Emacs Deps
      graphviz jq

      # Apps
      octaveFull vesktop grim swww

      # Sound/media
      pavucontrol alsa-utils imagemagick ffmpeg vim

      # Net
      curl rsync git

      # fonts
      noto-fonts
      noto-fonts-cjk-sans
      noto-fonts-emoji
      fira-code
      font-awesome_6
      (aspellWithDicts
        (dicts: with dicts; [ en en-computers en-science ]))
      (nerdfonts.override { fonts = [ "Iosevka" ]; })

      # Misc.
      pinentry
      x11_ssh_askpass
      xdg-utils
      acpilight
      pfetch
      libnotify
      
      # Shell script
      (writeShellScriptBin "post-install" ''
cd $HOME
ping -q -c1 google.com &>/dev/null && echo "online! Proceeding with the post-install..." || nmtui
sudo chown -R "$(whoami)":users ./monorepo

sudo nixos-rebuild switch --flake ./monorepo/nix#continuity
echo "Post install done! Now install your ssh and gpg keys. Log in again."
sleep 3
exit
'')
    ];
  };

  services = {
    mako = import ./mako.nix;
    gpg-agent = {
      pinentryPackage = pkgs.pinentry-emacs;
      enable = true;
      extraConfig = ''
      allow-emacs-pinentry
      allow-loopback-pinentry
    '';
    };
    gammastep = import ./gammastep.nix;
    mpd = import ./mpd.nix;
  };

  programs = {
    mpv = import ./mpv.nix;
    yt-dlp = import ./yt-dlp.nix;
    wofi = import ./wofi.nix;
    kitty = import ./kitty.nix;
    firefox = import ./firefox.nix;
    waybar = import ./waybar.nix;
    zsh = import ./zsh.nix;
    emacs = import ./emacs.nix;
    mbsync = import ./mbsync.nix;
    msmtp = import ./msmtp.nix;
    bash.enable = true;
    git = import ./git.nix;
    home-manager.enable = lib.mkDefault config.monorepo.profiles.home.enable;
  };

  wayland.windowManager.hyprland = import ./hyprland.nix;

  gtk = {
    enable = true;
    theme = null;
    iconTheme = null;
  };

  i18n.inputMethod = {
    enabled = "fcitx5";
    fcitx5.addons = with pkgs; [
      fcitx5-gtk
      fcitx5-chinese-addons
      fcitx5-configtool
      fcitx5-mozc
      fcitx5-rime
    ];
  };

  fonts.fontconfig.enable = true;
  nixpkgs.config.cudaSupport = false;
}