From b9d92a9dc46a4b7c8c7dde4153238b02d28e02ca Mon Sep 17 00:00:00 2001 From: xunuwu Date: Sat, 10 May 2025 08:20:39 +0200 Subject: [PATCH] use regular paths for profiles and suites and stuff instead of the horrible mess of attrsets i was generating --- flake.nix | 15 ++- home/suites/hopper/default.nix | 20 ++-- home/suites/nixdesk/default.nix | 100 ++++++++++--------- lib/default.nix | 25 +---- sys/machines/hopper/default.nix | 74 +++++++------- sys/machines/hopper/lab/acme.nix | 2 +- sys/machines/hopper/lab/caddy.nix | 2 +- sys/machines/hopper/lab/homepage.nix | 2 +- sys/machines/nixdesk/default.nix | 141 ++++++++++++++------------- vars/{common.nix => default.nix} | 0 10 files changed, 181 insertions(+), 200 deletions(-) rename vars/{common.nix => default.nix} (100%) diff --git a/flake.nix b/flake.nix index fb9d865..e060ca2 100644 --- a/flake.nix +++ b/flake.nix @@ -6,19 +6,18 @@ ... } @ inputs: let mylib = import ./lib nixpkgs.lib; - systemProfiles = mylib.loadTree2 ./sys/profiles; - homeProfiles = mylib.loadTreeInf ./home/profiles; - homeSuites = mylib.loadBranch ./home/suites; - vars = builtins.mapAttrs (_: v: import v) (mylib.loadBranch ./vars); + systemProfiles = ./sys/profiles; + homeProfiles = ./home/profiles; + homeSuites = ./home/suites; + vars = import ./vars; in flake-parts.lib.mkFlake {inherit inputs;} { systems = ["x86_64-linux"]; - flake._mylib = mylib; # for debugging :3 - flake._vars = vars; # for debugging :3 - flake.nixosConfigurations = mylib.loadConfigurations ./sys/machines { + flake.nixosConfigurations = mylib.loadConfigurations ./sys/machines (hostname: { inherit inputs self systemProfiles homeProfiles homeSuites vars; - }; + hostVars = ./vars/${hostname}; + }); perSystem = {pkgs, ...}: { imports = [ diff --git a/home/suites/hopper/default.nix b/home/suites/hopper/default.nix index 0fd33b8..1b02f66 100644 --- a/home/suites/hopper/default.nix +++ b/home/suites/hopper/default.nix @@ -4,20 +4,20 @@ pkgs, ... }: { - imports = with homeProfiles; [ - terminal.programs.xdg - terminal.programs.comma + imports = map (x: homeProfiles + x) [ + /terminal/programs/xdg.nix + /terminal/programs/comma.nix - editors.nvim - terminal.emulator.foot + /editors/nvim.nix + /terminal/emulator/foot.nix - programs.desktop.default - programs.desktop.sway.default + /programs/desktop/default.nix + /programs/desktop/sway/default.nix - programs.media.mpv + /programs/media/mpv.nix - services.playerctl - services.polkit-agent + /services/playerctl.nix + /services/polkit-agent.nix ]; wayland.windowManager.sway.config.output."HDMI-A-1".scale = "2.0"; diff --git a/home/suites/nixdesk/default.nix b/home/suites/nixdesk/default.nix index 90d7cc2..351653a 100644 --- a/home/suites/nixdesk/default.nix +++ b/home/suites/nixdesk/default.nix @@ -5,72 +5,70 @@ homeProfiles, ... }: { - imports = with homeProfiles; [ - ./defaults.nix - ./outputs.nix + imports = + [ + ./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.shell.fish + /terminal/programs/xdg.nix + /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 - terminal.programs.direnv - terminal.programs.tmux - terminal.programs.comma - terminal.programs.irssi - terminal.programs.git - terminal.programs.github - terminal.programs.jujutsu + /editors/nvim.nix - # editors.emacs - editors.nvim + /programs/browsers/firefox/default.nix + /programs/browsers/tor.nix + /programs/browsers/chromium.nix - programs.browsers.firefox.default - programs.browsers.tor - programs.browsers.chromium + /terminal/emulator/foot.nix - # terminal.emulator.wezterm - terminal.emulator.foot + /themes/dark/default.nix - themes.dark.default + # desktop + /programs/desktop/default.nix + /programs/desktop/sway/default.nix - # desktop - programs.desktop.default - programs.desktop.sway.default + # development + /develop/common.nix + /develop/docs.nix - # development - develop.common - develop.docs + /develop/langs/haskell.nix + /develop/langs/go.nix + /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 - develop.langs.go - develop.langs.rust - develop.langs.elixir - # develop.langs.uiua - develop.langs.nix - develop.langs.zig - develop.langs.lua - develop.langs.c + # programs + /programs/misc/discord.nix + /programs/misc/obs.nix - # programs - programs.misc.discord - programs.misc.obs + /programs/music/beets.nix + /programs/music/cmus.nix - programs.music.beets - programs.music.cmus + /programs/media/mpv.nix - programs.media.mpv + # gaming + /programs/games/default.nix - # gaming - programs.games.default - - services.playerctl - services.polkit-agent - # services.appusage - ]; + /services/playerctl.nix + /services/polkit-agent.nix + ]); wayland.windowManager.sway.extraConfig = '' exec obs --startreplaybuffer --disable-shutdown-check --minimize-to-tray diff --git a/lib/default.nix b/lib/default.nix index 743f92d..a2fde45 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,29 +1,10 @@ l: let b = builtins; -in rec { - loadBranch = branch: - 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: +in { + loadConfigurations = dir: specialArgsFromHost: (b.mapAttrs (name: _: l.nixosSystem { modules = [(dir + /${name})]; - inherit specialArgs; + specialArgs = specialArgsFromHost name; })) (b.readDir dir); } diff --git a/sys/machines/hopper/default.nix b/sys/machines/hopper/default.nix index c8dc6cf..50c6c1d 100644 --- a/sys/machines/hopper/default.nix +++ b/sys/machines/hopper/default.nix @@ -6,50 +6,50 @@ lib, ... }: { - imports = with systemProfiles; [ - inputs.hardware.nixosModules.common-cpu-intel - inputs.vpn-confinement.nixosModules.default - inputs.nix-minecraft.nixosModules.minecraft-servers + imports = + [ + inputs.hardware.nixosModules.common-cpu-intel + inputs.vpn-confinement.nixosModules.default + inputs.nix-minecraft.nixosModules.minecraft-servers - ./hardware.nix - ./lab - ./roblox-playtime.nix - ./desktop.nix + ./hardware.nix + ./lab + ./roblox-playtime.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.locale - core.tools - core.ssh - core.deploy + /core/security.nix + /core/locale.nix + /core/tools.nix + /core/ssh.nix + /core/deploy.nix - hardware.graphics - hardware.steam-hardware - hardware.bluetooth + /hardware/graphics.nix + /hardware/steam-hardware.nix + /hardware/bluetooth.nix - nix.default # TODO slim this down + /nix/default.nix # TODO slim this down - network.tailscale - network.avahi - network.networkd - - # 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; - }; - } - ]; + /network/tailscale.nix + /network/avahi.nix + /network/networkd.nix + ]); nixpkgs.config = { allowUnfreePredicate = pkg: diff --git a/sys/machines/hopper/lab/acme.nix b/sys/machines/hopper/lab/acme.nix index 95389a8..8510478 100644 --- a/sys/machines/hopper/lab/acme.nix +++ b/sys/machines/hopper/lab/acme.nix @@ -3,7 +3,7 @@ vars, ... }: let - inherit (vars.common) domain; + inherit (vars) domain; in { security.acme = { acceptTerms = true; diff --git a/sys/machines/hopper/lab/caddy.nix b/sys/machines/hopper/lab/caddy.nix index 4f8515f..7e8713d 100644 --- a/sys/machines/hopper/lab/caddy.nix +++ b/sys/machines/hopper/lab/caddy.nix @@ -4,7 +4,7 @@ inputs, ... }: let - inherit (vars.common) domain; + inherit (vars) domain; caddyPort = 8336; bridge = config.vpnNamespaces."wg".bridgeAddress; in { diff --git a/sys/machines/hopper/lab/homepage.nix b/sys/machines/hopper/lab/homepage.nix index 2a192f4..e6d1129 100644 --- a/sys/machines/hopper/lab/homepage.nix +++ b/sys/machines/hopper/lab/homepage.nix @@ -3,7 +3,7 @@ vars, ... }: let - inherit (vars.common) domain; + inherit (vars) domain; bridge = config.vpnNamespaces."wg".bridgeAddress; in { services.homepage-dashboard = { diff --git a/sys/machines/nixdesk/default.nix b/sys/machines/nixdesk/default.nix index aa16b85..f99ae30 100644 --- a/sys/machines/nixdesk/default.nix +++ b/sys/machines/nixdesk/default.nix @@ -7,87 +7,90 @@ homeSuites, ... }: { - imports = with systemProfiles; [ - ./hardware.nix - ./hibernate-boot.nix - ./samba-mount.nix - ./wireguard.nix - ./restic-server.nix - ./autologin.nix + # imports = with systemProfiles; [ + imports = + [ + ./hardware.nix + ./hibernate-boot.nix + ./samba-mount.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.keyring - core.users - core.ssh - core.locale - nix.default - programs.zsh - programs.fish - core.tools - core.compat - core.boot - # core.docs - core.gvfs + /core/security.nix + /core/keyring.nix + /core/users.nix + /core/ssh.nix + /core/locale.nix + /nix + /programs/zsh.nix + /programs/fish.nix + /core/tools.nix + /core/compat.nix + /core/boot.nix + # core.docs + /core/gvfs.nix - nix.gc + /nix/gc.nix - hardware.graphics - hardware.steam-hardware - hardware.bluetooth - hardware.qmk + /hardware/graphics.nix + /hardware/steam-hardware.nix + /hardware/bluetooth.nix + /hardware/qmk.nix - network.networkd - network.avahi - network.localsend - network.tailscale - network.goldberg + /network/networkd.nix + /network/avahi.nix + /network/localsend.nix + /network/tailscale.nix + /network/goldberg.nix - desktop.sway + /desktop/sway.nix - programs.dconf - programs.fonts - programs.home-manager - # programs.qt - programs.adb - programs.openrgb - programs.tools - programs.thunar - programs.corectrl + /programs/dconf.nix + /programs/fonts.nix + /programs/home-manager.nix + # programs.qt + /programs/adb.nix + /programs/openrgb.nix + /programs/tools.nix + /programs/thunar.nix + /programs/corectrl.nix - services.default - services.pipewire - services.flatpak + /services + /services/pipewire.nix + /services/flatpak.nix - # services.syncthing - services.waydroid - services.virt-manager - services.sunshine - # network.wifi + # services.syncthing + /services/waydroid.nix + /services/virt-manager.nix + /services/sunshine.nix + # network.wifi - themes.dark + /themes/dark.nix - programs.gamemode - programs.gamescope - programs.steam - programs.RE - - { - home-manager = { - backupFileExtension = "hm-backup"; - users.xun.imports = [ - homeSuites.nixdesk - inputs.sops-nix.homeManagerModules.sops - {home.stateVersion = "23.11";} - ]; - extraSpecialArgs = specialArgs; - }; - } - ]; + /programs/gamemode.nix + /programs/gamescope.nix + /programs/steam.nix + /programs/RE + ]); networking.hostName = "nixdesk"; diff --git a/vars/common.nix b/vars/default.nix similarity index 100% rename from vars/common.nix rename to vars/default.nix