summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.nix7
-rw-r--r--lib/default.nix19
-rw-r--r--lib/lib.nix47
-rw-r--r--modules/default.nix9
-rw-r--r--modules/flake/configurations.nix186
-rw-r--r--modules/flake/default.nix3
-rw-r--r--modules/nixos/desktop/plasma/default.nix8
-rw-r--r--modules/shared/traits/home-manager.nix3
-rw-r--r--systems/atlas/default.nix2
-rw-r--r--systems/caroline/default.nix1
-rw-r--r--systems/default.nix20
-rw-r--r--systems/glados-wsl/default.nix2
-rw-r--r--users/default.nix12
-rw-r--r--users/seth/programs/firefox/default.nix5
-rw-r--r--users/seth/programs/neovim.nix4
15 files changed, 95 insertions, 233 deletions
diff --git a/flake.nix b/flake.nix
index 7eb8b3e..59a58f7 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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 {