diff --git a/flake.nix b/flake.nix index b5f3e0f..77f1f12 100644 --- a/flake.nix +++ b/flake.nix @@ -127,56 +127,56 @@ ... } @ inputs': let - inputs-edge = inputs' // { + input-views.inputs-edge = inputs' // { nixpkgs = inputs'.nixpkgs-edge; unstable = inputs'.nixpkgs-edge; home-manager = inputs'.home-manager-edge; sops-nix = inputs'.sops-nix-edge; }; - inputs-2505 = inputs' // { + input-views.inputs-2505 = inputs' // { nixpkgs = inputs'.nixpkgs-2505; unstable = inputs'.nixpkgs-edge; home-manager = inputs'.home-manager-2505; sops-nix = inputs'.sops-nix-2505; }; - inputs-2411 = inputs' // { + input-views.inputs-2411 = inputs' // { nixpkgs = inputs'.nixpkgs-2411; unstable = inputs'.nixpkgs-2505; home-manager = inputs'.home-manager-2411; sops-nix = inputs'.sops-nix-2411; }; - inputs-2405 = inputs' // { + input-views.inputs-2405 = inputs' // { nixpkgs = inputs'.nixpkgs-2405; unstable = inputs'.nixpkgs-2411; home-manager = inputs'.home-manager-2405; sops-nix = inputs'.sops-nix-2405; }; - inputs-2311 = inputs' // { + input-views.inputs-2311 = inputs' // { nixpkgs = inputs'.nixpkgs-2311; unstable = inputs'.nixpkgs-2405; home-manager = inputs'.home-manager-2311; sops-nix = inputs'.sops-nix-2311; }; - inputs-2305 = inputs' // { + input-views.inputs-2305 = inputs' // { nixpkgs = inputs'.nixpkgs-2305; unstable = inputs'.nixpkgs-2311; home-manager = inputs'.home-manager-2305; sops-nix = inputs'.sops-nix-2305; }; - inputs-2211 = inputs-2305 // { nixpkgs = inputs'.nixpkgs-2211; }; - inputs-2205 = inputs-2305 // { nixpkgs = inputs'.nixpkgs-2205; }; - inputs-2111 = inputs-2305 // { nixpkgs = inputs'.nixpkgs-2111; }; - inputs-2105 = inputs-2305 // { nixpkgs = inputs'.nixpkgs-2105; }; - inputs-2009 = inputs-2305 // { nixpkgs = inputs'.nixpkgs-2009; }; - inputs-2003 = inputs-2305 // { nixpkgs = inputs'.nixpkgs-2003; }; - inputs-1909 = inputs-2305 // { nixpkgs = inputs'.nixpkgs-1909; }; - inputs-test = inputs-edge // { nixpkgs = inputs'.nixpkgs-test; unstable = inputs'.nixpkgs-test; }; - inputs-250T = inputs-2505 // { unstable = inputs'.nixpkgs-test; }; - inputs-241T = inputs-2411 // { unstable = inputs'.nixpkgs-test; }; # TODO: remove + input-views.inputs-2211 = input-views.inputs-2305 // { nixpkgs = inputs'.nixpkgs-2211; }; + input-views.inputs-2205 = input-views.inputs-2305 // { nixpkgs = inputs'.nixpkgs-2205; }; + input-views.inputs-2111 = input-views.inputs-2305 // { nixpkgs = inputs'.nixpkgs-2111; }; + input-views.inputs-2105 = input-views.inputs-2305 // { nixpkgs = inputs'.nixpkgs-2105; }; + input-views.inputs-2009 = input-views.inputs-2305 // { nixpkgs = inputs'.nixpkgs-2009; }; + input-views.inputs-2003 = input-views.inputs-2305 // { nixpkgs = inputs'.nixpkgs-2003; }; + input-views.inputs-1909 = input-views.inputs-2305 // { nixpkgs = inputs'.nixpkgs-1909; }; + input-views.inputs-test = input-views.inputs-edge // { nixpkgs = inputs'.nixpkgs-test; unstable = inputs'.nixpkgs-test; }; + input-views.inputs-250T = input-views.inputs-2505 // { unstable = inputs'.nixpkgs-test; }; + input-views.inputs-241T = input-views.inputs-2411 // { unstable = inputs'.nixpkgs-test; }; # TODO: remove - forSystems = systems: f: inputs-edge.nixpkgs.lib.genAttrs systems (system: f rec { + forSystems = systems: f: input-views.inputs-edge.nixpkgs.lib.genAttrs systems (system: f rec { inherit system; - inputs = inputs-edge; + inputs = input-views.inputs-edge; pkgs = inputs.nixpkgs.legacyPackages.${system}; lib = inputs.nixpkgs.legacyPackages.${system}.lib; }); @@ -186,114 +186,18 @@ "riscv64-linux" ]; - mkModule = extra-modules: domain: system: inputs: stateVersion: modules: hostname: ({ lib, ... }: { - system.stateVersion = lib.mkDefault stateVersion; # TODO: home-manager - - imports = [ - ./profiles/base - "${self}/hosts/nixos/${hostname}/configuration.nix" - inputs.home-manager.nixosModules.default - #inputs.nix-index-database.nixosModules.nix-index # TODO: fix? - ] ++ modules ++ extra-modules; - #++ inputs.flake-programs-sqlite.nixosModules.programs-sqlite; # TODO: make work - - - home-manager.useGlobalPkgs = true; # go brrr, reuse overrides - home-manager.extraSpecialArgs = { - inherit inputs; - }; - home-manager.sharedModules = [ - inputs.sops-nix.homeManagerModules.sops - inputs.nix-index-database.hmModules.nix-index - ]; - - # still needed even if using networkd - networking.hostName = hostname; - networking.domain = domain; - networking.search = [ domain ]; - - nixpkgs.overlays = [ - self.overlays.pbsdspkgs - inputs.system-manager-edge.overlays.default - (final: prev: { - unstable = import inputs.unstable { - inherit system; - config = final.pkgs.config; - }; - }) - ]; - - # This makes commandline tools like 'nix run nixpkgs#hello' - # and 'nix-shell -p hello' use the same channel as system was built with - nix.registry.nixpkgs.flake = inputs.nixpkgs; - nix.registry.nixpkgs-unstable.flake = inputs.unstable; - nix.nixPath = [ - "nixpkgs=${inputs.nixpkgs}" - "nixpkgs-unstable=${inputs.unstable}" - ]; - }); - mkConfig = extra-modules: domain: system: inputs: stateVersion: modules: hostname: inputs.nixpkgs.lib.nixosSystem { - #inherit system; - specialArgs = { - inherit inputs; - }; - modules = [ - # TODO: specify this in mkModule? - { - nixpkgs.hostPlatform = system; - #nixpkgs.buildPlatform = system; - } - (mkModule extra-modules domain system inputs stateVersion modules hostname) - ]; - }; - # TODO: move this to a file or separate flake - mkHosts = mk: let - ls = imports: { inherit imports; }; - hw = nixos-hardware.nixosModules; - #vf = nixos-vf2.nixosModules; - amd = ls [ hw.common-pc hw.common-pc-ssd hw.common-cpu-amd ]; - intel = ls [ hw.common-pc hw.common-pc-ssd hw.common-cpu-intel ./hardware/gpu/intel.nix ]; - intel-novga = ls [ hw.common-pc hw.common-pc-ssd hw.common-cpu-intel-cpu-only ]; - cuda = ls [ ./hardware/gpu/cuda.nix hw.common-gpu-nvidia-nonprime ]; - cuda-prime = ls [ ./hardware/gpu/cuda.nix hw.common-gpu-nvidia ]; - rocm = ls [ ./hardware/gpu/rocm.nix hw.common-gpu-amd ]; - nspawn = ls [ "${nixos-nspawn}/nspawn-image.nix" { boot.isContainer = true; } ]; - hidpi = ls [ hw.common-hidpi ./profiles/hidpi.nix ]; - p1005 = ./hardware/printer/hp-laserjet-p1005.nix; - au = ./profiles/auto-upgrade.nix; - ts1 = ./profiles/tailscale-inner.nix; - ts2 = ./profiles/tailscale-outer.nix; - tse = ./profiles/tailscale-exit-node.nix; - #rb = ./profiles/known-hosts; # TODO - nixld = ./profiles/nix-ld.nix; - dns64 = { config, ... }: { - networking.nameservers = [ "2001:700:1:11::2:51" ]; # dns64.uninett.no - networking.networkmanager.enable = true; - networking.networkmanager.insertNameservers = config.networking.nameservers; # https://github.com/NixOS/nixpkgs/issues/61230 - networking.resolvconf.enable = false; - }; - in builtins.mapAttrs (hostname: curried: curried hostname) { - #hostname "domain" "system" inputs "state" [ modules ... ] - # asgaut = mk "pbsds.net" "riscv64-linux" inputs-2405 "24.05" [ hw.starfive-visionfive-2 ]; - noximilien = mk "pbsds.net" "x86_64-linux" inputs-241T "24.11" [ au ts1 tse intel ]; - nord = mk "pbsds.net" "x86_64-linux" inputs-2411 "24.11" [ au ts1 intel-novga hw.common-gpu-intel-sandy-bridge rocm hidpi ]; - sopp = mk "pbsds.net" "x86_64-linux" inputs-edge "24.11" [ au ts1 nixld intel cuda p1005 ]; - bjarte = mk "pbsds.net" "x86_64-linux" inputs-edge "24.11" [ ts1 nixld intel hw.lenovo-thinkpad-x1-7th-gen ]; - bolle = mk "pbsds.net" "x86_64-linux" inputs-2505 "24.11" [ au ts2 intel ]; - eple = mk "pbsds.net" "x86_64-linux" inputs-2505 "24.11" [ au ts1 tse dns64 intel rocm ]; - garp = mk "pbsds.net" "x86_64-linux" inputs-2505 "24.11" [ au ts2 intel-novga cuda ]; - # hasselknippe= mk "pbsds.net" "aarch64-linux" inputs-2405 "24.05" [ ts1 hw.pine64-pinebook-pro ]; - #gomperud smattkuken skrytebiffen skalkesnerken balleby bingus skjrlaltatjlstad - #bergjlot snortheimsmoen ditlefsen skrukkerud podebusk zmaragd makrell alfnes blix urke pytte uddu imdorf rosenqvist - }; + hosts = import ./hosts { inherit input-views; }; in { inputs = inputs'; lib = import ./lib.nix { inputs = inputs'; }; - nixosModules = mkHosts (mkModule []); - nixosConfigurations = mkHosts (mkConfig []); - nixosReports = builtins.mapAttrs (key: self.lib.mkNixosConfigSummary) self.nixosConfigurations; + inherit (hosts) + nixosModules + nixosConfigurations + nixosReports + images + ; overlays = { pbsdspkgs = final: prev: let @@ -329,28 +233,6 @@ in pbsdspkgs // { }); - - images = forAllSystems ({ inputs, system, pkgs, lib, ... }: let - mk-nspawn-setup = hostname: # TODO: nspawn-tarball.nix populates /etc/nixos with junk - (pkgs.callPackage ./pkgs/mk-nspawn-setup {}) - (mkHosts (mkConfig [ "${nixos-nspawn}/nspawn-tarball.nix" ])).${hostname}; - in { - asgaut-sd = (mkHosts (mkConfig [ - "${nixos-hardware}/starfive/visionfive/v2/sd-image.nix" - { - nixpkgs.buildPlatform.system = system; # cross - sdImage.compressImage = false; - } - ])).asgaut.config.system.build.sdImage; - #brumlebasse-nspawn-setup = mk-nspawn-setup "brumlebasse"; - #brumlebasse-openstack = nixos-generators-2405.nixosGenerate { - # system = "x86_64-linux"; - # specialArgs = { inherit inputs; }; - # modules = [ (mkHosts (mkModule [])).brumlebasse ]; - # format = "openstack"; - #}; - }); - homeModules.jump = ./users/pbsds/modules/jump.nix; homeModules.micro = ./users/pbsds/modules/micro.nix; @@ -383,20 +265,20 @@ # TODO: nix-portable - heid # TODO: garmr # TODO: furios? - pbsds = mkHome "pbsds" "/home/pbsds" "x86_64-linux" inputs-edge [ ./users/pbsds/home/minimal.nix ]; - pbsds-edge = mkHome "pbsds" "/home/pbsds" "x86_64-linux" inputs-edge [ ./users/pbsds/home ]; - pbsds-2505 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" inputs-2505 [ ./users/pbsds/home ]; - pbsds-2411 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" inputs-2411 [ ./users/pbsds/home ]; - pbsds-gnome-edge = mkHome "pbsds" "/home/pbsds" "x86_64-linux" inputs-edge [ ./users/pbsds/home/gnome.nix ]; - pbsds-gnome-2505 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" inputs-2505 [ ./users/pbsds/home/gnome.nix ]; - pbsds-gnome-2411 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" inputs-2411 [ ./users/pbsds/home/gnome.nix ]; + pbsds = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views.inputs-edge [ ./users/pbsds/home/minimal.nix ]; + pbsds-edge = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views.inputs-edge [ ./users/pbsds/home ]; + pbsds-2505 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views.inputs-2505 [ ./users/pbsds/home ]; + pbsds-2411 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views.inputs-2411 [ ./users/pbsds/home ]; + pbsds-gnome-edge = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views.inputs-edge [ ./users/pbsds/home/gnome.nix ]; + pbsds-gnome-2505 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views.inputs-2505 [ ./users/pbsds/home/gnome.nix ]; + pbsds-gnome-2411 = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views.inputs-2411 [ ./users/pbsds/home/gnome.nix ]; - "pederbs@pvv" = mkHome "pederbs" "/home/pvv/d/pederbs" "x86_64-linux" inputs-2505 [ ./users/pbsds/home/minimal.nix ]; + "pederbs@pvv" = mkHome "pederbs" "/home/pvv/d/pederbs" "x86_64-linux" input-views.inputs-2505 [ ./users/pbsds/home/minimal.nix ]; }; # TODO: use this to pull changes to repo homeFileMap = let - inherit (inputs-edge.nixpkgs) lib; + inherit (input-views.inputs-edge.nixpkgs) lib; files = self.homeConfigurations.x86_64-linux.pbsds-gnome.config.home.file; in lib.pipe files [ (lib.filterAttrs (k: v: lib.hasPrefix (toString self) (toString v.source))) @@ -418,8 +300,8 @@ ]; }; in { - FuriPhoneFLX1 = mkSystem "furiphoneflx1" inputs-edge "aarch64-linux"; - test = mkSystem "furiphoneflx1" inputs-edge "x86_64-linux"; + FuriPhoneFLX1 = mkSystem "furiphoneflx1" input-views.inputs-edge "aarch64-linux"; + test = mkSystem "furiphoneflx1" input-views.inputs-edge "x86_64-linux"; }; #checks = forAllSystems ({ inputs, system, ... }: { @@ -441,7 +323,7 @@ # inherit (self.checks.${system}.pre-commit-check) shellHook; # packages = (args.packages or []) ++ packages ++ self.checks.${system}.pre-commit-check.enabledPackages; #}); - inherit (inputs-edge.system-manager-edge.packages.${system}) system-manager; + inherit (input-views.inputs-edge.system-manager-edge.packages.${system}) system-manager; envrc-pkgs = [ self.packages.${system}.nom-nixos-rebuild # self.packages.${system}.nom-nixos-rebuild-ng diff --git a/hosts/default.nix b/hosts/default.nix new file mode 100644 index 0000000..3ee0bc9 --- /dev/null +++ b/hosts/default.nix @@ -0,0 +1,137 @@ +{ input-views }: +let + inherit (input-views.inputs-edge) self; + + mkModule = extra-modules: domain: system: inputs: stateVersion: modules: hostname: ({ lib, ... }: { + system.stateVersion = lib.mkDefault stateVersion; # TODO: home-manager + + imports = [ + ./../profiles/base + ./nixos/${hostname}/configuration.nix + inputs.home-manager.nixosModules.default + #inputs.nix-index-database.nixosModules.nix-index # TODO: fix? + ] ++ modules ++ extra-modules; + #++ inputs.flake-programs-sqlite.nixosModules.programs-sqlite; # TODO: make work + + + home-manager.useGlobalPkgs = true; # go brrr, reuse overrides + home-manager.extraSpecialArgs = { + inherit inputs; + }; + home-manager.sharedModules = [ + inputs.sops-nix.homeManagerModules.sops + inputs.nix-index-database.hmModules.nix-index + ]; + + # still needed even if using networkd + networking.hostName = hostname; + networking.domain = domain; + networking.search = [ domain ]; + + nixpkgs.overlays = [ + self.overlays.pbsdspkgs + inputs.system-manager-edge.overlays.default + (final: prev: { + unstable = import inputs.unstable { + inherit system; + config = final.pkgs.config; + }; + }) + ]; + + # This makes commandline tools like 'nix run nixpkgs#hello' + # and 'nix-shell -p hello' use the same channel as system was built with + nix.registry.nixpkgs.flake = inputs.nixpkgs; + nix.registry.nixpkgs-unstable.flake = inputs.unstable; + nix.nixPath = [ + "nixpkgs=${inputs.nixpkgs}" + "nixpkgs-unstable=${inputs.unstable}" + ]; + }); + mkConfig = extra-modules: domain: system: inputs: stateVersion: modules: hostname: inputs.nixpkgs.lib.nixosSystem { + #inherit system; + specialArgs = { + inherit inputs; + }; + modules = [ + # TODO: specify this in mkModule? + { + nixpkgs.hostPlatform = system; + #nixpkgs.buildPlatform = system; + } + (mkModule extra-modules domain system inputs stateVersion modules hostname) + ]; + }; + # TODO: move this to a file or separate flake + mkHosts = mk: let + ls = imports: { inherit imports; }; + hw = input-views.inputs-edge.nixos-hardware.nixosModules; + #vf = input-views.inputs-edge.nixos-vf2.nixosModules; + amd = ls [ hw.common-pc hw.common-pc-ssd hw.common-cpu-amd ]; + intel = ls [ hw.common-pc hw.common-pc-ssd hw.common-cpu-intel ./../hardware/gpu/intel.nix ]; + intel-novga = ls [ hw.common-pc hw.common-pc-ssd hw.common-cpu-intel-cpu-only ]; + cuda = ls [ ./../hardware/gpu/cuda.nix hw.common-gpu-nvidia-nonprime ]; + cuda-prime = ls [ ./../hardware/gpu/cuda.nix hw.common-gpu-nvidia ]; + rocm = ls [ ./../hardware/gpu/rocm.nix hw.common-gpu-amd ]; + # nspawn = ls [ "${nixos-nspawn}/nspawn-image.nix" { boot.isContainer = true; } ]; + hidpi = ls [ hw.common-hidpi ./../profiles/hidpi.nix ]; + p1005 = ./../hardware/printer/hp-laserjet-p1005.nix; + au = ./../profiles/auto-upgrade.nix; + ts1 = ./../profiles/tailscale-inner.nix; + ts2 = ./../profiles/tailscale-outer.nix; + tse = ./../profiles/tailscale-exit-node.nix; + #rb = ./../profiles/known-hosts; # TODO + nixld = ./../profiles/nix-ld.nix; + dns64 = { config, ... }: { + networking.nameservers = [ "2001:700:1:11::2:51" ]; # dns64.uninett.no + networking.networkmanager.enable = true; + networking.networkmanager.insertNameservers = config.networking.nameservers; # https://github.com/NixOS/nixpkgs/issues/61230 + networking.resolvconf.enable = false; + }; + in builtins.mapAttrs (hostname: curried: curried hostname) { + #hostname "domain" "system" inputs "state" [ modules ... ] + # asgaut = mk "pbsds.net" "riscv64-linux" input-views.inputs-2405 "24.05" [ hw.starfive-visionfive-2 ]; + # noximilien = mk "pbsds.net" "x86_64-linux" input-views.inputs-250T "24.11" [ au ts1 tse intel ]; + noximilien = mk "pbsds.net" "x86_64-linux" input-views.inputs-241T "24.11" [ au ts1 tse intel ]; + nord = mk "pbsds.net" "x86_64-linux" input-views.inputs-2411 "24.11" [ au ts1 intel-novga hw.common-gpu-intel-sandy-bridge rocm hidpi ]; + sopp = mk "pbsds.net" "x86_64-linux" input-views.inputs-edge "24.11" [ au ts1 nixld intel cuda p1005 ]; + bjarte = mk "pbsds.net" "x86_64-linux" input-views.inputs-edge "24.11" [ ts1 nixld intel hw.lenovo-thinkpad-x1-7th-gen ]; + bolle = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "24.11" [ au ts2 intel ]; + eple = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "24.11" [ au ts1 tse dns64 intel rocm ]; + garp = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "24.11" [ au ts2 intel-novga cuda ]; + # hasselknippe= mk "pbsds.net" "aarch64-linux" input-views.inputs-2405 "24.05" [ ts1 hw.pine64-pinebook-pro ]; + #gomperud smattkuken skrytebiffen skalkesnerken balleby bingus skjrlaltatjlstad + #bergjlot snortheimsmoen ditlefsen skrukkerud podebusk zmaragd makrell alfnes blix urke pytte uddu imdorf rosenqvist + }; + +in +rec { + nixosModules = mkHosts (mkModule []); + nixosConfigurations = mkHosts (mkConfig []); + nixosReports = builtins.mapAttrs (key: self.lib.mkNixosConfigSummary) nixosConfigurations; + + images = {}; + /* + images = let + mk-nspawn-setup = hostname: # TODO: nspawn-tarball.nix populates /etc/nixos with junk + (pkgs.callPackage ./../pkgs/mk-nspawn-setup {}) + (mkHosts (mkConfig [ "${nixos-nspawn}/nspawn-tarball.nix" ])).${hostname}; + in { + asgaut-sd = (mkHosts (mkConfig [ + "${nixos-hardware}/starfive/visionfive/v2/sd-image.nix" + { + nixpkgs.buildPlatform.system = system; # cross + sdImage.compressImage = false; + } + ])).asgaut.config.system.build.sdImage; + #brumlebasse-nspawn-setup = mk-nspawn-setup "brumlebasse"; + #brumlebasse-openstack = nixos-generators-2405.nixosGenerate { + # system = "x86_64-linux"; + # specialArgs = { inherit inputs; }; + # modules = [ (mkHosts (mkModule [])).brumlebasse ]; + # format = "openstack"; + #}; + }; + */ + +}