summaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
authorstuebinm2024-04-28 21:30:47 +0200
committerstuebinm2024-04-29 00:02:55 +0200
commit9e7a775e2578e126dddb1c6f7514874265e3d08e (patch)
tree68a72299d6c5ca706ee357fdbc73d8dd4ceef010 /default.nix
parent806593f53dde83f367fd9f6ee74a21aef97faf44 (diff)
yeet the nix flakes
this is, in the widest possible sense, a revert of e88fed18f499a3e8ac98c772bbb62f00d1f8d1d7, which was now a little over two years ago. Of course, lots of things have changed since then: - this uses npins instead of niv, which is both simpler and still maintained - i haven't brought back the old deploy lib; I still use deploy-rs (with some modifications) to deploy things - if you actually use my stuff downstream, you can now use packages/ & tests/ & modules/ as entry points directly, while still having some control over inputs - (since i also don't believe any downstream users actually exist, i've not bothered to have a shim flake.nix so your stuff probably just broke. well, it was an experimental feature, anyways) - in general there's a lot more of the old-fashioned structure back again, with default.nix files in subdirectories that form a structure, not like how almost everything was just imported in the one big flake.nix file For people who are interested in also having a non-flake config similar to this one, it's probably best to take a look at inputs.nix (and also at npins, of course)
Diffstat (limited to '')
-rw-r--r--default.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..1d100d1
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,93 @@
+{ system ? "x86_64-linux"
+, inputs ? import ./inputs.nix { inherit system; }
+}:
+
+let
+ inherit (inputs) sops-nix home-manager nixpkgs;
+
+ mkConfig = imports: config:
+ inputs.nixpkgs-flake.lib.nixosSystem rec {
+ system = "x86_64-linux";
+ modules = [ config ] ++ imports;
+ extraModules =
+ builtins.attrValues self.modules
+ ++ [ sops-nix ];
+ pkgs = nixpkgs;
+
+ specialArgs = {
+ inherit inputs system;
+ craneLib = inputs.crane.lib.${system};
+ };
+ };
+ mkDesktop = mkConfig [ ./common/desktop.nix ];
+ mkServer = mkConfig [
+ ./common/headless.nix
+ ];
+ deploy-vps = hostname: {
+ inherit hostname;
+ profiles.system = {
+ user = "root";
+ sshUser = "root";
+ path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos
+ self.nixosConfigurations.${hostname};
+ };
+ };
+
+ self = {
+
+ nixosConfigurations = {
+ chaski = mkServer ./chaski/configuration.nix;
+ flora = mkServer ./flora/configuration.nix;
+ abbenay = mkDesktop ./abbenay/configuration.nix;
+ cyberbox = mkDesktop ./cyberbox/configuration.nix;
+ ilex = mkDesktop ./ilex/configuration.nix;
+ };
+
+ deploy.nodes = {
+ chaski = deploy-vps "chaski";
+ flora = deploy-vps "flora";
+ parsons = {
+ hostname = "parsons";
+ profiles.home = {
+ user = "stuebinm";
+ sshUser = "stuebinm";
+ path = inputs.deploy-rs.lib.x86_64-linux.activate.home-manager
+ self.homeConfigurations.stuebinm-minimal;
+ };
+ };
+ abbenay = {
+ hostname = "abbenay";
+ profiles.system = {
+ user = "root";
+ sshUser = "stuebinm";
+ interactiveSudo = true;
+ path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos
+ self.nixosConfigurations.abbenay;
+ };
+ };
+ };
+
+ homeConfigurations = let
+ home = root:
+ home-manager.lib.homeManagerConfiguration rec {
+ pkgs = nixpkgs;
+ modules = [ root ];
+ extraSpecialArgs = {
+ inherit inputs;
+ system = "x86_64-linux";
+ };
+ };
+ in {
+ stuebinm = home ./home/home.nix;
+ stuebinm-minimal = home ./home/home-minimal.nix;
+ };
+
+ home = self.homeConfigurations.stuebinm.activationPackage;
+ home-minimal = self.homeConfigurations.stuebinm-minimal.activationPackage;
+
+ modules = import ./modules;
+ packages = import ./pkgs { inherit nixpkgs; };
+ tests = import ./tests { inherit nixpkgs; };
+ };
+
+in self