chore(modules): add auto-import default.nix files

This commit is contained in:
2026-05-22 20:19:10 +02:00
parent a9dc191c2f
commit bd8a8f7942
12 changed files with 193 additions and 281 deletions

View File

@@ -8,31 +8,6 @@
{
imports = [
../../modules
../../modules/3d
../../modules/ai-tools
../../modules/anki
../../modules/audio
../../modules/browser
../../modules/cloud
../../modules/comms
../../modules/desktop/niri
../../modules/devenv
../../modules/direnv
../../modules/git
../../modules/k8s/k9s.nix
../../modules/keepassxc
../../modules/music
../../modules/nvim
../../modules/pandoc
../../modules/photography
../../modules/secrets
../../modules/shell
../../modules/ssh
../../modules/taskwarrior
../../modules/terminal
../../modules/torrenting
../../modules/yubikey
../../modules/zk
];
home = {

View File

@@ -7,29 +7,6 @@
{
imports = [
../../modules
../../modules/3d
../../modules/ai-tools
../../modules/anki
../../modules/audio
../../modules/browser
../../modules/cloud
../../modules/comms
../../modules/desktop/niri
../../modules/devenv
../../modules/direnv
../../modules/git
../../modules/k8s/k9s.nix
../../modules/keepassxc
../../modules/music
../../modules/nfc
../../modules/nvim
../../modules/pandoc
../../modules/secrets
../../modules/shell
../../modules/ssh
../../modules/taskwarrior
../../modules/terminal
../../modules/yubikey
];
home = {
@@ -48,34 +25,33 @@
claude-code.enable = true;
opencode.enable = true;
};
desktop.niri.enable = true;
anki.enable = true;
audio.enable = true;
browser.enable = true;
browser.primary = "librewolf";
cloud.hetzner.enable = true;
comms.signal.enable = true;
desktop.niri.enable = true;
devenv.enable = true;
direnv.enable = true;
git.enable = true;
git.github.enable = true;
k8s.k9s.enable = true;
keepassxc.enable = true;
music.enable = true;
my.yubikey.enable = true;
nfc.enable = true;
nvim.enable = true;
pandoc.enable = true;
secrets.enable = true;
shell = {
enable = true;
bash.aliases.lang-js = true;
bash.addBinToPath = true;
};
anki.enable = true;
k8s.k9s.enable = true;
secrets.enable = true;
taskwarrior.enable = true;
secrets.enable = true;
my.yubikey.enable = true;
audio.enable = true;
ssh.enable = true;
music.enable = true;
taskwarrior.enable = true;
terminal.enable = true;
devenv.enable = true;
keepassxc.enable = true;
direnv.enable = true;
nvim.enable = true;
nfc.enable = true;
pandoc.enable = true;
programs = {
home-manager.enable = true;

View File

@@ -9,35 +9,6 @@
imports = [
inputs.sops-nix.homeManagerModules.sops
../../modules
../../modules/ai-tools
../../modules/anki
../../modules/browser
../../modules/bruno
../../modules/cloud
../../modules/comms
../../modules/database
../../modules/dconf
../../modules/desktop/niri
../../modules/devenv
../../modules/direnv
../../modules/docker
../../modules/git
../../modules/go
../../modules/infra
../../modules/k8s
../../modules/k8s/k9s.nix
../../modules/keepassxc
../../modules/music
../../modules/nodejs
../../modules/nvim
../../modules/pandoc
../../modules/secrets
../../modules/shell
../../modules/stylix
../../modules/taskwarrior
../../modules/ticketing
../../modules/terminal
../../modules/vscode
];
sops.age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
@@ -63,50 +34,50 @@
defaultWrapper = "mesa";
};
desktop.niri.enable = true;
browser = {
enable = true;
primary = "firefox";
secondary = "chromium";
};
devenv.enable = true;
music.enable = true;
terminal.enable = true;
keepassxc.enable = true;
direnv.enable = true;
nvim.enable = true;
my.dconf.enable = true;
pandoc.enable = true;
cloud.azure.enable = true;
comms.signal.enable = true;
comms.teams.enable = true;
ai-tools = {
claude-code.enable = true;
tirith.enable = true;
opencode.enable = true;
};
anki.enable = true;
browser = {
enable = true;
primary = "firefox";
secondary = "chromium";
};
bruno.enable = true;
cloud.azure.enable = true;
comms.signal.enable = true;
comms.teams.enable = true;
database = {
mssql.enable = true;
postgresql.enable = true;
redis.enable = true;
};
anki.enable = true;
taskwarrior.enable = true;
k8s.enable = true;
shell.enable = true;
my.stylix.enable = true;
desktop.niri.enable = true;
devenv.enable = true;
direnv.enable = true;
docker.enable = true;
git = {
enable = true;
github.enable = true;
gitlab.enable = true;
};
go.enable = true;
k8s.enable = true;
keepassxc.enable = true;
music.enable = true;
my.dconf.enable = true;
my.stylix.enable = true;
nvim.enable = true;
pandoc.enable = true;
shell.enable = true;
taskwarrior.enable = true;
terminal.enable = true;
infra.enable = true;
nodejs.enable = true;
secrets.enable = true;
secrets.vault.enable = true;
bruno.enable = true;
docker.enable = true;
infra.enable = true;
go.enable = true;
nodejs.enable = true;
ticketing.enable = true;
vscode.enable = true;

View File

@@ -5,52 +5,40 @@
...
}:
let
moduleDirs = lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./.);
dirHasEnableOption =
name:
{
imports =
let
nixFiles = lib.filterAttrs (n: v: v == "regular" && lib.hasSuffix ".nix" n) (
builtins.readDir ./${name}
);
dirs = lib.attrNames (lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./.));
hasDef = name: builtins.pathExists ./${name}/default.nix;
in
!(builtins.pathExists ./${name}/default.nix)
|| lib.any (f: lib.hasInfix "mkEnableOption" (builtins.readFile ./${name}/${f})) (
builtins.attrNames nixFiles
);
withoutEnableOption = builtins.attrNames (
lib.filterAttrs (name: _: !dirHasEnableOption name) moduleDirs
);
in
lib.throwIf (withoutEnableOption != [ ])
"home modules missing enable option: ${lib.concatStringsSep ", " withoutEnableOption}"
{
options = {
host.username = lib.mkOption {
type = lib.types.str;
default = config.home.username;
};
map (name: ./${name}) (builtins.filter hasDef dirs);
nixgl.wrap = lib.mkOption {
type = lib.types.functionTo lib.types.package;
default = if config.lib ? nixGL then config.lib.nixGL.wrap else lib.id;
readOnly = true;
};
wrapApp = lib.mkOption {
type = lib.types.raw;
default =
pkg: flags:
if config.lib ? nixGL then
pkg.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ];
postInstall = (old.postInstall or "") + ''
wrapProgram $out/bin/${pkg.meta.mainProgram} --add-flags "${flags}"
'';
})
else
pkg;
readOnly = true;
};
options = {
host.username = lib.mkOption {
type = lib.types.str;
default = config.home.username;
};
}
nixgl.wrap = lib.mkOption {
type = lib.types.functionTo lib.types.package;
default = if config.lib ? nixGL then config.lib.nixGL.wrap else lib.id;
readOnly = true;
};
wrapApp = lib.mkOption {
type = lib.types.raw;
default =
pkg: flags:
if config.lib ? nixGL then
pkg.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.makeWrapper ];
postInstall = (old.postInstall or "") + ''
wrapProgram $out/bin/${pkg.meta.mainProgram} --add-flags "${flags}"
'';
})
else
pkg;
readOnly = true;
};
};
}

