diff --git a/home-manager/default.nix b/home-manager/default.nix index 2ba3e5a..bea564c 100755 --- a/home-manager/default.nix +++ b/home-manager/default.nix @@ -1,100 +1,106 @@ let - # Folders - bat = import ./modules/bat; - firefox = import ./modules/firefox; - obs-studio = import ./modules/obs-studio; - qbittorrent = import ./modules/qbittorrent; - steam = import ./modules/steam; - # Files - bottom = import ./modules/bottom.nix; - brave = import ./modules/brave.nix; - cursor = import ./modules/cursor.nix; - direnv = import ./modules/direnv.nix; - freetube = import ./modules/freetube.nix; - git = import ./modules/git.nix; - helix = import ./modules/helix.nix; - home-manager = import ./modules/home-manager.nix; - lazygit = import ./modules/lazygit.nix; - misc-android = import ./modules/misc/android.nix; - misc-commandLine = import ./modules/misc/command-line.nix; - misc-fileManagement = import ./modules/misc/file-management.nix; - misc-gaming = import ./modules/misc/gaming.nix; - misc-gnomeExtras = import ./modules/misc/gnome-extras.nix; - misc-internet-extras = import ./modules/misc/internet-extras.nix; - misc-internet = import ./modules/misc/internet.nix; - misc-jellyfin = import ./modules/misc/jellyfin.nix; - misc-kdeExtras = import ./modules/misc/kde-extras.nix; - misc-media = import ./modules/misc/media.nix; - misc-privacy = import ./modules/misc/privacy.nix; - misc-productionArt = import ./modules/misc/production-art.nix; - misc-productionArtExtras = import ./modules/misc/production-art-extras.nix; - misc-productionAudio = import ./modules/misc/production-audio.nix; - misc-productionCode = import ./modules/misc/production-code.nix; - misc-productionVideo = import ./modules/misc/production-video.nix; - misc-productionWriting = import ./modules/misc/production-writing.nix; - misc-virtualization = import ./modules/misc/virtualization.nix; - misc-yazi = import ./modules/misc/yazi.nix; - misc-wpsoffice = import ./modules/misc/wpsoffice.nix; - mpv = import ./modules/mpv.nix; - nextcloud = import ./modules/nextcloud.nix; - nushell = import ./modules/nushell.nix; - starship = import ./modules/starship.nix; - vscode = import ./modules/vscode.nix; - wezterm = import ./modules/wezterm.nix; - yazi = import ./modules/yazi.nix; - zellij = import ./modules/zellij.nix; - zoxide = import ./modules/zoxide.nix; + folderModules = [ + "bat" + "firefox" + "obs-studio" + "qbittorrent" + "steam" + ]; + + fileModules = [ + "bottom" + "brave" + "direnv" + "freetube" + "git" + "helix" + "home-manager" + "lazygit" + "mpv" + "nextcloud" + "nushell" + "starship" + "vscode" + "wezterm" + "yazi" + "zellij" + "zoxide" + ]; + + miscModules = [ + "android" + "commandLine" + "desktop" + "entertainment" + "internet" + "productionArt" + "productionAudio" + "productionVideo" + "productionWriting" + "tracking" + "virtualization" + ]; + + modulesPath = ./modules; + + importFolder = name: {"${name}" = import (modulesPath + "/${name}");}; + importFile = name: {"${name}" = import (modulesPath + "/${name}.nix");}; + importMisc = name: {"misc-${name}" = import (modulesPath + "/misc/${name}.nix");}; + + modules = + builtins.foldl' (a: b: a // b) {} (map importFolder folderModules) + // builtins.foldl' (a: b: a // b) {} (map importFile fileModules) + // builtins.foldl' (a: b: a // b) {} (map importMisc miscModules); in { flake.homeModules = { - inherit - # Folders - bat - firefox - obs-studio - qbittorrent - # Files - - bottom - brave - cursor - direnv - freetube - git - helix - home-manager - lazygit - misc-android - misc-commandLine - misc-fileManagement - misc-gaming - misc-gnomeExtras - misc-internet - misc-internet-extras - misc-jellyfin - misc-kdeExtras - misc-media - misc-privacy - misc-productionArtExtras - misc-productionArt - misc-productionAudio - misc-productionCode - misc-productionVideo - misc-productionWriting - misc-virtualization - misc-yazi - mpv - nextcloud - nushell - starship - steam - vscode - wezterm - yazi - zellij - zoxide - ; - commandLine = { - imports = [ + desktop = { + imports = with modules; [ + brave + firefox + misc-android + misc-desktop + misc-internet + qbittorrent + vscode + ]; + }; + + entertainment = { + imports = with modules; [ + freetube + misc-entertainment + mpv + steam + ]; + }; + + productionArt = { + imports = with modules; [ + misc-productionArt + ]; + }; + + productionAudio = { + imports = with modules; [ + misc-productionAudio + ]; + }; + + productionVideo = { + imports = with modules; [ + misc-productionVideo + obs-studio + ]; + }; + + productionWriting = { + imports = with modules; [ + misc-productionWriting + ]; + }; + + shared = { + imports = with modules; [ bat bottom direnv @@ -102,10 +108,8 @@ in { helix home-manager lazygit - misc-android misc-commandLine misc-virtualization - misc-yazi nushell starship wezterm @@ -114,93 +118,5 @@ in { zoxide ]; }; - entertainment = { - imports = [ - misc-gaming - misc-media - freetube - mpv - steam - ]; - }; - extras = { - imports = [ - misc-gnomeExtras - misc-kdeExtras - ]; - }; - fileManagement = { - imports = [ - misc-fileManagement - ]; - }; - internetExtras = { - imports = [ - misc-internet-extras - ]; - }; - firefoxHM = { - imports = [ - firefox - ]; - }; - braveHM = { - imports = [ - brave - ]; - }; - internet = { - imports = [ - misc-internet - qbittorrent - ]; - }; - jellyfin = { - imports = [ - misc-jellyfin - ]; - }; - privacy = { - imports = [ - misc-privacy - ]; - }; - productionArtExtras = { - imports = [ - misc-productionArtExtras - ]; - }; - productionArt = { - imports = [ - misc-productionArt - ]; - }; - productionAudio = { - imports = [ - misc-productionAudio - ]; - }; - productionCode = { - imports = [ - misc-productionCode - vscode - ]; - }; - productionVideo = { - imports = [ - misc-productionVideo - obs-studio - ]; - }; - productionWriting = { - imports = [ - misc-productionWriting - ]; - }; - wpsOffice = { - imports = [ - misc-wpsoffice - ]; - }; }; } diff --git a/nixos/default.nix b/nixos/default.nix index d3de00a..c270403 100755 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -1,125 +1,104 @@ let - # Folders - services = import ./modules/services; - # Files - accounts = import ./modules/accounts.nix; - android = import ./modules/android.nix; - audio = import ./modules/audio.nix; - bluetooth = import ./modules/bluetooth.nix; - corectrl = import ./modules/corectrl.nix; - dconf = import ./modules/dconf.nix; - disks = import ./modules/disks.nix; - doas = import ./modules/doas.nix; - environment = import ./modules/environment.nix; - firejail = import ./modules/firejail.nix; - flatpak = import ./modules/flatpak.nix; - fonts = import ./modules/fonts.nix; - gnome = import ./modules/gnome.nix; - greetd = import ./modules/greetd.nix; - gvfs = import ./modules/gvfs.nix; - home-manager = import ./modules/home-manager.nix; - locale = import ./modules/locale.nix; - network = import ./modules/network.nix; - nix = import ./modules/nix.nix; - ollama = import ./modules/ollama.nix; - plasma = import ./modules/plasma.nix; - printing = import ./modules/printing.nix; - rsyncd = import ./modules/rsyncd.nix; - regreet = import ./modules/regreet.nix; - sddm = import ./modules/sddm.nix; - ssh = import ./modules/ssh.nix; - steam = import ./modules/steam.nix; - syncthing = import ./modules/syncthing.nix; - sops = import ./modules/sops.nix; - sysstat = import ./modules/sysstat.nix; - system = import ./modules/system.nix; - virtualization = import ./modules/virtualization.nix; - xserver = import ./modules/xserver.nix; + serviceModules = [ + "services" + ]; + + fileModules = [ + "accounts" + "android" + "audio" + "bluetooth" + "corectrl" + "dconf" + "disks" + "doas" + "environment" + "firejail" + "flatpak" + "fonts" + "gnome" + "greetd" + "gvfs" + "home-manager" + "locale" + "network" + "nix" + "nur" + "ollama" + "plasma" + "printing" + "regreet" + "rsyncd" + "sddm" + "sops" + "ssh" + "steam" + "syncthing" + "sysstat" + "system" + "virtualization" + "xserver" + ]; + + modulesPath = ./modules; + + importFolder = name: {"${name}" = import (modulesPath + "/${name}");}; + importFile = name: {"${name}" = import (modulesPath + "/${name}.nix");}; + + modules = + builtins.foldl' (a: b: a // b) {} (map importFolder serviceModules) + // builtins.foldl' (a: b: a // b) {} (map importFile fileModules); in { - flake = { - nixosModules = { - inherit - accounts + flake.nixosModules = { + personal = { + imports = with modules; [ android audio bluetooth corectrl dconf disks - doas - environment firejail flatpak fonts - gnome - greetd + nur + plasma + printing + sddm + steam + sysstat + virtualization + ]; + }; + + desktop = { + imports = with modules; [ + syncthing + ollama + ]; + }; + + server = { + imports = with modules; [ + services + ]; + }; + + shared = { + imports = with modules; [ + accounts + doas + environment gvfs home-manager locale - network nix - ollama - ssh - plasma - printing - regreet rsyncd - sddm - services sops - steam - syncthing - sysstat + ssh system - virtualization xserver - ; - personal = { - imports = [ - android - audio - bluetooth - corectrl - dconf - disks - firejail - flatpak - fonts - plasma - printing - sddm - steam - sysstat - virtualization - ]; - }; - desktop = { - imports = [ - syncthing - # ollama - ]; - }; - server = { - imports = [ - services - ]; - }; - shared = { - imports = [ - accounts - doas - environment - gvfs - home-manager - locale - nix - rsyncd - ssh - system - sops - xserver - ]; - }; + ]; }; }; } diff --git a/nixos/modules/services/default.nix b/nixos/modules/services/default.nix index 42c334b..2a11793 100755 --- a/nixos/modules/services/default.nix +++ b/nixos/modules/services/default.nix @@ -1,33 +1,27 @@ -{ - imports = [ - # Folders - ./mastodon - # Files - ./acme.nix - ./caddy.nix - ./jellyfin.nix - ./logrotate.nix - ./minecraft.nix - ./ollama.nix - ./peertube.nix - ./postgresql.nix - ./owncast.nix - ./samba.nix - ./vaultwarden.nix - ./wiki.nix - - # These are all broken. - - # ./forgejo.nix - - # Partial Nginx configs make it nearly impossible to use alongside Caddy. 👇 - - # ./castopod.nix - - # The reverse proxy works, but something is cucked. - # Maybe the port, or some configuration thing. It's unclear. - # Might actually have to wait for the package to get uncucked. 👇 - - # ./nextcloud.nix +let + serviceFolders = [ + "mastodon" ]; + + serviceFiles = [ + "acme" + "caddy" + "jellyfin" + "logrotate" + "minecraft" + "ollama" + "peertube" + "postgresql" + "owncast" + "samba" + "vaultwarden" + "wiki" + # "forgejo" + # "castopod" + # "nextcloud" + ]; +in { + imports = + (map (folder: ./${folder}) serviceFolders) + ++ (map (file: ./${file}.nix) serviceFiles); } diff --git a/systems/desktop/default.nix b/systems/desktop/default.nix index e457f72..339814a 100755 --- a/systems/desktop/default.nix +++ b/systems/desktop/default.nix @@ -1,12 +1,14 @@ -{lib, ...}: { - imports = [ - ./boot.nix - ./filesystem.nix - ./graphics.nix - ./hardware.nix - ./networking.nix - ./sops.nix +{lib, ...}: let + desktopFiles = [ + "boot" + "filesystem" + "graphics" + "hardware" + "networking" + "sops" ]; +in { + imports = map (file: ./${file}.nix) desktopFiles; nixpkgs.hostPlatform = lib.mkForce "x86_64-linux"; system.stateVersion = lib.mkForce "24.05"; } diff --git a/systems/laptop/default.nix b/systems/laptop/default.nix index e457f72..590495e 100755 --- a/systems/laptop/default.nix +++ b/systems/laptop/default.nix @@ -1,12 +1,14 @@ -{lib, ...}: { - imports = [ - ./boot.nix - ./filesystem.nix - ./graphics.nix - ./hardware.nix - ./networking.nix - ./sops.nix +{lib, ...}: let + laptopFiles = [ + "boot" + "filesystem" + "graphics" + "hardware" + "networking" + "sops" ]; +in { + imports = map (file: ./${file}.nix) laptopFiles; nixpkgs.hostPlatform = lib.mkForce "x86_64-linux"; system.stateVersion = lib.mkForce "24.05"; } diff --git a/systems/server/default.nix b/systems/server/default.nix index e457f72..a3e0971 100755 --- a/systems/server/default.nix +++ b/systems/server/default.nix @@ -1,12 +1,14 @@ -{lib, ...}: { - imports = [ - ./boot.nix - ./filesystem.nix - ./graphics.nix - ./hardware.nix - ./networking.nix - ./sops.nix +{lib, ...}: let + serverFiles = [ + "boot" + "filesystem" + "graphics" + "hardware" + "networking" + "sops" ]; +in { + imports = map (file: ./${file}.nix) serverFiles; nixpkgs.hostPlatform = lib.mkForce "x86_64-linux"; system.stateVersion = lib.mkForce "24.05"; }