refactor: debloated imports and modules

This commit is contained in:
Nick 2024-11-03 17:48:32 -06:00
parent 489b64c9c7
commit 7351c5cc45
6 changed files with 237 additions and 342 deletions

View file

@ -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
desktop = {
imports = with modules; [
brave
firefox
obs-studio
misc-android
misc-desktop
misc-internet
qbittorrent
# Files
vscode
];
};
bottom
brave
cursor
direnv
entertainment = {
imports = with modules; [
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
misc-entertainment
mpv
nextcloud
nushell
starship
steam
vscode
wezterm
yazi
zellij
zoxide
;
commandLine = {
imports = [
];
};
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
];
};
};
}

View file

@ -1,81 +1,57 @@
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
android
audio
bluetooth
corectrl
dconf
disks
doas
environment
firejail
flatpak
fonts
gnome
greetd
gvfs
home-manager
locale
network
nix
ollama
ssh
plasma
printing
regreet
rsyncd
sddm
services
sops
steam
syncthing
sysstat
system
virtualization
xserver
;
flake.nixosModules = {
personal = {
imports = [
imports = with modules; [
android
audio
bluetooth
@ -85,6 +61,7 @@ in {
firejail
flatpak
fonts
nur
plasma
printing
sddm
@ -93,19 +70,22 @@ in {
virtualization
];
};
desktop = {
imports = [
imports = with modules; [
syncthing
# ollama
ollama
];
};
server = {
imports = [
imports = with modules; [
services
];
};
shared = {
imports = [
imports = with modules; [
accounts
doas
environment
@ -114,12 +94,11 @@ in {
locale
nix
rsyncd
sops
ssh
system
sops
xserver
];
};
};
};
}

View file

@ -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);
}

View file

@ -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";
}

View file

@ -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";
}

View file

@ -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";
}