| 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 | 58 | inputs.nixpkgs.follows = "nixpkgs"; |
| 59 | 59 | }; |
| 60 | 60 | }; |
| 61 | outputs = inputs @ { | |
| 61 | outputs = { | |
| 62 | 62 | nixpkgs, |
| 63 | 63 | nixos-cosmic, |
| 64 | 64 | nix-index-database, |
| 65 | 65 | darwin, |
| 66 | 66 | ... |
| 67 | }: let | |
| 67 | } @ inputs: let | |
| 68 | 68 | overlays = [ |
| 69 | 69 | inputs.zig.overlays.default |
| 70 | 70 | inputs.rust-overlay.overlays.default |
| 71 | 71 | inputs.chinese-fonts-overlay.overlays.default |
| 72 | 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 = [ | |
| 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 | ]; | |
| 79 | user = "nmarks"; | |
| 95 | 80 | in { |
| 96 | nixosConfigurations = { | |
| 97 | nixos = lib.nixosSystem { | |
| 98 | system = "x86_64-linux"; | |
| 99 | modules = | |
| 100 | [ | |
| 101 | ./hosts/desktop/configuration.nix | |
| 102 | nixos-cosmic.nixosModules.default | |
| 103 | ] | |
| 104 | ++ shared_modules; | |
| 105 | specialArgs = inputs; | |
| 106 | }; | |
| 81 | nixosConfigurations.nixos = mkSystem "nixos" { | |
| 82 | system = "x86_64-linux"; | |
| 83 | inherit user; | |
| 84 | extraModules = [ | |
| 85 | nixos-cosmic.nixosModules.default | |
| 86 | ]; | |
| 107 | 87 | }; |
| 108 | darwinConfigurations = { | |
| 109 | "Natalies-MacBook-Air" = darwin.lib.darwinSystem { | |
| 110 | system = "aarch64-darwin"; | |
| 111 | specialArgs = inputs; | |
| 112 | modules = | |
| 113 | [ | |
| 114 | ./hosts/laptop/configuration.nix | |
| 115 | ] | |
| 116 | ++ shared_modules; | |
| 117 | }; | |
| 88 | darwinConfigurations."Natalies-MacBook-Air" = mkSystem "Natalies-MacBook-Air" { | |
| 89 | system = "aarch64-darwin"; | |
| 90 | inherit user; | |
| 91 | darwin = true; | |
| 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 | 2 | pkgs, |
| 3 | 3 | config, |
| 4 | 4 | inputs, |
| 5 | hostName, | |
| 6 | mkIfElse, | |
| 7 | darwin, | |
| 8 | 5 | ... |
| 9 | 6 | }: { |
| 10 | 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 | } |