summaryrefslogtreecommitdiff
path: root/users/seth/default.nix
blob: 2afbbcec65065b6b45d3ca54b36d8c0511e6f900 (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
{
  config,
  lib,
  pkgs,
  ...
}:
let
  cfg = config.seth;
in
{
  options.seth = {
    enable = lib.mkEnableOption "Seth's home configuration";

    shellAliases.enable = lib.mkEnableOption "shell aliases" // {
      default = config.seth.enable;
      defaultText = lib.literalExpression "config.seth.enable";
    };

    shellVariables.enable = lib.mkEnableOption "shell variables" // {
      default = config.seth.enable;
      defaultText = lib.literalExpression "config.seth.enable";
    };

    standalone.enable = lib.mkEnableOption "standalone configuration mode";
  };

  imports = [
    ./desktop
    ./programs
    ./services
    ./tweaks
  ];

  config = lib.mkIf cfg.enable (
    lib.mkMerge [
      { home.stateVersion = "23.11"; }

      (lib.mkIf cfg.shellAliases.enable {
        home.shellAliases = {
          diff = "diff --color=auto";
          g = "git";
          gs = "g status";
        };
      })

      (lib.mkIf cfg.shellVariables.enable {
        home.sessionVariables = {
          EDITOR = "nvim";
          VISUAL = config.home.sessionVariables.EDITOR;
          CARGO_HOME = "${config.xdg.dataHome}/cargo";
          LESSHISTFILE = "${config.xdg.stateHome}/less/history";
        };
      })

      (lib.mkIf cfg.standalone.enable {
        # This won't be set in standalone configurations
        _module.args.osConfig = { };

        # Make sure we can switch & update
        programs.home-manager.enable = true;

        home = {
          username = "seth";
          homeDirectory = (if pkgs.stdenv.isDarwin then "/Users" else "/home") + "/${config.home.username}";
        };
      })
    ]
  );
}