| author | |
| committer | |
| log | dce01a98324143d9a18111b2cfe2fbd7fa83912b |
| tree | ee14e3f519f7e58eddb4b31aec67854c823dabf2 |
| parent | 8a46e01ffc85870468dd6ef79247aed237c70730 |
| signature | Commit is signed but in an unrecognized format. |
6 files changed, 95 insertions(+), 91 deletions(-)
flake.nix+25-42| ... | @@ -58,63 +58,46 @@ | ... | @@ -58,63 +58,46 @@ |
| 58 | inputs.nixpkgs.follows = "nixpkgs"; | 58 | inputs.nixpkgs.follows = "nixpkgs"; |
| 59 | }; | 59 | }; |
| 60 | }; | 60 | }; |
| 61 | outputs = inputs @ { | 61 | outputs = { |
| 62 | nixpkgs, | 62 | nixpkgs, |
| 63 | nixos-cosmic, | 63 | nixos-cosmic, |
| 64 | nix-index-database, | 64 | nix-index-database, |
| 65 | darwin, | 65 | darwin, |
| 66 | ... | 66 | ... |
| 67 | }: let | 67 | } @ inputs: let |
| 68 | overlays = [ | 68 | overlays = [ |
| 69 | inputs.zig.overlays.default | 69 | inputs.zig.overlays.default |
| 70 | inputs.rust-overlay.overlays.default | 70 | inputs.rust-overlay.overlays.default |
| 71 | inputs.chinese-fonts-overlay.overlays.default | 71 | inputs.chinese-fonts-overlay.overlays.default |
| 72 | inputs.nh.overlays.default | 72 | inputs.nh.overlays.default |
| 73 | ]; | 73 | ]; |
| 74 | inherit (nixpkgs) lib; | ||
| 75 | mkIfElse = p: yes: no: | ||
| 76 | lib.mkMerge [ | ||
| 77 | (lib.mkIf p yes) | ||
| 78 | (lib.mkIf (!p) no) | ||
| 79 | ]; | ||
| 80 | 74 | ||
| 81 | user = "nmarks"; | 75 | mkSystem = import ./lib/mkSystem.nix { |
| 76 | inherit overlays nixpkgs inputs; | ||
| 77 | }; | ||
| 82 | 78 | ||
| 83 | shared_modules = [ | 79 | user = "nmarks"; |
| 84 | # {nixpkgs.overlays = overlays;} | ||
| 85 | # {programs.nix-index-database.comma.enable = true;} | ||
| 86 | # nixindex | ||
| 87 | # homemanagerModules | ||
| 88 | { | ||
| 89 | _module.args = { | ||
| 90 | inherit user; | ||
| 91 | inherit mkIfElse; | ||
| 92 | }; | ||
| 93 | } | ||
| 94 | ]; | ||
| 95 | in { | 80 | in { |
| 96 | nixosConfigurations = { | 81 | nixosConfigurations.nixos = mkSystem "nixos" { |
| 97 | nixos = lib.nixosSystem { | 82 | system = "x86_64-linux"; |
| 98 | system = "x86_64-linux"; | 83 | inherit user; |
| 99 | modules = | 84 | extraModules = [ |
| 100 | [ | 85 | nixos-cosmic.nixosModules.default |
| 101 | ./hosts/desktop/configuration.nix | 86 | ]; |
| 102 | nixos-cosmic.nixosModules.default | ||
| 103 | ] | ||
| 104 | ++ shared_modules; | ||
| 105 | specialArgs = inputs; | ||
| 106 | }; | ||
| 107 | }; | 87 | }; |
| 108 | darwinConfigurations = { | 88 | darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { |
| 109 | "Natalies-MacBook-Air" = darwin.lib.darwinSystem { | 89 | system = "aarch64-darwin"; |
| 110 | system = "aarch64-darwin"; | 90 | inherit user; |
| 111 | specialArgs = inputs; | 91 | darwin = true; |
| 112 | modules = | ||
| 113 | [ | ||
| 114 | ./hosts/laptop/configuration.nix | ||
| 115 | ] | ||
| 116 | ++ shared_modules; | ||
| 117 | }; | ||
| 118 | }; | 92 | }; |
| 93 | # darwinConfigurations = { | ||
| 94 | # "Natalies-MacBook-Air" = darwin.lib.darwinSystem { | ||
| 95 | # system = "aarch64-darwin"; | ||
| 96 | # specialArgs = inputs; | ||
| 97 | # modules = [ | ||
| 98 | # ./hosts/laptop/configuration.nix | ||
| 99 | # ]; | ||
| 100 | # }; | ||
| 101 | # }; | ||
| 119 | }; | 102 | }; |
| 120 | } | 103 | } |
lib/mkSystem.nix created+70| ... | @@ -0,0 +1,70 @@ | ||
| 1 | # This function creates a NixOS system based on our VM setup for a | ||
| 2 | # particular architecture. | ||
| 3 | { | ||
| 4 | nixpkgs, | ||
| 5 | overlays, | ||
| 6 | inputs, | ||
| 7 | }: name: { | ||
| 8 | system, | ||
| 9 | user, | ||
| 10 | darwin ? false, | ||
| 11 | extraModules ? [], | ||
| 12 | }: let | ||
| 13 | # True if this is a WSL system. | ||
| 14 | # True if Linux, which is a heuristic for not being Darwin. | ||
| 15 | mkIfElse = p: yes: no: | ||
| 16 | nixpkgs.lib.mkMerge [ | ||
| 17 | (nixpkgs.lib.mkIf p yes) | ||
| 18 | (nixpkgs.lib.mkIf (!p) no) | ||
| 19 | ]; | ||
| 20 | |||
| 21 | nixindex = mkIfElse darwin inputs.nix-index-database.darwinModules.nix-index inputs.nix-index-database.nixosModules.nix-index; | ||
| 22 | |||
| 23 | host = mkIfElse darwin "laptop" "desktop"; | ||
| 24 | |||
| 25 | # The config files for this system. | ||
| 26 | |||
| 27 | hostConfig = ../hosts/${host}/configuration.nix; | ||
| 28 | |||
| 29 | # NixOS vs nix-darwin functions | ||
| 30 | systemFunc = mkIfElse darwin inputs.darwin.lib.darwinSystem nixpkgs.lib.nixosSystem; | ||
| 31 | home-manager = | ||
| 32 | if darwin | ||
| 33 | then inputs.home-manager.darwinModules | ||
| 34 | else inputs.home-manager.nixosModules; | ||
| 35 | in | ||
| 36 | systemFunc rec { | ||
| 37 | inherit system; | ||
| 38 | |||
| 39 | modules = | ||
| 40 | [ | ||
| 41 | # Apply our overlays. Overlays are keyed by system type so we have | ||
| 42 | # to go through and apply our system type. We do this first so | ||
| 43 | # the overlays are available globally. | ||
| 44 | {nixpkgs.overlays = overlays;} | ||
| 45 | {inputs.programs.nix-index-database.comma.enable = true;} | ||
| 46 | hostConfig | ||
| 47 | nixindex | ||
| 48 | home-manager.home-manager | ||
| 49 | { | ||
| 50 | home-manager = { | ||
| 51 | useGlobalPkgs = true; | ||
| 52 | useUserPackages = true; | ||
| 53 | backupFileExtension = "hm-backup"; | ||
| 54 | extraSpecialArgs = {inherit inputs;}; | ||
| 55 | }; | ||
| 56 | } | ||
| 57 | |||
| 58 | # We expose some extra arguments so that our modules can parameterize | ||
| 59 | # better based on these values. | ||
| 60 | { | ||
| 61 | config._module.args = { | ||
| 62 | currentSystem = system; | ||
| 63 | currentSystemName = name; | ||
| 64 | currentSystemUser = user; | ||
| 65 | inherit inputs; | ||
| 66 | }; | ||
| 67 | } | ||
| 68 | ] | ||
| 69 | ++ extraModules; | ||
| 70 | } | ||
modules/shared/extras.nix-5| ... | @@ -2,13 +2,8 @@ | ... | @@ -2,13 +2,8 @@ |
| 2 | pkgs, | 2 | pkgs, |
| 3 | config, | 3 | config, |
| 4 | inputs, | 4 | inputs, |
| 5 | hostName, | ||
| 6 | mkIfElse, | ||
| 7 | darwin, | ||
| 8 | ... | 5 | ... |
| 9 | }: { | 6 | }: { |
| 10 | networking = { | 7 | networking = { |
| 11 | inherit hostName; | ||
| 12 | networkmanager = !darwin; | ||
| 13 | }; | 8 | }; |
| 14 | } | 9 | } |
modules/shared/home-manager.nix deleted-8| ... | @@ -1,8 +0,0 @@ | ||
| 1 | {inputs, ...}: { | ||
| 2 | home-manager = { | ||
| 3 | useGlobalPkgs = true; | ||
| 4 | useUserPackages = true; | ||
| 5 | backupFileExtension = "hm-backup"; | ||
| 6 | extraSpecialArgs = {inherit inputs;}; | ||
| 7 | }; | ||
| 8 | } | ||
modules/shared/modules.nix deleted-13| ... | @@ -1,13 +0,0 @@ | ||
| 1 | { | ||
| 2 | pkgs, | ||
| 3 | inputs, | ||
| 4 | config, | ||
| 5 | ... | ||
| 6 | }: { | ||
| 7 | imports = [ | ||
| 8 | # {pkgs.overlays = overlays;} | ||
| 9 | {programs.nix-index-database.comma.enable = true;} | ||
| 10 | config.nixindex | ||
| 11 | config.homemanagerModules | ||
| 12 | ]; | ||
| 13 | } | ||
modules/shared/vars.nix deleted-23| ... | @@ -1,23 +0,0 @@ | ||
| 1 | { | ||
| 2 | inputs, | ||
| 3 | pkgs, | ||
| 4 | config, | ||
| 5 | lib, | ||
| 6 | mkIfElse, | ||
| 7 | ... | ||
| 8 | }: let | ||
| 9 | darwin = pkgs.stdenv.isDarwin; | ||
| 10 | homemanagerModules = mkIfElse darwin inputs.home-manager.darwinModules inputs.home-manager.nixosModules; | ||
| 11 | nixindex = mkIfElse darwin inputs.nix-index-database.darwinModules.nix-index inputs.nix-index-database.nixosModules.nix-index; | ||
| 12 | in { | ||
| 13 | config.var = { | ||
| 14 | inherit darwin homemanagerModules nixindex; | ||
| 15 | }; | ||
| 16 | |||
| 17 | options = { | ||
| 18 | var = lib.mkOption { | ||
| 19 | type = lib.types.attrs; | ||
| 20 | default = {}; | ||
| 21 | }; | ||
| 22 | }; | ||
| 23 | } | ||