authorgravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-04-18 16:46:54-07:00
committergravatar for nmarks413@gmail.comNatalie Marks <nmarks413@gmail.com> 2025-04-18 16:46:54-07:00
logdce01a98324143d9a18111b2cfe2fbd7fa83912b
treeee14e3f519f7e58eddb4b31aec67854c823dabf2
parent8a46e01ffc85870468dd6ef79247aed237c70730
signature Commit is signed but in an unrecognized format.

use mkSystem


6 files changed, 95 insertions(+), 91 deletions(-)

flake.nix+25-42
......@@ -58,63 +58,46 @@
5858 inputs.nixpkgs.follows = "nixpkgs";
5959 };
6060 };
61 outputs = inputs @ {
61 outputs = {
6262 nixpkgs,
6363 nixos-cosmic,
6464 nix-index-database,
6565 darwin,
6666 ...
67 }: let
67 } @ inputs: let
6868 overlays = [
6969 inputs.zig.overlays.default
7070 inputs.rust-overlay.overlays.default
7171 inputs.chinese-fonts-overlay.overlays.default
7272 inputs.nh.overlays.default
7373 ];
74 inherit (nixpkgs) lib;
75 mkIfElse = p: yes: no:
76 lib.mkMerge [
77 (lib.mkIf p yes)
78 (lib.mkIf (!p) no)
79 ];
8074
81 user = "nmarks";
75 mkSystem = import ./lib/mkSystem.nix {
76 inherit overlays nixpkgs inputs;
77 };
8278
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";
9580 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 ];
10787 };
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;
11892 };
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 # };
119102 };
120103}
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;
35in
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 @@
22 pkgs,
33 config,
44 inputs,
5 hostName,
6 mkIfElse,
7 darwin,
85 ...
96}: {
107 networking = {
11 inherit hostName;
12 networkmanager = !darwin;
138 };
149}
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;
12in {
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}