diff options
author | stuebinm | 2024-04-28 21:30:47 +0200 |
---|---|---|
committer | stuebinm | 2024-04-29 00:02:55 +0200 |
commit | 9e7a775e2578e126dddb1c6f7514874265e3d08e (patch) | |
tree | 68a72299d6c5ca706ee357fdbc73d8dd4ceef010 /default.nix | |
parent | 806593f53dde83f367fd9f6ee74a21aef97faf44 (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.nix | 93 |
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 |