[READ-ONLY] Mirror of https://github.com/maybeanerd/nixos. the nixos config for my PC, laptops, and whatever else I can find
1

Configure Feed

Select the types of activity you want to include in your feed.

refactor: platform specifics (#100)

authored by

Sebastian Di Luzio and committed by
GitHub
(Apr 1, 2026, 2:22 PM UTC) 0aa6d354 05e18d5d

+50 -71
-3
README.md
··· 5 5 ## General Config Overview 6 6 The unified flake provides a `mkSystem` function. The hostname is automatically derived from the attribute name. It accepts: 7 7 - `username`: The primary user's username 8 - - `platform`: Either `"darwin"` or `"nixos"` 9 8 - `isWorkDevice`: If `true`, work-only apps and no personal/sops (default: `false`, i.e. personal device) 10 9 11 10 ## General Commands ··· 22 21 darwinConfigurations = nixpkgs.lib.mapAttrs mkSystem { 23 22 "new-hostname" = { 24 23 username = "your-username"; 25 - platform = "darwin"; 26 24 # isWorkDevice = true; # only for work machines (no personal apps/sops) 27 25 }; 28 26 }; ··· 31 29 nixosConfigurations = nixpkgs.lib.mapAttrs mkSystem { 32 30 "new-hostname" = { 33 31 username = "your-username"; 34 - platform = "nixos"; 35 32 }; 36 33 }; 37 34 ```
+34 -44
flake.nix
··· 38 38 hostname: 39 39 { 40 40 username, 41 - platform, 41 + system, 42 42 isWorkDevice, 43 43 gitConfig ? { }, 44 44 }: 45 45 let 46 - # Determine system architecture 47 - system = if platform == "darwin" then "aarch64-darwin" else "x86_64-linux"; 46 + pkgs = nixpkgs.legacyPackages.${system}; 48 47 49 48 # Common configuration shared across all systems 50 49 commonConfig = ··· 68 67 { pkgs, config, ... }: 69 68 { 70 69 users.users.${username} = 71 - if platform == "darwin" then 70 + if pkgs.stdenv.isDarwin then 72 71 { 73 72 name = username; 74 73 home = "/Users/${username}"; ··· 90 89 }; 91 90 }; 92 91 93 - # Home-manager configuration 94 - homeManagerConfig = import ./home-manager { 95 - inherit 96 - username 97 - platform 98 - isWorkDevice 99 - gitConfig 100 - ; 101 - }; 102 - 103 92 in 104 - if platform == "darwin" then 93 + if pkgs.stdenv.isDarwin then 105 94 nix-darwin.lib.darwinSystem { 106 95 inherit system; 107 96 specialArgs = { 108 97 inherit 109 98 username 110 - platform 111 99 isWorkDevice 112 100 gitConfig 113 101 ; ··· 115 103 modules = [ 116 104 commonConfig 117 105 userConfig 118 - homeManagerConfig 106 + ./home-manager 119 107 home-manager.darwinModules.home-manager 120 108 sops-nix.darwinModules.sops 121 109 ./sops ··· 138 126 xmage 139 127 system 140 128 username 141 - platform 142 129 isWorkDevice 143 130 gitConfig 144 131 hostname ··· 147 134 modules = [ 148 135 commonConfig 149 136 userConfig 150 - homeManagerConfig 137 + ./home-manager 151 138 home-manager.nixosModules.home-manager 152 139 sops-nix.nixosModules.sops 153 140 ./sops ··· 160 147 }; 161 148 in 162 149 { 163 - darwinConfigurations = nixpkgs.lib.mapAttrs mkSystem { 164 - # Personal MacBook Pro 165 - "Big-M1ac" = { 166 - username = "basti"; 167 - platform = "darwin"; 168 - isWorkDevice = false; 169 - }; 150 + darwinConfigurations = 151 + nixpkgs.lib.mapAttrs 152 + (hostname: cfg: mkSystem hostname (cfg // { system = cfg.system or "aarch64-darwin"; })) 153 + { 154 + # Personal MacBook Pro 155 + "Big-M1ac" = { 156 + username = "basti"; 157 + isWorkDevice = false; 158 + }; 170 159 171 - # Work MacBook Pro @liqid 172 - "MacBook-Pro-MBP-L1682" = { 173 - username = "sebastiandiluzio"; 174 - platform = "darwin"; 175 - isWorkDevice = true; 176 - gitConfig = { 177 - email = "sebastian.diluzio@liqid.de"; 178 - sign = false; 160 + # Work MacBook Pro @liqid 161 + "MacBook-Pro-MBP-L1682" = { 162 + username = "sebastiandiluzio"; 163 + isWorkDevice = true; 164 + gitConfig = { 165 + email = "sebastian.diluzio@liqid.de"; 166 + sign = false; 167 + }; 168 + }; 179 169 }; 180 - }; 181 - }; 182 170 183 - nixosConfigurations = nixpkgs.lib.mapAttrs mkSystem { 184 - # Personal gaming PC 185 - "nixos" = { 186 - username = "basti"; 187 - platform = "nixos"; 188 - isWorkDevice = false; 189 - }; 190 - }; 171 + nixosConfigurations = 172 + nixpkgs.lib.mapAttrs 173 + (hostname: cfg: mkSystem hostname (cfg // { system = cfg.system or "x86_64-linux"; })) 174 + { 175 + # Personal gaming PC 176 + "nixos" = { 177 + username = "basti"; 178 + isWorkDevice = false; 179 + }; 180 + }; 191 181 }; 192 182 }
+1 -7
home-manager/default.nix
··· 1 1 { 2 2 username, 3 - platform, 4 3 isWorkDevice, 5 4 gitConfig, 6 - }: 7 - 8 - { 9 - config, 10 5 pkgs, 11 - lib, 12 6 ... 13 7 }: 14 8 ··· 33 27 home-manager.extraSpecialArgs = { 34 28 inherit 35 29 username 36 - platform 37 30 isWorkDevice 31 + pkgs 38 32 gitConfig 39 33 ; 40 34 };
+5 -6
home-manager/development/shared.nix
··· 2 2 { 3 3 pkgs, 4 4 lib, 5 - platform, 6 5 username, 7 6 gitConfig, 8 7 ... ··· 20 19 21 20 nixosPackages = 22 21 with pkgs; 23 - lib.optionals (platform == "nixos") [ 22 + lib.optionals (stdenv.isLinux) [ 24 23 github-desktop # Needs to be installed using brew on darwin 25 24 kubernetes 26 25 ]; 27 26 28 27 darwinPackages = 29 28 with pkgs; 30 - lib.optionals (platform == "darwin") [ 29 + lib.optionals (stdenv.isDarwin) [ 31 30 stats # macOS only package https://github.com/exelban/stats 32 31 mise # dynamic executables wont work on nixos 33 32 orbstack ··· 94 93 "git" 95 94 "git-auto-fetch" 96 95 ] 97 - ++ lib.optionals (platform == "darwin") [ 96 + ++ lib.optionals (pkgs.stdenv.isDarwin) [ 98 97 "mise" 99 98 "brew" 100 99 ]; ··· 109 108 ff = "fastfetch"; 110 109 neofetch = "fastfetch"; 111 110 } 112 - // lib.optionalAttrs (platform == "nixos") { 111 + // lib.optionalAttrs (pkgs.stdenv.isLinux) { 113 112 rb = "sudo nixos-rebuild switch"; 114 113 rbb = "sudo nixos-rebuild build"; 115 114 } 116 - // lib.optionalAttrs (platform == "darwin") { 115 + // lib.optionalAttrs (pkgs.stdenv.isDarwin) { 117 116 rb = "sudo darwin-rebuild switch"; 118 117 rbb = "sudo darwin-rebuild build"; 119 118 };
+2 -2
home-manager/integrations/darwin/default.nix
··· 1 1 # Darwin-only Home Manager integrations. 2 - { lib, platform, ... }: 2 + { lib, pkgs, ... }: 3 3 { 4 - imports = lib.optionals (platform == "darwin") [ 4 + imports = lib.optionals (pkgs.stdenv.isDarwin) [ 5 5 ./nas-mount.nix 6 6 ]; 7 7 }
+2 -2
home-manager/integrations/nixos/default.nix
··· 1 1 # NixOS-only Home Manager integrations (user-level, after login). 2 - { lib, platform, ... }: 2 + { lib, pkgs, ... }: 3 3 { 4 - imports = lib.optionals (platform == "nixos") [ 4 + imports = lib.optionals (pkgs.stdenv.isLinux) [ 5 5 ./immich-screenshot-upload.nix 6 6 ]; 7 7 }
+2 -3
home-manager/personal/default.nix
··· 3 3 pkgs, 4 4 lib, 5 5 osConfig, 6 - platform, 7 6 isWorkDevice, 8 7 ... 9 8 }: ··· 13 12 14 13 nixosPersonal = 15 14 with pkgs; 16 - lib.optionals (platform == "nixos") [ 15 + lib.optionals (stdenv.isLinux) [ 17 16 immich-cli 18 17 bitwarden-desktop 19 18 discord ··· 30 29 31 30 darwinPersonal = 32 31 with pkgs; 33 - lib.optionals (platform == "darwin") [ 32 + lib.optionals (stdenv.isDarwin) [ 34 33 # TODO add supported apps here 35 34 ]; 36 35
+2 -2
sops/darwin.nix
··· 1 - { lib, platform, ... }: 2 - lib.mkIf (platform == "darwin") { 1 + { lib, pkgs, ... }: 2 + lib.mkIf (pkgs.stdenv.isDarwin) { 3 3 sops.defaultSopsFile = ./secrets/darwin.yaml; 4 4 }
+2 -2
sops/nixos.nix
··· 2 2 config, 3 3 username, 4 4 lib, 5 - platform, 5 + pkgs, 6 6 ... 7 7 }: 8 8 let 9 9 user = config.users.users.${username}; 10 10 in 11 - lib.mkIf (platform == "nixos") { 11 + lib.mkIf (pkgs.stdenv.isLinux) { 12 12 sops.defaultSopsFile = ./secrets/nixos.yaml; 13 13 14 14 # In theory, allow yubikey support for sops decrypt during build, but it doesn't work