Personal Nix setup
at main 2.7 kB view raw
1{ nixpkgs, darwin, home-manager, ... } @ inputs: 2 3{ 4 mkSystem = { system, hostname, user ? "phil", modules ? [], overlays ? [] }: let 5 inherit (lib.systems.elaborate { inherit system; }) isDarwin; 6 7 homeDir = if isDarwin then "/Users/${user}" else "/home/${user}"; 8 rootDir = if isDarwin then "/var/root" else "/root"; 9 10 lib = (import nixpkgs { inherit overlays system; }).lib; 11 12 age = { 13 identityPaths = [ "/usr/local/persistent/agenix" "/var/lib/persistent/agenix" ]; 14 }; 15 16 systemModules = modules ++ [ 17 ../machines/common.nix 18 ../machines/${hostname}/configuration.nix 19 ../modules/default.nix 20 ({ ... }: { 21 inherit age; 22 23 nixpkgs = { 24 inherit overlays; 25 config.allowUnfree = true; 26 hostPlatform = system; 27 }; 28 29 networking.hostName = hostname; 30 nix.extraOptions = "extra-experimental-features = nix-command flakes"; 31 }) 32 ]; 33 34 home = { ... }: { 35 inherit age; 36 37 manual.manpages.enable = false; 38 xdg.enable = true; 39 home = { 40 stateVersion = "25.05"; 41 enableNixpkgsReleaseCheck = false; 42 }; 43 44 imports = [ 45 inputs.agenix.homeManagerModules.default 46 inputs.android-sdk.hmModules.android 47 ../home/default.nix 48 ../machines/${hostname}/home.nix 49 ]; 50 }; 51 52 specialArgs = { 53 inherit hostname user inputs; 54 helpers = (import ./helpers.nix { 55 inherit lib system; 56 }); 57 }; 58 59 in if isDarwin then ( 60 darwin.lib.darwinSystem { 61 inherit system specialArgs lib; 62 modules = systemModules ++ [ 63 inputs.agenix.darwinModules.default 64 home-manager.darwinModules.home-manager { 65 home-manager.extraSpecialArgs = specialArgs; 66 home-manager.useGlobalPkgs = true; 67 home-manager.useUserPackages = true; 68 home-manager.users."${user}" = home; 69 } 70 ({ pkgs, ... }: { 71 environment.shells = [pkgs.zsh]; 72 users.users."${user}".home = homeDir; 73 }) 74 ]; 75 } 76 ) else ( 77 nixpkgs.lib.nixosSystem { 78 inherit system specialArgs lib; 79 modules = systemModules ++ [ 80 inputs.tangled.nixosModules.knot 81 inputs.yeetmouse.nixosModules.default 82 inputs.agenix.nixosModules.default 83 home-manager.nixosModules.home-manager { 84 home-manager.extraSpecialArgs = specialArgs; 85 home-manager.useGlobalPkgs = true; 86 home-manager.useUserPackages = true; 87 home-manager.users."${user}" = home; 88 } 89 ({ pkgs, ... }: { 90 users.defaultUserShell = pkgs.zsh; 91 users.mutableUsers = false; 92 users.users."${user}".home = homeDir; 93 }) 94 ]; 95 } 96 ); 97}