166 lines
6.5 KiB
Nix
166 lines
6.5 KiB
Nix
{ 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";
|
|
};
|
|
|
|
# https://github.com/nix-community/nix-on-droid
|
|
nixOnDroidConfigurations = {
|
|
zenfone = inputs-edge.nix-on-droid-edge.lib.nixOnDroidConfiguration {
|
|
pkgs = import inputs-edge.nixpkgs-edge { system = "aarch64-linux"; };
|
|
modules = [ ./nix-on-droid.nix ];
|
|
};
|
|
};
|
|
|
|
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";
|
|
#};
|
|
};
|
|
/*
|
|
*/
|
|
|
|
}
|