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 let
# Folders folderModules = [
bat = import ./modules/bat; "bat"
firefox = import ./modules/firefox; "firefox"
obs-studio = import ./modules/obs-studio; "obs-studio"
qbittorrent = import ./modules/qbittorrent; "qbittorrent"
steam = import ./modules/steam; "steam"
# Files ];
bottom = import ./modules/bottom.nix;
brave = import ./modules/brave.nix; fileModules = [
cursor = import ./modules/cursor.nix; "bottom"
direnv = import ./modules/direnv.nix; "brave"
freetube = import ./modules/freetube.nix; "direnv"
git = import ./modules/git.nix; "freetube"
helix = import ./modules/helix.nix; "git"
home-manager = import ./modules/home-manager.nix; "helix"
lazygit = import ./modules/lazygit.nix; "home-manager"
misc-android = import ./modules/misc/android.nix; "lazygit"
misc-commandLine = import ./modules/misc/command-line.nix; "mpv"
misc-fileManagement = import ./modules/misc/file-management.nix; "nextcloud"
misc-gaming = import ./modules/misc/gaming.nix; "nushell"
misc-gnomeExtras = import ./modules/misc/gnome-extras.nix; "starship"
misc-internet-extras = import ./modules/misc/internet-extras.nix; "vscode"
misc-internet = import ./modules/misc/internet.nix; "wezterm"
misc-jellyfin = import ./modules/misc/jellyfin.nix; "yazi"
misc-kdeExtras = import ./modules/misc/kde-extras.nix; "zellij"
misc-media = import ./modules/misc/media.nix; "zoxide"
misc-privacy = import ./modules/misc/privacy.nix; ];
misc-productionArt = import ./modules/misc/production-art.nix;
misc-productionArtExtras = import ./modules/misc/production-art-extras.nix; miscModules = [
misc-productionAudio = import ./modules/misc/production-audio.nix; "android"
misc-productionCode = import ./modules/misc/production-code.nix; "commandLine"
misc-productionVideo = import ./modules/misc/production-video.nix; "desktop"
misc-productionWriting = import ./modules/misc/production-writing.nix; "entertainment"
misc-virtualization = import ./modules/misc/virtualization.nix; "internet"
misc-yazi = import ./modules/misc/yazi.nix; "productionArt"
misc-wpsoffice = import ./modules/misc/wpsoffice.nix; "productionAudio"
mpv = import ./modules/mpv.nix; "productionVideo"
nextcloud = import ./modules/nextcloud.nix; "productionWriting"
nushell = import ./modules/nushell.nix; "tracking"
starship = import ./modules/starship.nix; "virtualization"
vscode = import ./modules/vscode.nix; ];
wezterm = import ./modules/wezterm.nix;
yazi = import ./modules/yazi.nix; modulesPath = ./modules;
zellij = import ./modules/zellij.nix;
zoxide = import ./modules/zoxide.nix; 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 { in {
flake.homeModules = { flake.homeModules = {
inherit desktop = {
# Folders imports = with modules; [
bat brave
firefox firefox
obs-studio misc-android
qbittorrent misc-desktop
# Files misc-internet
qbittorrent
bottom vscode
brave ];
cursor };
direnv
freetube entertainment = {
git imports = with modules; [
helix freetube
home-manager misc-entertainment
lazygit mpv
misc-android steam
misc-commandLine ];
misc-fileManagement };
misc-gaming
misc-gnomeExtras productionArt = {
misc-internet imports = with modules; [
misc-internet-extras misc-productionArt
misc-jellyfin ];
misc-kdeExtras };
misc-media
misc-privacy productionAudio = {
misc-productionArtExtras imports = with modules; [
misc-productionArt misc-productionAudio
misc-productionAudio ];
misc-productionCode };
misc-productionVideo
misc-productionWriting productionVideo = {
misc-virtualization imports = with modules; [
misc-yazi misc-productionVideo
mpv obs-studio
nextcloud ];
nushell };
starship
steam productionWriting = {
vscode imports = with modules; [
wezterm misc-productionWriting
yazi ];
zellij };
zoxide
; shared = {
commandLine = { imports = with modules; [
imports = [
bat bat
bottom bottom
direnv direnv
@ -102,10 +108,8 @@ in {
helix helix
home-manager home-manager
lazygit lazygit
misc-android
misc-commandLine misc-commandLine
misc-virtualization misc-virtualization
misc-yazi
nushell nushell
starship starship
wezterm wezterm
@ -114,93 +118,5 @@ in {
zoxide 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,125 +1,104 @@
let let
# Folders serviceModules = [
services = import ./modules/services; "services"
# Files ];
accounts = import ./modules/accounts.nix;
android = import ./modules/android.nix; fileModules = [
audio = import ./modules/audio.nix; "accounts"
bluetooth = import ./modules/bluetooth.nix; "android"
corectrl = import ./modules/corectrl.nix; "audio"
dconf = import ./modules/dconf.nix; "bluetooth"
disks = import ./modules/disks.nix; "corectrl"
doas = import ./modules/doas.nix; "dconf"
environment = import ./modules/environment.nix; "disks"
firejail = import ./modules/firejail.nix; "doas"
flatpak = import ./modules/flatpak.nix; "environment"
fonts = import ./modules/fonts.nix; "firejail"
gnome = import ./modules/gnome.nix; "flatpak"
greetd = import ./modules/greetd.nix; "fonts"
gvfs = import ./modules/gvfs.nix; "gnome"
home-manager = import ./modules/home-manager.nix; "greetd"
locale = import ./modules/locale.nix; "gvfs"
network = import ./modules/network.nix; "home-manager"
nix = import ./modules/nix.nix; "locale"
ollama = import ./modules/ollama.nix; "network"
plasma = import ./modules/plasma.nix; "nix"
printing = import ./modules/printing.nix; "nur"
rsyncd = import ./modules/rsyncd.nix; "ollama"
regreet = import ./modules/regreet.nix; "plasma"
sddm = import ./modules/sddm.nix; "printing"
ssh = import ./modules/ssh.nix; "regreet"
steam = import ./modules/steam.nix; "rsyncd"
syncthing = import ./modules/syncthing.nix; "sddm"
sops = import ./modules/sops.nix; "sops"
sysstat = import ./modules/sysstat.nix; "ssh"
system = import ./modules/system.nix; "steam"
virtualization = import ./modules/virtualization.nix; "syncthing"
xserver = import ./modules/xserver.nix; "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 { in {
flake = { flake.nixosModules = {
nixosModules = { personal = {
inherit imports = with modules; [
accounts
android android
audio audio
bluetooth bluetooth
corectrl corectrl
dconf dconf
disks disks
doas
environment
firejail firejail
flatpak flatpak
fonts fonts
gnome nur
greetd 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 gvfs
home-manager home-manager
locale locale
network
nix nix
ollama
ssh
plasma
printing
regreet
rsyncd rsyncd
sddm
services
sops sops
steam ssh
syncthing
sysstat
system system
virtualization
xserver 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
];
};
}; };
}; };
} }

View file

@ -1,33 +1,27 @@
{ let
imports = [ serviceFolders = [
# Folders "mastodon"
./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
]; ];
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, ...}: { {lib, ...}: let
imports = [ desktopFiles = [
./boot.nix "boot"
./filesystem.nix "filesystem"
./graphics.nix "graphics"
./hardware.nix "hardware"
./networking.nix "networking"
./sops.nix "sops"
]; ];
in {
imports = map (file: ./${file}.nix) desktopFiles;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux"; nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
system.stateVersion = lib.mkForce "24.05"; system.stateVersion = lib.mkForce "24.05";
} }

View file

@ -1,12 +1,14 @@
{lib, ...}: { {lib, ...}: let
imports = [ laptopFiles = [
./boot.nix "boot"
./filesystem.nix "filesystem"
./graphics.nix "graphics"
./hardware.nix "hardware"
./networking.nix "networking"
./sops.nix "sops"
]; ];
in {
imports = map (file: ./${file}.nix) laptopFiles;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux"; nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
system.stateVersion = lib.mkForce "24.05"; system.stateVersion = lib.mkForce "24.05";
} }

View file

@ -1,12 +1,14 @@
{lib, ...}: { {lib, ...}: let
imports = [ serverFiles = [
./boot.nix "boot"
./filesystem.nix "filesystem"
./graphics.nix "graphics"
./hardware.nix "hardware"
./networking.nix "networking"
./sops.nix "sops"
]; ];
in {
imports = map (file: ./${file}.nix) serverFiles;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux"; nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
system.stateVersion = lib.mkForce "24.05"; system.stateVersion = lib.mkForce "24.05";
} }