use regular paths for profiles and suites and stuff instead of the horrible mess of attrsets i was generating

This commit is contained in:
xunuwu 2025-05-10 08:20:39 +02:00
parent 530f517d22
commit b9d92a9dc4
10 changed files with 181 additions and 200 deletions

View file

@ -6,19 +6,18 @@
... ...
} @ inputs: let } @ inputs: let
mylib = import ./lib nixpkgs.lib; mylib = import ./lib nixpkgs.lib;
systemProfiles = mylib.loadTree2 ./sys/profiles; systemProfiles = ./sys/profiles;
homeProfiles = mylib.loadTreeInf ./home/profiles; homeProfiles = ./home/profiles;
homeSuites = mylib.loadBranch ./home/suites; homeSuites = ./home/suites;
vars = builtins.mapAttrs (_: v: import v) (mylib.loadBranch ./vars); vars = import ./vars;
in in
flake-parts.lib.mkFlake {inherit inputs;} { flake-parts.lib.mkFlake {inherit inputs;} {
systems = ["x86_64-linux"]; systems = ["x86_64-linux"];
flake._mylib = mylib; # for debugging :3 flake.nixosConfigurations = mylib.loadConfigurations ./sys/machines (hostname: {
flake._vars = vars; # for debugging :3
flake.nixosConfigurations = mylib.loadConfigurations ./sys/machines {
inherit inputs self systemProfiles homeProfiles homeSuites vars; inherit inputs self systemProfiles homeProfiles homeSuites vars;
}; hostVars = ./vars/${hostname};
});
perSystem = {pkgs, ...}: { perSystem = {pkgs, ...}: {
imports = [ imports = [

View file

@ -4,20 +4,20 @@
pkgs, pkgs,
... ...
}: { }: {
imports = with homeProfiles; [ imports = map (x: homeProfiles + x) [
terminal.programs.xdg /terminal/programs/xdg.nix
terminal.programs.comma /terminal/programs/comma.nix
editors.nvim /editors/nvim.nix
terminal.emulator.foot /terminal/emulator/foot.nix
programs.desktop.default /programs/desktop/default.nix
programs.desktop.sway.default /programs/desktop/sway/default.nix
programs.media.mpv /programs/media/mpv.nix
services.playerctl /services/playerctl.nix
services.polkit-agent /services/polkit-agent.nix
]; ];
wayland.windowManager.sway.config.output."HDMI-A-1".scale = "2.0"; wayland.windowManager.sway.config.output."HDMI-A-1".scale = "2.0";

View file

@ -5,72 +5,70 @@
homeProfiles, homeProfiles,
... ...
}: { }: {
imports = with homeProfiles; [ imports =
./defaults.nix [
./outputs.nix ./defaults.nix
./outputs.nix
]
++ (map (x: homeProfiles + x) [
/secrets
secrets.default /default.nix
default /terminal/shell/zsh.nix
/terminal/shell/fish.nix
terminal.shell.zsh /terminal/programs/xdg.nix
terminal.shell.fish /terminal/programs/direnv.nix
/terminal/programs/tmux.nix
/terminal/programs/comma.nix
/terminal/programs/irssi.nix
/terminal/programs/git.nix
/terminal/programs/github.nix
/terminal/programs/jujutsu.nix
terminal.programs.xdg /editors/nvim.nix
terminal.programs.direnv
terminal.programs.tmux
terminal.programs.comma
terminal.programs.irssi
terminal.programs.git
terminal.programs.github
terminal.programs.jujutsu
# editors.emacs /programs/browsers/firefox/default.nix
editors.nvim /programs/browsers/tor.nix
/programs/browsers/chromium.nix
programs.browsers.firefox.default /terminal/emulator/foot.nix
programs.browsers.tor
programs.browsers.chromium
# terminal.emulator.wezterm /themes/dark/default.nix
terminal.emulator.foot
themes.dark.default # desktop
/programs/desktop/default.nix
/programs/desktop/sway/default.nix
# desktop # development
programs.desktop.default /develop/common.nix
programs.desktop.sway.default /develop/docs.nix
# development /develop/langs/haskell.nix
develop.common /develop/langs/go.nix
develop.docs /develop/langs/rust.nix
/develop/langs/elixir.nix
/develop/langs/nix.nix
/develop/langs/zig.nix
/develop/langs/lua.nix
/develop/langs/c.nix
develop.langs.haskell # programs
develop.langs.go /programs/misc/discord.nix
develop.langs.rust /programs/misc/obs.nix
develop.langs.elixir
# develop.langs.uiua
develop.langs.nix
develop.langs.zig
develop.langs.lua
develop.langs.c
# programs /programs/music/beets.nix
programs.misc.discord /programs/music/cmus.nix
programs.misc.obs
programs.music.beets /programs/media/mpv.nix
programs.music.cmus
programs.media.mpv # gaming
/programs/games/default.nix
# gaming /services/playerctl.nix
programs.games.default /services/polkit-agent.nix
]);
services.playerctl
services.polkit-agent
# services.appusage
];
wayland.windowManager.sway.extraConfig = '' wayland.windowManager.sway.extraConfig = ''
exec obs --startreplaybuffer --disable-shutdown-check --minimize-to-tray exec obs --startreplaybuffer --disable-shutdown-check --minimize-to-tray

View file

@ -1,29 +1,10 @@
l: let l: let
b = builtins; b = builtins;
in rec { in {
loadBranch = branch: loadConfigurations = dir: specialArgsFromHost:
l.mapAttrs' (leaf: _: {
name = l.removeSuffix ".nix" leaf;
value = /${branch}/${leaf};
}) (b.readDir /${branch});
loadTree2 = dir: (l.mapAttrs (branch: _: loadBranch /${dir}/${branch})) (b.readDir dir);
loadTreeInf = dir:
l.mapAttrs' (
name: value: {
name = l.removeSuffix ".nix" name;
value =
if value == "directory"
then loadTreeInf (dir + /${name})
else (dir + /${name});
}
) (b.readDir dir);
loadConfigurations = dir: specialArgs:
(b.mapAttrs (name: _: (b.mapAttrs (name: _:
l.nixosSystem { l.nixosSystem {
modules = [(dir + /${name})]; modules = [(dir + /${name})];
inherit specialArgs; specialArgs = specialArgsFromHost name;
})) (b.readDir dir); })) (b.readDir dir);
} }

View file

@ -6,50 +6,50 @@
lib, lib,
... ...
}: { }: {
imports = with systemProfiles; [ imports =
inputs.hardware.nixosModules.common-cpu-intel [
inputs.vpn-confinement.nixosModules.default inputs.hardware.nixosModules.common-cpu-intel
inputs.nix-minecraft.nixosModules.minecraft-servers inputs.vpn-confinement.nixosModules.default
inputs.nix-minecraft.nixosModules.minecraft-servers
./hardware.nix ./hardware.nix
./lab ./lab
./roblox-playtime.nix ./roblox-playtime.nix
./desktop.nix ./desktop.nix
secrets.default {
secrets.hopper home-manager = {
backupFileExtension = "hm-backup";
users.desktop.imports = [
(homeSuites + /hopper)
{home.stateVersion = "24.11";}
];
extraSpecialArgs = specialArgs;
};
}
]
++ (map (x: systemProfiles + x) [
/secrets/default.nix
/secrets/hopper/default.nix
programs.home-manager /programs/home-manager.nix
core.security /core/security.nix
core.locale /core/locale.nix
core.tools /core/tools.nix
core.ssh /core/ssh.nix
core.deploy /core/deploy.nix
hardware.graphics /hardware/graphics.nix
hardware.steam-hardware /hardware/steam-hardware.nix
hardware.bluetooth /hardware/bluetooth.nix
nix.default # TODO slim this down /nix/default.nix # TODO slim this down
network.tailscale /network/tailscale.nix
network.avahi /network/avahi.nix
network.networkd /network/networkd.nix
]);
# services.syncthing # TODO make syncthing not rely on having "xun" user
{
home-manager = {
backupFileExtension = "hm-backup";
users.desktop.imports = [
homeSuites.hopper
{home.stateVersion = "24.11";}
];
extraSpecialArgs = specialArgs;
};
}
];
nixpkgs.config = { nixpkgs.config = {
allowUnfreePredicate = pkg: allowUnfreePredicate = pkg:

View file

@ -3,7 +3,7 @@
vars, vars,
... ...
}: let }: let
inherit (vars.common) domain; inherit (vars) domain;
in { in {
security.acme = { security.acme = {
acceptTerms = true; acceptTerms = true;

View file

@ -4,7 +4,7 @@
inputs, inputs,
... ...
}: let }: let
inherit (vars.common) domain; inherit (vars) domain;
caddyPort = 8336; caddyPort = 8336;
bridge = config.vpnNamespaces."wg".bridgeAddress; bridge = config.vpnNamespaces."wg".bridgeAddress;
in { in {

View file

@ -3,7 +3,7 @@
vars, vars,
... ...
}: let }: let
inherit (vars.common) domain; inherit (vars) domain;
bridge = config.vpnNamespaces."wg".bridgeAddress; bridge = config.vpnNamespaces."wg".bridgeAddress;
in { in {
services.homepage-dashboard = { services.homepage-dashboard = {

View file

@ -7,87 +7,90 @@
homeSuites, homeSuites,
... ...
}: { }: {
imports = with systemProfiles; [ # imports = with systemProfiles; [
./hardware.nix imports =
./hibernate-boot.nix [
./samba-mount.nix ./hardware.nix
./wireguard.nix ./hibernate-boot.nix
./restic-server.nix ./samba-mount.nix
./autologin.nix ./wireguard.nix
./restic-server.nix
./autologin.nix
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
secrets.default {
secrets.nixdesk home-manager = {
backupFileExtension = "hm-backup";
users.xun.imports = [
(homeSuites + /nixdesk)
inputs.sops-nix.homeManagerModules.sops
{home.stateVersion = "23.11";}
];
extraSpecialArgs = specialArgs;
};
}
]
++ (map (x: systemProfiles + x) [
/secrets
/secrets/nixdesk
core.security /core/security.nix
core.keyring /core/keyring.nix
core.users /core/users.nix
core.ssh /core/ssh.nix
core.locale /core/locale.nix
nix.default /nix
programs.zsh /programs/zsh.nix
programs.fish /programs/fish.nix
core.tools /core/tools.nix
core.compat /core/compat.nix
core.boot /core/boot.nix
# core.docs # core.docs
core.gvfs /core/gvfs.nix
nix.gc /nix/gc.nix
hardware.graphics /hardware/graphics.nix
hardware.steam-hardware /hardware/steam-hardware.nix
hardware.bluetooth /hardware/bluetooth.nix
hardware.qmk /hardware/qmk.nix
network.networkd /network/networkd.nix
network.avahi /network/avahi.nix
network.localsend /network/localsend.nix
network.tailscale /network/tailscale.nix
network.goldberg /network/goldberg.nix
desktop.sway /desktop/sway.nix
programs.dconf /programs/dconf.nix
programs.fonts /programs/fonts.nix
programs.home-manager /programs/home-manager.nix
# programs.qt # programs.qt
programs.adb /programs/adb.nix
programs.openrgb /programs/openrgb.nix
programs.tools /programs/tools.nix
programs.thunar /programs/thunar.nix
programs.corectrl /programs/corectrl.nix
services.default /services
services.pipewire /services/pipewire.nix
services.flatpak /services/flatpak.nix
# services.syncthing # services.syncthing
services.waydroid /services/waydroid.nix
services.virt-manager /services/virt-manager.nix
services.sunshine /services/sunshine.nix
# network.wifi # network.wifi
themes.dark /themes/dark.nix
programs.gamemode /programs/gamemode.nix
programs.gamescope /programs/gamescope.nix
programs.steam /programs/steam.nix
programs.RE /programs/RE
]);
{
home-manager = {
backupFileExtension = "hm-backup";
users.xun.imports = [
homeSuites.nixdesk
inputs.sops-nix.homeManagerModules.sops
{home.stateVersion = "23.11";}
];
extraSpecialArgs = specialArgs;
};
}
];
networking.hostName = "nixdesk"; networking.hostName = "nixdesk";