diff options
| -rw-r--r-- | flake.nix | 7 | ||||
| -rw-r--r-- | lib/default.nix | 19 | ||||
| -rw-r--r-- | lib/lib.nix | 47 | ||||
| -rw-r--r-- | modules/default.nix | 9 | ||||
| -rw-r--r-- | modules/flake/configurations.nix | 186 | ||||
| -rw-r--r-- | modules/flake/default.nix | 3 | ||||
| -rw-r--r-- | modules/nixos/desktop/plasma/default.nix | 8 | ||||
| -rw-r--r-- | modules/shared/traits/home-manager.nix | 3 | ||||
| -rw-r--r-- | systems/atlas/default.nix | 2 | ||||
| -rw-r--r-- | systems/caroline/default.nix | 1 | ||||
| -rw-r--r-- | systems/default.nix | 20 | ||||
| -rw-r--r-- | systems/glados-wsl/default.nix | 2 | ||||
| -rw-r--r-- | users/default.nix | 12 | ||||
| -rw-r--r-- | users/seth/programs/firefox/default.nix | 5 | ||||
| -rw-r--r-- | users/seth/programs/neovim.nix | 4 |
15 files changed, 95 insertions, 233 deletions
@@ -6,9 +6,7 @@ extra-trusted-public-keys = ["getchoo.cachix.org-1:ftdbAUJVNaFonM0obRGgR5+nUmdLMM+AOvDOSx0z5tE="]; }; - outputs = inputs: let - flakeModules = import ./modules/flake; - in + outputs = inputs: inputs.flake-parts.lib.mkFlake {inherit inputs;} { systems = [ "x86_64-linux" @@ -29,9 +27,6 @@ # external, not so nix-y things ./ext - - # dogfood some modules - flakeModules.configurations ]; }; diff --git a/lib/default.nix b/lib/default.nix index 92ae0f0..c2936aa 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,14 +1,7 @@ -{lib, ...}: let - fnsFrom = files: - builtins.listToAttrs ( - map (file: { - name = lib.removeSuffix ".nix" (baseNameOf file); - value = import file lib; - }) - files - ); -in { - flake.lib = fnsFrom [ - ./nginx.nix - ]; +{lib, ...} @ args: { + flake.lib = + (lib.extend (final: prev: { + my = import ./lib.nix args; + })) + .my; } diff --git a/lib/lib.nix b/lib/lib.nix new file mode 100644 index 0000000..5b7ee7d --- /dev/null +++ b/lib/lib.nix @@ -0,0 +1,47 @@ +{ + lib, + self, + inputs, + ... +}: let + wrapBuilderWith = apply: builder: args: builder (apply args); + + wrapBuilder = type: + wrapBuilderWith ({ + modules ? [], + specialArgs ? {}, + ... + } @ args: + args + // { + modules = + modules + ++ lib.attrValues (self."${type}Modules" or {}); + + specialArgs = specialArgs // {inherit inputs;}; + }); + + wrapNixOS = wrapBuilder "nixos"; + wrapDarwin = wrapBuilder "darwin"; + + wrapUser = wrapBuilderWith ({ + modules ? [], + extraSpecialArgs ? {}, + ... + } @ args: + args + // { + modules = + modules + ++ lib.attrValues (self.homeManagerModules or {}); + + extraSpecialArgs = extraSpecialArgs // {inherit inputs;}; + }); +in { + nixosSystem = wrapNixOS inputs.nixpkgs.lib.nixosSystem; + nixosSystemStable = wrapNixOS inputs.nixpkgs-stable.lib.nixosSystem; + darwinSystem = wrapDarwin inputs.nix-darwin.lib.darwinSystem; + homeManagerConfiguration = wrapUser inputs.home-manager.lib.homeManagerConfiguration; + + nginx = import ./nginx.nix lib; +} diff --git a/modules/default.nix b/modules/default.nix index ef449b6..ecfaf25 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,7 +1,10 @@ -{ +{moduleLocation, ...}: { flake = { - darwinModules = import ./darwin; - flakeModules = import ./flake; + darwinModules = builtins.mapAttrs (k: v: { + _file = "${toString moduleLocation}#darwinModules.${k}"; + imports = [v]; + }) (import ./darwin); + nixosModules = import ./nixos; }; } diff --git a/modules/flake/configurations.nix b/modules/flake/configurations.nix deleted file mode 100644 index 5b2d934..0000000 --- a/modules/flake/configurations.nix +++ /dev/null @@ -1,186 +0,0 @@ -{ - config, - lib, - flake-parts-lib, - inputs, - self, - moduleLocation, - withSystem, - ... -}: let - inherit (flake-parts-lib) mkSubmoduleOptions; - - inherit - (builtins) - attrValues - mapAttrs - removeAttrs - ; - - inherit - (lib) - const - literalExpression - mkOption - recursiveUpdate - types - ; - - kernelFor = { - nixos = "linux"; - darwin = "darwin"; - }; - - applySpecialArgsFor = system: - recursiveUpdate { - inherit inputs; - inputs' = withSystem system ({inputs', ...}: inputs'); - }; - - toSystem = type: { - modules ? [], - system, - specialArgs ? {}, - ... - } @ args: - args.builder ( - removeAttrs args ["builder"] - // { - modules = modules ++ attrValues (self."${type}Modules" or {}); - specialArgs = applySpecialArgsFor system specialArgs; - } - ); - - toUser = { - extraSpecialArgs ? {}, - modules ? [], - pkgs, - } @ args: - inputs.home-manager.lib.homeManagerConfiguration ( - args - // { - modules = modules ++ attrValues (self.homeManagerModules or {}); - extraSpecialArgs = applySpecialArgsFor pkgs.stdenv.hostPlatform.system extraSpecialArgs; - } - ); - - mapSystems = type: mapAttrs (const (toSystem type)); - mapUsers = mapAttrs (const toUser); - mapNixOS = mapSystems "nixos"; - mapDarwin = mapSystems "darwin"; - - systemsSubmodule = type: { - freeformType = types.attrsOf types.anything; - - options = { - builder = let - error = throw "System configuration of type `${type}` is not supported!"; - in - mkOption { - type = types.functionTo (types.lazyAttrsOf types.raw); - default = - { - nixos = inputs.nixpkgs.lib.nixosSystem; - darwin = inputs.nix-darwin.lib.darwinSystem; - } - .${type} - or error; - example = literalExpression ( - { - nixos = "inputs.nixpkgs.lib.nixosSystem"; - darwin = "inputs.nix-darwin.lib.darwinSystem"; - } - .${type} - or error - ); - description = '' - Function to build this ${type}Configuration with - ''; - }; - - system = mkOption { - type = types.str; - default = "x86_64-" + kernelFor.${type}; - example = literalExpression ("aarch64-" + kernelFor.${type}); - description = '' - System to build this ${type}Configuration for - ''; - }; - }; - }; - - usersSubmodule = { - freeformType = types.attrsOf types.anything; - - options = { - pkgs = mkOption { - type = types.lazyAttrsOf types.raw; - default = inputs.nixpkgs.legacyPackages.x86_64-linux; - defaultText = "inputs.nixpkgs.legacyPackages.x86_64-linux"; - example = literalExpression "inputs.nixpkgs.legacyPackages.aarch64-linux"; - description = '' - Instance of nixpkgs to use in this homeConfiguration - ''; - }; - }; - }; - - mkSystemOptions = type: - mkOption { - type = types.attrsOf (types.submodule (systemsSubmodule type)); - default = {}; - example = literalExpression '' - { - myComputer = { - system = "aarch64${kernelFor type}"; - }; - } - ''; - description = '' - Attribute set of `lib.${type}System` options. The names of - each attribute will be used to import files in the `systems/` - directory - ''; - }; -in { - options = { - flake = mkSubmoduleOptions { - darwinModules = mkOption { - type = types.lazyAttrsOf types.unspecified; - default = {}; - apply = mapAttrs (name: value: { - _file = "${toString moduleLocation}#darwinModules.${name}"; - imports = [value]; - }); - }; - }; - - configurations = { - nixos = mkSystemOptions "nixos"; - darwin = mkSystemOptions "darwin"; - - home = mkOption { - type = types.attrsOf (types.submodule usersSubmodule); - default = {}; - example = literalExpression '' - { - john = { - pkgs = inputs.nixpkgs.legacyPackages.aarch64-linux; - }; - } - ''; - description = '' - Attribute set of `lib.homeManagerConfiguration` arguments. The - name of each attribute will be used to import files in the `users/` - directory. - ''; - }; - }; - }; - - config.flake = { - nixosConfigurations = mapNixOS config.configurations.nixos; - darwinConfigurations = mapDarwin config.configurations.darwin; - homeConfigurations = mapUsers config.configurations.home; - }; -} diff --git a/modules/flake/default.nix b/modules/flake/default.nix deleted file mode 100644 index 8d671c2..0000000 --- a/modules/flake/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - configurations = import ./configurations.nix; -} diff --git a/modules/nixos/desktop/plasma/default.nix b/modules/nixos/desktop/plasma/default.nix index d2e2aee..c8e2683 100644 --- a/modules/nixos/desktop/plasma/default.nix +++ b/modules/nixos/desktop/plasma/default.nix @@ -2,7 +2,7 @@ config, lib, pkgs, - inputs', + inputs, ... }: let cfg = config.desktop.plasma; @@ -23,9 +23,9 @@ in { NIXOS_OZONE_WL = "1"; }; - systemPackages = with pkgs; [ - haruna - inputs'.krunner-nix.packages.default + systemPackages = [ + pkgs.haruna + inputs.krunner-nix.packages.${pkgs.system}.default ]; }; diff --git a/modules/shared/traits/home-manager.nix b/modules/shared/traits/home-manager.nix index 732f4f9..e49c4a5 100644 --- a/modules/shared/traits/home-manager.nix +++ b/modules/shared/traits/home-manager.nix @@ -2,7 +2,6 @@ config, lib, inputs, - inputs', ... }: let cfg = config.traits.home-manager; @@ -15,7 +14,7 @@ in { home-manager = { useGlobalPkgs = true; useUserPackages = true; - extraSpecialArgs = {inherit inputs inputs';}; + extraSpecialArgs = {inherit inputs;}; }; }; } diff --git a/systems/atlas/default.nix b/systems/atlas/default.nix index 7145297..c0e8272 100644 --- a/systems/atlas/default.nix +++ b/systems/atlas/default.nix @@ -32,5 +32,7 @@ hostName = "atlas"; }; + nixpkgs.hostPlatform = "aarch64-linux"; + system.stateVersion = "23.05"; } diff --git a/systems/caroline/default.nix b/systems/caroline/default.nix index 932e85c..9a6efae 100644 --- a/systems/caroline/default.nix +++ b/systems/caroline/default.nix @@ -14,6 +14,7 @@ }; nix.settings.trusted-users = ["seth"]; + nixpkgs.hostPlatform = "x86_64-darwin"; services.tailscale.enable = true; diff --git a/systems/default.nix b/systems/default.nix index 33736e6..881310b 100644 --- a/systems/default.nix +++ b/systems/default.nix @@ -3,28 +3,28 @@ self, ... }: { - configurations = { - darwin = { - caroline = { + flake = { + darwinConfigurations = let + inherit (self.lib) darwinSystem; + in { + caroline = darwinSystem { modules = [./caroline]; }; }; - nixos = let - stable = inputs.nixpkgs-stable.lib.nixosSystem; + nixosConfigurations = let + inherit (self.lib) nixosSystem nixosSystemStable; in { - glados = { + glados = nixosSystem { modules = [./glados]; }; - glados-wsl = { + glados-wsl = nixosSystem { modules = [./glados-wsl]; }; - atlas = { - builder = stable; + atlas = nixosSystemStable { modules = [./atlas]; - system = "aarch64-linux"; }; }; }; diff --git a/systems/glados-wsl/default.nix b/systems/glados-wsl/default.nix index 88b5184..cd53a82 100644 --- a/systems/glados-wsl/default.nix +++ b/systems/glados-wsl/default.nix @@ -32,6 +32,8 @@ networking.hostName = "glados-wsl"; + nixpkgs.hostPlatform = "x86_64-linux"; + system.stateVersion = "23.11"; traits.tailscale.enable = true; diff --git a/users/default.nix b/users/default.nix index 7618f9c..38d391f 100644 --- a/users/default.nix +++ b/users/default.nix @@ -1,6 +1,14 @@ { - configurations.home = { - seth = { + self, + withSystem, + ... +}: { + flake.homeConfigurations = let + inherit (self.lib) homeManagerConfiguration; + pkgsFor = system: withSystem system ({pkgs, ...}: pkgs); + in { + seth = homeManagerConfiguration { + pkgs = pkgsFor "x86_64-linux"; modules = [./seth/home.nix]; }; }; diff --git a/users/seth/programs/firefox/default.nix b/users/seth/programs/firefox/default.nix index ac67a31..d497f2a 100644 --- a/users/seth/programs/firefox/default.nix +++ b/users/seth/programs/firefox/default.nix @@ -1,7 +1,8 @@ { config, lib, - inputs', + pkgs, + inputs, ... }: let cfg = config.seth.programs.firefox; @@ -26,7 +27,7 @@ in { programs.firefox = { enable = true; profiles.arkenfox = { - extensions = with inputs'.firefox-addons.packages; [ + extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ bitwarden floccus ublock-origin diff --git a/users/seth/programs/neovim.nix b/users/seth/programs/neovim.nix index c06d513..815b150 100644 --- a/users/seth/programs/neovim.nix +++ b/users/seth/programs/neovim.nix @@ -2,7 +2,7 @@ config, lib, pkgs, - inputs', + inputs, ... }: let cfg = config.seth.programs.neovim; @@ -14,7 +14,7 @@ in { config = lib.mkIf cfg.enable { home.packages = [ (let - getchvim = inputs'.getchvim.packages.default; + getchvim = inputs.getchvim.packages.${pkgs.system}.default; in # remove desktop file pkgs.symlinkJoin { |
