summaryrefslogtreecommitdiff
path: root/accounts/gkleen@skadhi/default.nix
blob: 4c0c4028b3ae08eb15deae31b591f026ad348237 (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
{ flake, flakeInputs, userName, config, lib, ... }:
let
  user = config.users.users.${userName};
in {
  imports = with flake.nixosModules.userProfiles.${userName}; [
    zsh
  ];

  config = {
    users.users.gkleen.group = "gkleen";
    users.groups.gkleen = {};
    systemd.tmpfiles.settings.home-directories."/persistent/${user.home}" = lib.mkForce {
      v = {
        mode = user.homeMode;
        user = user.name;
        inherit (user) group;
      };
    };

    home-manager.users.${userName} = let sysConfig = config; in { config, ... }: {
      imports = [
        flakeInputs.nix-index-database.homeModules.nix-index
      ];

      home.stateVersion = "26.05";

      home.persistence."/persistent" = {
        directories = [
          "Downloads" "documents" "screenshots" "media"
        ];
      };

      programs.zsh.dirHashes = let
        flakeHashes = lib.mapAttrs' (n: v: lib.nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs;
        inputNames = {
          self = "nixos";
        };
      in flakeHashes // {
          docs = "$HOME/documents";
          dl = "$HOME/Downloads";
          scrot = "$HOME/screenshots";
          media = "$HOME/media";
        };
      programs.starship.settings = {
        directory.substitutions = lib.mapAttrs' (name: value: let
          value' = builtins.unsafeDiscardStringContext value;
          value'' = if lib.hasPrefix "$HOME/" value' then "~" + lib.removePrefix "$HOME" value' else value';
        in lib.nameValuePair value'' "~${name}"
        ) config.programs.zsh.dirHashes;
      };

      programs.nix-index.enable = true;
    };
  };
}