Compare commits

..

8 commits

Author SHA1 Message Date
d1e661df5d nixosConfiguration: preSwitchCkeck: nvd 2025-11-26 19:51:13 +01:00
01106110fe automatically import ${namespace}.${class(es)} as modules
Allow to specify a list of classes in the host/<hostname>.nix (by
default the class <hostname> is used) that will automatically load
specified outputs of inputs.
2025-11-26 14:12:19 +01:00
d281a23a8a run nix format on this repository 2025-11-26 14:03:13 +01:00
1b5b697dfb nix fmt: automatically expose the default nix formatter 2025-11-26 14:02:30 +01:00
72f2a2ddc0 remove inputs
We actually do not depend on any input here. Only if a
nixosConfiguration should be instantiated, but it is already
expected that the user will provide a (more up-to-date) nixpkgs
flake that we use.
2025-11-26 13:58:56 +01:00
f3f83a56ab bump version 2025-11-26 10:50:10 +01:00
a5dc014e65 make home-manager optional
As the home-manager depends on the actual used nixpkgs version
and is not always used, remove it from the base dependencies but
use still use it implictely if a home-manager input exists.
2025-11-26 03:01:08 +01:00
7585be3dac bump version 2025-11-22 05:01:53 +01:00
3 changed files with 58 additions and 80 deletions

View file

@ -10,36 +10,58 @@
{ ... }@inputs: { ... }@inputs:
{ host, ... }@imports: { host, ... }@imports:
let let
host' = pre-switch-check =
name: snippets: { pkgs, lib, config, ... }:
let {
config.system.preSwitchChecks.nvd = ''
nvd_check=y
if [[ -d /run/current-system ]]
then
${lib.getExe pkgs.nvd} --nix-bin-dir ${config.nix.package}/bin diff /run/current-system "''${1}"
if [[ -t 0 ]]; then
printf 'really %s to %s? [y]es/[N]o ' "''${2}" "''${1}"
read -r nvd_check
fi
fi
[[ "''${nvd_check}" == y ]]
'';
};
system = system =
hostname:
{ {
namespace ? "fbs42", namespace ? "fbs42",
nixpkgs ? "nixpkgs", nixpkgs ? "nixpkgs",
classes ? [ hostname ],
}: }:
inputs.${nixpkgs}.lib.nixosSystem { inputs.${nixpkgs}.lib.nixosSystem {
specialArgs = { inherit inputs flake namespace; }; specialArgs = { inherit inputs flake namespace; };
modules = modules =
builtins.concatLists ( builtins.concatLists (
map ( map (
base: builtins.attrValues (flake.lib.scan { base = "${base}/host/${name}"; }) base: builtins.attrValues (flake.lib.scan { base = "${base}/host/${hostname}"; })
) flake.lib.schema.base ) flake.lib.schema.base
) )
++ [ { config.networking.hostName = name; } ] ++ map (class: {
imports = map (input: input.${namespace}.${class} or { }) (builtins.attrValues inputs);
}) classes
++ [ pre-switch-check ]
++ [ { config.networking.hostName = hostname; } ]
++ [ nixosModules.default ] ++ [ nixosModules.default ]
++ [ inputs.home-manager.nixosModules.default ] ++ inputs.${nixpkgs}.lib.optional (inputs ? home-manager) {
++ [ { config.home-manager.sharedModules = [ hmModules.default ]; } ] imports = [ inputs.home-manager.nixosModules.default ];
++ [ { config.home-manager.extraSpecialArgs = { inherit flake namespace; }; } ] config.home-manager = {
sharedModules = [ hmModules.default ];
extraSpecialArgs = { inherit flake namespace; };
};
}
++ builtins.attrValues nixosUsers ++ builtins.attrValues nixosUsers
++ builtins.attrValues nixosGroups; ++ builtins.attrValues nixosGroups;
}; };
cfg =
assert builtins.length snippets == 1;
builtins.head snippets;
in in
system cfg; builtins.mapAttrs (
name: value:
in assert builtins.length value == 1;
builtins.mapAttrs host' host system name (builtins.head value)
) host

46
flake.lock generated
View file

@ -1,61 +1,23 @@
{ {
"nodes": { "nodes": {
"hardware": {
"locked": {
"lastModified": 1753122741,
"narHash": "sha256-nFxE8lk9JvGelxClCmwuJYftbHqwnc01dRN4DVLUroM=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "cc66fddc6cb04ab479a1bb062f4d4da27c936a22",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixos-hardware",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1757808926,
"narHash": "sha256-K6PEI5PYY94TVMH0mX3MbZNYFme7oNRKml/85BpRRAo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f21d9167782c086a33ad53e2311854a8f13c281e",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1757810152, "lastModified": 1763966396,
"narHash": "sha256-Vp9K5ol6h0J90jG7Rm4RWZsCB3x7v5VPx588TQ1dkfs=", "narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9a094440e02a699be5c57453a092a8baf569bdad", "rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-25.05", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"hardware": "hardware",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
} }

View file

@ -1,12 +1,6 @@
{ {
inputs = { # only used for nixfmt-tree
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
hardware.url = "github:nixos/nixos-hardware";
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, ... }@inputs: import ./lib/flake.nix inputs ./.; outputs = { self, ... }@inputs: import ./lib/flake.nix inputs ./.;
} }