about summary refs log tree commit diff stats
path: root/flake
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--flake.nix69
-rw-r--r--flake/inputs/default.nix37
-rw-r--r--flake/nixosConfigurations/default.nix78
3 files changed, 121 insertions, 63 deletions
diff --git a/flake.nix b/flake.nix
index 55302f95..4509c80b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,71 +2,14 @@
 {
   description = "Nixos system config";
 
-  inputs = {
-    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
-    home-manager = {
-      url = "github:nix-community/home-manager/master";
-      inputs.nixpkgs.follows = "nixpkgs";
-    };
-
-    agenix = {
-      url = "github:ryantm/agenix";
-      inputs.nixpkgs.follows = "nixpkgs";
-    };
-    impermanence = {
-      url = "github:nix-community/impermanence";
-    };
-
-    neovim_config = {
-      url = "git+https://codeberg.org/ene/neovim-config.git";
-      flake = false;
-    };
-
-    strip_js_comments = {
-      url = "git+https://codeberg.org/ene/strip_js_comments.git";
-      inputs.nixpkgs.follows = "nixpkgs";
-    };
-    shell-library = {
-      url = "git+https://git.sils.li/ene/lib-sh.git";
-      flake = false;
-    };
-    user_js = {
-      url = "github:arkenfox/user.js";
-      flake = false;
-    };
-    snap-sync = {
-      url = "github:qubidt/snap-sync";
-      flake = false;
-    };
-  };
+  inputs = import ./flake/inputs;
 
-  outputs = {
-    self,
-    nixpkgs,
-    home-manager,
-    neovim_config,
-    strip_js_comments,
-    user_js,
-    impermanence,
-    agenix,
-    snap-sync,
-    shell-library,
-    ...
-  } @ inputs: let
-    pkgs = nixpkgs.legacyPackages.x86_64-linux;
-    sysLib = import ./lib {inherit pkgs shell-library;};
+  outputs = {self, ...} @ inputs: let
+    pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux;
+    system = "x86_64-linux";
   in {
-    nixosConfigurations.tiamat = let
-      system = "x86_64-linux";
-    in
-      nixpkgs.lib.nixosSystem {
-        inherit system;
-        specialArgs =
-          pkgs.lib.recursiveUpdate inputs
-          sysLib;
-        modules = [
-          ./hosts/tiamat/configuration.nix
-          agenix.nixosModules.default
+    nixosConfigurations =
+      import ./outputs/nixosConfigurations {inherit inputs system;};
 
     packages."${system}" = {
       install = import ./bootstrap/install {
diff --git a/flake/inputs/default.nix b/flake/inputs/default.nix
new file mode 100644
index 00000000..d3300cad
--- /dev/null
+++ b/flake/inputs/default.nix
@@ -0,0 +1,37 @@
+{_}: {
+  nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+  home-manager = {
+    url = "github:nix-community/home-manager/master";
+    inputs.nixpkgs.follows = "nixpkgs";
+  };
+
+  agenix = {
+    url = "github:ryantm/agenix";
+    inputs.nixpkgs.follows = "nixpkgs";
+  };
+  impermanence = {
+    url = "github:nix-community/impermanence";
+  };
+
+  neovim_config = {
+    url = "git+https://codeberg.org/ene/neovim-config.git";
+    flake = false;
+  };
+
+  strip_js_comments = {
+    url = "git+https://codeberg.org/ene/strip_js_comments.git";
+    inputs.nixpkgs.follows = "nixpkgs";
+  };
+  shell-library = {
+    url = "git+https://git.sils.li/ene/lib-sh.git";
+    flake = false;
+  };
+  user_js = {
+    url = "github:arkenfox/user.js";
+    flake = false;
+  };
+  snap-sync = {
+    url = "github:qubidt/snap-sync";
+    flake = false;
+  };
+}
diff --git a/flake/nixosConfigurations/default.nix b/flake/nixosConfigurations/default.nix
new file mode 100644
index 00000000..e5aa8020
--- /dev/null
+++ b/flake/nixosConfigurations/default.nix
@@ -0,0 +1,78 @@
+# vim: ts=2
+{
+  system,
+  inputs,
+  ...
+}: let
+  sysLib = import ../../lib {
+    inherit pkgs;
+    inherit (inputs) shell-library;
+  };
+  lib = inputs.nixpkgs.lib.extend (_: _: {
+    inherit (sysLib) makeShellScriptWithLibrary;
+  });
+
+  inherit (inputs.nixpkgs.lib) nixosSystem;
+
+  pkgs = import inputs.nixpkgs {
+    inherit system;
+    config = {
+      allowUnfreePredicate = pkg:
+        builtins.elem (lib.getName pkg) [
+          "steam"
+          "steam-original"
+        ];
+    };
+  };
+  homeManagerConfig = {
+    home-manager = {
+      useGlobalPkgs = true;
+      useUserPackages = true;
+      users.soispha = import ./home-manager;
+      extraSpecialArgs = {
+        inherit pkgs;
+        inherit
+          (inputs)
+          user_js
+          system
+          neovim_config
+          impermanence
+          snap-sync
+          ;
+      };
+    };
+  };
+  defaultModules = [
+    inputs.agenix.nixosModules.default
+
+    inputs.home-manager.nixosModules.home-manager
+    homeManagerConfig
+  ];
+in {
+  # full systems
+  tiamat = nixosSystem {
+    inherit system;
+    specialArgs = {inherit inputs pkgs;};
+    modules =
+      [
+        ./hosts/tiamat/configuration.nix
+      ]
+      ++ defaultModules;
+  };
+  mammun = nixosSystem {
+    inherit system;
+    specialArgs = {inherit inputs pkgs;};
+    modules =
+      [
+        ./hosts/mammun/configuration.nix
+      ]
+      ++ defaultModules;
+  };
+
+  # minimal ones
+  spawn = nixosSystem {
+    inherit system;
+    specialArgs = inputs;
+    modules = [./hosts/spawn/configuration.nix];
+  };
+}