View File

@@ -17,51 +17,57 @@ in
inputs.nixos-hardware.nixosModules.common-cpu-intel
inputs.nixos-hardware.nixosModules.common-pc
inputs.nixos-hardware.nixosModules.common-pc-ssd
../../modules/common
../../modules/boot/bootloader.nix
../../modules
(import ../../modules/disko/zfs-encrypted-root.nix {
inherit lib config;
device = "/dev/nvme1n1";
})
../../modules/ai-tools
../../modules/anki
../../modules/audio
../../modules/backups
../../modules/bluetooth
../../modules/desktops/niri
../../modules/docker
../../modules/firewall
../../modules/fonts
../../modules/gaming
../../modules/git
../../modules/hcloud
../../modules/keyboard
../../modules/localization
../../modules/networking
../../modules/nvidia
../../modules/secrets
../../modules/ssh
../../modules/storage
../../modules/stylix
../../modules/syncthing
../../modules/tailscale
../../modules/taskwarrior
../../modules/users
../../modules/wol
../../modules/yubikey
];
home-manager.users.${config.host.username} = import ../../home/hosts/${config.host.name};
secrets.nixSigningKey.enable = true;
restic-backup.enable = true;
tailscale.enable = true;
"ai-tools".enable = true;
anki.enable = true;
audio.enable = true;
bluetooth.enable = true;
bootloader.enable = true;
desktop.niri.enable = true;
firewall = {
enable = true;
allowedTCPPorts = [ 22 ];
};
gaming.enable = true;
git.enable = true;
keyboard.enable = true;
localization.enable = true;
my = {
fonts.enable = true;
stylix.enable = true;
users.enable = true;
yubikey = {
enable = true;
pam.enable = false;
};
};
desktop.ly.enable = true;
docker.enable = true;
hcloud.enable = true;
networking.enable = true;
nvidia.enable = true;
restic-backup.enable = true;
secrets = {
enable = true;
nixSigningKey.enable = true;
};
ssh.enable = true;
storage.enable = true;
syncthing.enable = true;
tailscale.enable = true;
taskwarrior.enable = true;
wol = {
enable = true;
interfaces.eno1 = { inherit (wolInterfaces.eno1) macAddress; };
};
disko.devices = {
disk.data = {
@@ -91,25 +97,10 @@ in
inputs.colmena.packages.${pkgs.stdenv.hostPlatform.system}.colmena
];
my.yubikey = {
enable = true;
pam.enable = false;
};
services.locate = {
enable = true;
package = pkgs.plocate;
};
networking.hostId = "80eef97e";
wol = {
enable = true;
interfaces.eno1 = { inherit (wolInterfaces.eno1) macAddress; };
};
firewall = {
enable = true;
allowedTCPPorts = [ 22 ];
};
}

