nixos: Modularize NixOS and Home Manager config

This commit is contained in:
emmatherock
2026-06-17 15:53:15 -03:00
parent 60df66aab0
commit 8b6090acdb
31 changed files with 297 additions and 276 deletions
+2 -2
View File
@@ -1,8 +1,8 @@
{ {
"servers": { "servers": {
"nixos": { "nixos": {
"command": "uvx", "command": "nix",
"args": ["mcp-nixos"] "args": ["run", "github:utensils/mcp-nixos", "--"]
} }
} }
} }
-58
View File
@@ -1,58 +0,0 @@
{ config, lib, pkgs, apple-fonts, ... }:
{
imports = [
./hardware-configuration.nix
./secureboot.nix
./maintenance.nix
./users.nix
./network.nix
./desktop.nix
./containers.nix
];
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
plymouth.enable = true;
initrd.kernelModules = [ "amdgpu" ];
kernelPackages = pkgs.linuxPackages_cachyos ;
kernelParams = [ "quiet" "splash" "boot.shell_on_fail" "loglevel=3" "iommu=pt" ];
};
time.timeZone = "America/Argentina/Buenos_Aires";
i18n.defaultLocale = "es_AR.UTF-8";
services.hardware.deepcool-digital-linux.enable = true;
services.udev.extraRules = ''
# Intel RAPL energy usage file
ACTION=="add", SUBSYSTEM=="powercap", KERNEL=="intel-rapl:0", RUN+="${pkgs.coreutils}/bin/chmod 444 /sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj"
# DeepCool HID raw devices
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3633", MODE="0666"
# CH510 MESH DIGITAL
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="34d3", ATTRS{idProduct}=="1100", MODE="0666"
# Elgato 4K X (all speed modes)
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009b", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009c", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009d", MODE="0666", GROUP="plugdev"
# Elgato 4K S (all speed modes)
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="00af", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="00ae", MODE="0666", GROUP="plugdev"
# nvtop
SUBSYSTEM=="drm", KERNEL=="card*", SUBSYSTEMS=="pci", DRIVERS=="amdgpu", RUN+="/bin/sh -c 'chmod -R g+r /sys/class/drm/%k/device/'"
'';
nixpkgs.config.allowUnfree = true;
nix.settings = {
experimental-features = [ "nix-command" "flakes" ];
};
system.stateVersion = "25.11";
}
-126
View File
@@ -1,126 +0,0 @@
{pkgs, apple-fonts, vscode-server, inputs, ... }:
{
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
rocmPackages.clr.icd
];
};
services.desktopManager.plasma6.enable = true;
services.displayManager = {
plasma-login-manager.enable = true;
sddm = { enable = true; wayland.enable = true; };
autoLogin = { enable = true; user = "emmatherock"; };
};
security.pam.services.sddm.enableKwallet = true;
security.pam.services.login.enableKwallet = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
services.vscode-server.enable = true;
fonts.packages = with pkgs; [
noto-fonts noto-fonts-cjk-sans noto-fonts-color-emoji
nerd-fonts.fira-code nerd-fonts.jetbrains-mono
apple-fonts.packages.${pkgs.stdenv.hostPlatform.system}.sf-pro
apple-fonts.packages.${pkgs.stdenv.hostPlatform.system}.sf-mono
apple-fonts.packages.${pkgs.stdenv.hostPlatform.system}.ny
];
environment.systemPackages = with pkgs; [
# --- Base y Terminal ---
vim
git
wget
curl
fastfetch
(btop.override { cudaSupport = false; rocmSupport = true; })
nvtopPackages.full
ethtool
zsh
fish
starship
gemini-cli
rocmPackages.rocm-smi
# --- Herramientas de Sistema ---
btrfs-progs
kdePackages.partitionmanager
kdePackages.kalk
tailscale
distrobox
steam-run
localsend
inputs.lan-mouse.packages.${pkgs.stdenv.hostPlatform.system}.default
deskflow
# --- Trabajo y Notas ---
(vscode-with-extensions.override {
vscodeExtensions = with vscode-extensions; [
jnoortheen.nix-ide
ms-python.python
vscode-extensions.ms-dotnettools.csharp
vscode-extensions.ms-vscode.cpptools
vscode-extensions.golang.go
vscode-extensions.rust-lang.rust-analyzer
vscode-extensions.Google.gemini-cli-vscode-ide-companion
vscode-extensions.ms-azuretools.vscode-containers
ms-vscode-remote.remote-ssh
vscode-extensions.coolbear.systemd-unit-file
];
})
obsidian
# --- Multimedia y Comunicación ---
(discord.override {
# withOpenASAR = true; # can do this here too
withVencord = true;
})
spotify
chatterino7
plex-desktop
cider-2
inputs.sidra.packages.${pkgs.stdenv.hostPlatform.system}.default
telegram-desktop
# --- Audio y Video ---
carla
haruna
qpwgraph
pipewire
(pkgs.wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
obs-pipewire-audio-capture
obs-vkcapture
obs-composite-blur
obs-aitum-multistream
obs-vertical-canvas
];
})
vlc
# --- Gaming ---
faugus-launcher
plezy
protonplus
protontricks
proton-authenticator
mangohud
gamemode
cemu
];
programs = {
firefox.enable = true;
fish.enable = true;
starship.enable = true;
steam = { enable = true; remotePlay.openFirewall = true; };
};
}
Generated
+25 -61
View File
@@ -205,6 +205,26 @@
"type": "github" "type": "github"
} }
}, },
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1781706760,
"narHash": "sha256-jkSzXcasiZZ72q5f92FLHdIGAlGhX+124xQrbbczbF0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a2e23ee8f8699f8971b4fde86efc1b7ec1e19681",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"jovian": { "jovian": {
"inputs": { "inputs": {
"nix-github-actions": [ "nix-github-actions": [
@@ -229,25 +249,6 @@
"type": "github" "type": "github"
} }
}, },
"lan-mouse": {
"inputs": {
"nixpkgs": "nixpkgs_3",
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1781517640,
"narHash": "sha256-zCFYzIGWm5ShL/dO/SxwyHCCDerWveLiWpoeGDWKLi4=",
"owner": "feschber",
"repo": "lan-mouse",
"rev": "d1f41180e3f18cbc66d69dae39917b2d705c9abc",
"type": "github"
},
"original": {
"owner": "feschber",
"repo": "lan-mouse",
"type": "github"
}
},
"lanzaboote": { "lanzaboote": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
@@ -255,7 +256,7 @@
"nixpkgs" "nixpkgs"
], ],
"pre-commit": "pre-commit", "pre-commit": "pre-commit",
"rust-overlay": "rust-overlay_3" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {
"lastModified": 1765382359, "lastModified": 1765382359,
@@ -330,22 +331,6 @@
} }
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": {
"lastModified": 1772963539,
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1781074563, "lastModified": 1781074563,
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=", "narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
@@ -361,7 +346,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1682134069, "lastModified": 1682134069,
"narHash": "sha256-TnI/ZXSmRxQDt2sjRYK/8j8iha4B4zP2cnQCZZ3vp7k=", "narHash": "sha256-TnI/ZXSmRxQDt2sjRYK/8j8iha4B4zP2cnQCZZ3vp7k=",
@@ -414,9 +399,9 @@
"inputs": { "inputs": {
"apple-fonts": "apple-fonts", "apple-fonts": "apple-fonts",
"chaotic": "chaotic", "chaotic": "chaotic",
"lan-mouse": "lan-mouse", "home-manager": "home-manager_2",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_3",
"sidra": "sidra", "sidra": "sidra",
"vscode-server": "vscode-server" "vscode-server": "vscode-server"
} }
@@ -443,27 +428,6 @@
} }
}, },
"rust-overlay_2": { "rust-overlay_2": {
"inputs": {
"nixpkgs": [
"lan-mouse",
"nixpkgs"
]
},
"locked": {
"lastModified": 1773025773,
"narHash": "sha256-Wik8+xApNfldpUFjPmJkPdg0RrvUPSWGIZis+A/0N1w=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "3c06fdbbd36ff60386a1e590ee0cd52dcd1892bf",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_3": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
@@ -606,7 +570,7 @@
"vscode-server": { "vscode-server": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_4"
}, },
"locked": { "locked": {
"lastModified": 1770124655, "lastModified": 1770124655,
+14 -12
View File
@@ -1,5 +1,5 @@
{ {
description = "NixOS con Kernel CachyOS (vía xddxdd)"; description = "NixOS configuration for my homelab";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
@@ -13,31 +13,33 @@
url = "github:nix-community/lanzaboote/v1.0.0"; url = "github:nix-community/lanzaboote/v1.0.0";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
lan-mouse.url = "github:feschber/lan-mouse"; home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
vscode-server.url = "github:nix-community/nixos-vscode-server"; vscode-server.url = "github:nix-community/nixos-vscode-server";
}; };
outputs = { self, nixpkgs, chaotic, apple-fonts, lanzaboote, lan-mouse, sidra, vscode-server, ... }@inputs: { outputs = { self, nixpkgs, chaotic, apple-fonts, lanzaboote, home-manager, sidra, vscode-server, ... }@inputs: {
nixosConfigurations = { nixosConfigurations = {
miku-homelab = nixpkgs.lib.nixosSystem { miku-homelab = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit apple-fonts inputs; }; specialArgs = { inherit apple-fonts inputs; };
modules = [ modules = [
./configuration.nix ./hosts/miku-homelab
lanzaboote.nixosModules.lanzaboote lanzaboote.nixosModules.lanzaboote
home-manager.nixosModules.home-manager
vscode-server.nixosModules.default vscode-server.nixosModules.default
chaotic.nixosModules.default chaotic.nixosModules.default
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.emmatherock = import ./home/emmatherock/home.nix;
}
]; ];
}; };
}; };
}; };
nixConfig = {
extra-substituters = [
"https://lan-mouse.cachix.org/"
];
extra-trusted-public-keys = [
"lan-mouse.cachix.org-1:KlE2AEZUgkzNKM7BIzMQo8w9yJYqUpor1CAUNRY6OyM="
];
};
} }
+16
View File
@@ -0,0 +1,16 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
obsidian
(discord.override {
# withOpenASAR = true; # can do this here too
withVencord = true;
})
chatterino7
telegram-desktop
localsend
deskflow
kdePackages.kalk
kdePackages.partitionmanager
];
}
+12
View File
@@ -0,0 +1,12 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
faugus-launcher
plezy
protonplus
protontricks
proton-authenticator
mangohud
cemu
];
}
+3
View File
@@ -0,0 +1,3 @@
{
programs.git.enable = true;
}
+15
View File
@@ -0,0 +1,15 @@
{
imports = [
./desktop-apps.nix
./gaming.nix
./git.nix
./media.nix
./obs.nix
./packages.nix
./shell.nix
./vscode.nix
];
programs.home-manager.enable = true;
home.stateVersion = "25.11";
}
+11
View File
@@ -0,0 +1,11 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
spotify
cider-2
haruna
vlc
carla
qpwgraph
];
}
+14
View File
@@ -0,0 +1,14 @@
{ pkgs, ... }:
{
home.packages = [
(pkgs.wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
obs-pipewire-audio-capture
obs-vkcapture
obs-composite-blur
obs-aitum-multistream
obs-vertical-canvas
];
})
];
}
+12
View File
@@ -0,0 +1,12 @@
{ pkgs, inputs, ... }:
{
home.packages = with pkgs; [
# --- Base y Terminal ---
vim
fastfetch
(btop.override { cudaSupport = false; rocmSupport = true; })
nvtopPackages.full
gemini-cli
inputs.sidra.packages.${pkgs.stdenv.hostPlatform.system}.default
];
}
+4
View File
@@ -0,0 +1,4 @@
{
programs.fish.enable = true;
programs.starship.enable = true;
}
+19
View File
@@ -0,0 +1,19 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
(vscode-with-extensions.override {
vscodeExtensions = with vscode-extensions; [
jnoortheen.nix-ide
ms-python.python
vscode-extensions.ms-dotnettools.csharp
vscode-extensions.ms-vscode.cpptools
vscode-extensions.golang.go
vscode-extensions.rust-lang.rust-analyzer
vscode-extensions.Google.gemini-cli-vscode-ide-companion
vscode-extensions.ms-azuretools.vscode-containers
ms-vscode-remote.remote-ssh
vscode-extensions.coolbear.systemd-unit-file
];
})
];
}
+66
View File
@@ -0,0 +1,66 @@
{ pkgs, ... }:
{
imports = [
./hardware-configuration.nix
../../modules/security/secureboot.nix
../../modules/services/maintenance.nix
../../modules/system/audio.nix
../../modules/system/fonts.nix
../../modules/system/gaming.nix
../../modules/system/graphics.nix
../../modules/system/packages.nix
../../modules/system/shells.nix
../../modules/system/users.nix
../../modules/system/networking.nix
../../modules/desktop/firefox.nix
../../modules/desktop/plasma.nix
../../modules/services/containers.nix
../../modules/services/vscode-server.nix
];
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
plymouth.enable = true;
initrd.kernelModules = [ "amdgpu" ];
kernelPackages = pkgs.linuxPackages_cachyos ;
kernelParams = [ "quiet" "splash" "boot.shell_on_fail" "loglevel=3" "iommu=pt" ];
};
time.timeZone = "America/Argentina/Buenos_Aires";
i18n.defaultLocale = "es_AR.UTF-8";
services.hardware.deepcool-digital-linux.enable = true;
services.udev.extraRules = ''
# Intel RAPL energy usage file
ACTION=="add", SUBSYSTEM=="powercap", KERNEL=="intel-rapl:0", RUN+="${pkgs.coreutils}/bin/chmod 444 /sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj"
# DeepCool HID raw devices
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3633", MODE="0666"
# CH510 MESH DIGITAL
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="34d3", ATTRS{idProduct}=="1100", MODE="0666"
# Elgato 4K X (all speed modes)
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009b", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009c", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="009d", MODE="0666", GROUP="plugdev"
# Elgato 4K S (all speed modes)
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="00af", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0fd9", ATTR{idProduct}=="00ae", MODE="0666", GROUP="plugdev"
# nvtop
SUBSYSTEM=="drm", KERNEL=="card*", SUBSYSTEMS=="pci", DRIVERS=="amdgpu", RUN+="/bin/sh -c 'chmod -R g+r /sys/class/drm/%k/device/'"
'';
nixpkgs.config.allowUnfree = true;
nix.settings = {
experimental-features = [ "nix-command" "flakes" ];
};
system.stateVersion = "25.11";
}
-16
View File
@@ -1,16 +0,0 @@
{ pkgs, ... }:
{
# Optimización automática del storage (une archivos idénticos)
nix.settings.auto-optimise-store = true;
# Garbage Collector automático
nix.gc = {
automatic = true;
dates = "weekly"; # Se ejecuta cada semana
options = "--delete-older-than 14d"; # Borra lo que tenga más de 2 semanas
};
# Opcional: Limpieza de logs de Systemd para que no crezcan infinito
services.journald.extraConfig = "SystemMaxUse=500M";
}
+3
View File
@@ -0,0 +1,3 @@
{
programs.firefox.enable = true;
}
+10
View File
@@ -0,0 +1,10 @@
{ ... }:
{
services.desktopManager.plasma6.enable = true;
services.displayManager = {
plasma-login-manager.enable = true;
autoLogin = { enable = true; user = "emmatherock"; };
};
security.pam.services.login.enableKwallet = true;
}
@@ -1,4 +1,4 @@
{ pkgs, lib, ... }: { lib, ... }:
{ {
# Lanzaboote reemplaza al systemd-boot estándar # Lanzaboote reemplaza al systemd-boot estándar
+13
View File
@@ -0,0 +1,13 @@
{ ... }:
{
nix.settings.auto-optimise-store = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 14d";
};
services.journald.extraConfig = "SystemMaxUse=500M";
}
+3
View File
@@ -0,0 +1,3 @@
{
services.vscode-server.enable = true;
}
+9
View File
@@ -0,0 +1,9 @@
{
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
}
+10
View File
@@ -0,0 +1,10 @@
{pkgs, apple-fonts, ... }:
{
fonts.packages = with pkgs; [
noto-fonts noto-fonts-cjk-sans noto-fonts-color-emoji
nerd-fonts.fira-code nerd-fonts.jetbrains-mono
apple-fonts.packages.${pkgs.stdenv.hostPlatform.system}.sf-pro
apple-fonts.packages.${pkgs.stdenv.hostPlatform.system}.sf-mono
apple-fonts.packages.${pkgs.stdenv.hostPlatform.system}.ny
];
}
+6
View File
@@ -0,0 +1,6 @@
{
programs = {
gamemode.enable = true;
steam = { enable = true; remotePlay.openFirewall = true; };
};
}
+10
View File
@@ -0,0 +1,10 @@
{pkgs, ... }:
{
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
rocmPackages.clr.icd
];
};
}
+14
View File
@@ -0,0 +1,14 @@
{pkgs, ... }:
{
environment.systemPackages = with pkgs; [
git
wget
curl
ethtool
fish
rocmPackages.rocm-smi
btrfs-progs
distrobox
steam-run
];
}
+5
View File
@@ -0,0 +1,5 @@
{
programs = {
fish.enable = true;
};
}