{ 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 nixpkgs.hostPlatform = system; #nixpkgs.buildPlatform = buildSystem; # cross 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 or inputs.nix-index-database.homeModules.nix-index # old attrname ) ]; # 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; inherit (final.pkgs) config overlays; }; }) ]; # 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 = [ { # _module.args = { inherit inputs; }; } (mkModule extra-modules domain system inputs stateVersion modules hostname) ]; }; # TODO: move this to a file or separate flake mkHosts = mk: let hw = input-views.inputs-edge.nixos-hardware.nixosModules; #vf = input-views.inputs-edge.nixos-vf2.nixosModules; # nspawn = ls [ "${nixos-nspawn}/nspawn-image.nix" { boot.isContainer = true; } ]; 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" [ ts1 au tse ]; noximilien = mk "pbsds.net" "x86_64-linux" input-views.inputs-241T "24.11" [ ts1 au tse ]; nord = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "24.11" [ ts1 au ]; sopp = mk "pbsds.net" "x86_64-linux" input-views.inputs-edge "24.11" [ ts1 au nixld p1005 ]; bjarte = mk "pbsds.net" "x86_64-linux" input-views.inputs-edge "24.11" [ ts1 nixld ]; bolle = mk "pbsds.net" "x86_64-linux" input-views.inputs-edge "24.11" [ ts2 au tse ]; eple = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "24.11" [ ts1 au tse dns64 ]; garp = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "24.11" [ ts2 au ]; # hasselknippe= mk "pbsds.net" "aarch64-linux" input-views.inputs-2405 "24.05" [ ts1 hw.pine64-pinebook-pro ]; # alsaug gomperud smattkuken skrytebiffen skalkesnerken kelfrid 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; # system-manager systemConfigs = let mkSystem = name: inputs: system: inputs.system-manager-edge.lib.makeSystemConfig { extraSpecialArgs = { inherit inputs; inherit system; # TODO: find an alternative }; modules = [ { nixpkgs.hostPlatform = system; } { system-manager.allowAnyDistro = true; } inputs.nix-system-graphics-edge.systemModules.default ./system-manager/${name}/system-configuration.nix ]; }; in { FuriPhoneFLX1 = mkSystem "furiphoneflx1" input-views.inputs-edge "aarch64-linux"; test = mkSystem "furiphoneflx1" input-views.inputs-edge "x86_64-linux"; }; 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"; #}; }; /* */ }