View File

@@ -5,9 +5,7 @@
pkgs,
...
}:
let
wolInterfaces = import ../andromache/wol-interfaces.nix;
in
{
imports = [
inputs.disko.nixosModules.disko
@@ -16,47 +14,50 @@ in
inputs.nixos-hardware.nixosModules.common-pc
inputs.nixos-hardware.nixosModules.common-pc-ssd
# inputs.nixos-hardware.nixosModules.lenovo-thinkpad-e14-intel-gen7 (not available yet?)
inputs.sops-nix.nixosModules.sops
../../modules/common
../../modules/boot/bootloader.nix
../../modules
(import ../../modules/disko/zfs-encrypted-root.nix {
inherit lib config;
device = "/dev/nvme0n1";
})
../../modules/ai-tools
../../modules/anki
../../modules/audio
../../modules/backups
../../modules/bluetooth
../../modules/desktops/niri
../../modules/docker
../../modules/firewall
../../modules/fonts
../../modules/git
../../modules/keyboard
../../modules/localization
../../modules/networking
../../modules/nfc
../../modules/secrets
../../modules/ssh
../../modules/storage
../../modules/stylix
../../modules/tailscale
../../modules/taskwarrior
../../modules/users
../../modules/yubikey
];
home-manager.users.${config.host.username} = import ../../home/hosts/${config.host.name};
secrets.nixSigningKey.enable = true;
"ai-tools".enable = true;
anki.enable = true;
audio.enable = true;
bluetooth.enable = true;
bootloader.enable = true;
desktop.niri.enable = true;
git.enable = true;
keyboard.enable = true;
localization.enable = true;
my = {
fonts.enable = true;
stylix.enable = true;
users.enable = true;
yubikey = {
enable = true;
pam.enable = false;
};
};
networking.enable = true;
secrets.enable = true;
ssh.enable = true;
storage.enable = true;
taskwarrior.enable = true;
secrets.nixSigningKey.enable = true;
restic-backup.enable = true;
tailscale.enable = true;
desktop.ly.enable = true;
docker.enable = true;
nfc.enable = true;
desktop.ly.enable = true;
audio.automation.enable = true;
firewall = {
enable = true;
allowedTCPPorts = [ 22 ];
};
hardware = {
cpu.intel.updateMicrocode = true;
@@ -90,18 +91,8 @@ in
hostId = "80eef97e";
};
firewall = {
enable = true;
allowedTCPPorts = [ 22 ];
};
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
my.yubikey = {
enable = true;
pam.enable = false;
};
services = {
fwupd.enable = true;
locate = {

View File

@@ -7,10 +7,11 @@
imports = [
./hard.nix
./host.nix
../../modules/common
../../modules/ssh
../../modules
];
ssh.enable = true;
boot = {
kernelParams = [
"console=ttyS1,115200n8"

View File

@@ -7,12 +7,10 @@
imports = [
./hard.nix
./host.nix
../../modules/common
../../modules/ssh
../../modules/tailscale
# ../../modules/uptime-kuma
../../modules
];
ssh.enable = true;
tailscale.enable = true;
boot.loader = {

View File

@@ -12,14 +12,14 @@
inputs.disko.nixosModules.disko
./hard.nix
./host.nix
../../modules/common
../../modules/ssh
../../modules/docker
../../modules
];
networking.hostName = config.host.name;
ssh.enable = true;
docker.enable = true;
networking.hostName = config.host.name;
fileSystems."/" = {
device = "/dev/disk/by-label/nixos";
fsType = "ext4";

View File

@@ -9,27 +9,30 @@
./hard.nix
./host.nix
./disk.nix
../../modules/common
../../modules/anki
../../modules/audio
../../modules/boot/bootloader.nix
../../modules/fonts
../../modules/git
../../modules/keyboard
../../modules/localization
../../modules/networking
../../modules/ai-tools
../../modules/ssh
../../modules/storage
../../modules/stylix
../../modules/secrets
../../modules/taskwarrior
../../modules/users
../../modules/x
../../modules
];
home-manager.users.${config.host.username} = import ../../home/hosts/vm;
"ai-tools".enable = true;
anki.enable = true;
audio.enable = true;
bootloader.enable = true;
desktop.x.enable = true;
git.enable = true;
keyboard.enable = true;
localization.enable = true;
my = {
fonts.enable = true;
stylix.enable = true;
users.enable = true;
};
networking.enable = true;
secrets.enable = true;
ssh.enable = true;
storage.enable = true;
taskwarrior.enable = true;
disko = {
devices.disk.main = {
device = "/dev/vda";

10
modules/default.nix Normal file
View File

@@ -0,0 +1,10 @@
{ lib, ... }:
{
imports =
let
dirs = lib.attrNames (lib.filterAttrs (_: v: v == "directory") (builtins.readDir ./.));
hasDef = name: builtins.pathExists ./${name}/default.nix;
in
map (name: ./${name}) (builtins.filter hasDef dirs);
}

View File

@@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./gnome
./niri
];
}