Refactored NixOS config to be more modular
This commit is contained in:
@@ -1,10 +1,23 @@
|
||||
{ pkgs, ... }: {
|
||||
{ pkgs, inputs, ... }: {
|
||||
|
||||
imports = [
|
||||
./packages.nix
|
||||
../modules/apps.nix
|
||||
../modules/kde.nix
|
||||
../modules/networking.nix
|
||||
../modules/development.nix
|
||||
../modules/gaming.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
|
||||
# User
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs pkgs; };
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
users = {
|
||||
"kyren" = import ./home.nix;
|
||||
};
|
||||
};
|
||||
|
||||
users.users.kyren = {
|
||||
isNormalUser = true;
|
||||
description = "Kyren";
|
||||
@@ -29,7 +42,7 @@
|
||||
# Bootloader
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.supportedFilesystems = [ "ntfs" ];
|
||||
boot.supportedFilesystems = [ "ntfs" ]; # for windows fs
|
||||
|
||||
# Nix Config
|
||||
system.stateVersion = "24.05"; # DO NOT CHANGE!
|
||||
@@ -44,23 +57,6 @@
|
||||
stdenv.cc.cc
|
||||
];
|
||||
|
||||
programs.firefox.enable = true;
|
||||
|
||||
# Install Steam
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
||||
};
|
||||
|
||||
# Install Docker (without using root access)
|
||||
#virtualisation.docker.enable = true;
|
||||
virtualisation.docker.rootless = {
|
||||
enable = true;
|
||||
setSocketVariable = true;
|
||||
};
|
||||
|
||||
# Enable sound with pipewire.
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
@@ -85,9 +81,11 @@
|
||||
|
||||
# Enable openssh
|
||||
services.openssh.enable = true;
|
||||
services.openssh.settings.PasswordAuthentication = false;
|
||||
|
||||
# Mouse config service (used with piper)
|
||||
services.ratbagd.enable = true;
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO7P9K9D5RkBk+JCRRS6AtHuTAc6cRpXfRfRMg/Kyren"
|
||||
];
|
||||
|
||||
# Enable KVM/QEMU virtualization
|
||||
programs.virt-manager.enable = true;
|
||||
@@ -105,10 +103,6 @@
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /home/kyren/.config/syncthing 0700 kyren users"
|
||||
];
|
||||
|
||||
# VPN for Vault Hunters to avoid connection issues
|
||||
# Note, will break discord, also tried proton VPN, still has conn issues
|
||||
services.cloudflare-warp.enable = true;
|
||||
|
||||
systemd.timers."git-auto-sync" = {
|
||||
wantedBy = [ "timers.target" ];
|
||||
@@ -143,4 +137,18 @@
|
||||
script = "$HOME/projects/k/bin/k tracker sleep";
|
||||
serviceConfig = { Type = "oneshot"; User = "kyren"; };
|
||||
};
|
||||
|
||||
xdg.desktopEntries = {
|
||||
"com.ktechpit.whatsie" = {
|
||||
name = "WhatsApp";
|
||||
genericName = "Watsie, unofficial WhatsApp client";
|
||||
exec = "whatsie %U";
|
||||
terminal = false;
|
||||
icon = "com.github.eneshecan.WhatsAppForLinux";
|
||||
categories = [ "Application" "Network" "WebBrowser" ];
|
||||
settings = {
|
||||
Keywords = "chat;im;messaging;messenger;sms;whatsapp;whatsapp-desktop;whatsie;";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,22 +1,14 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
{ ... }: {
|
||||
|
||||
imports = [
|
||||
./hardware-configuration-desktop.nix
|
||||
../modules/common.nix
|
||||
../modules/kde.nix
|
||||
../modules/networking.nix
|
||||
./configuration.nix
|
||||
../modules/desktop.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
|
||||
networking.hostName = "kyren-desktop";
|
||||
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs pkgs; };
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
users = {
|
||||
"kyren" = import ./home.nix;
|
||||
};
|
||||
};
|
||||
development.enable = true;
|
||||
gaming.enable = true;
|
||||
|
||||
}
|
||||
|
||||
@@ -25,20 +25,6 @@
|
||||
"$HOME/.local/bin"
|
||||
];
|
||||
|
||||
xdg.desktopEntries = {
|
||||
"com.ktechpit.whatsie" = {
|
||||
name = "WhatsApp";
|
||||
genericName = "Watsie, unofficial WhatsApp client";
|
||||
exec = "whatsie %U";
|
||||
terminal = false;
|
||||
icon = "com.github.eneshecan.WhatsAppForLinux";
|
||||
categories = [ "Application" "Network" "WebBrowser" ];
|
||||
settings = {
|
||||
Keywords = "chat;im;messaging;messenger;sms;whatsapp;whatsapp-desktop;whatsie;";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
|
||||
@@ -1,22 +1,14 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
{ ... }: {
|
||||
|
||||
imports = [
|
||||
./hardware-configuration-laptop.nix
|
||||
../modules/common.nix
|
||||
../modules/kde.nix
|
||||
../modules/networking.nix
|
||||
./hardware-configuration-laptop.nix
|
||||
./configuration.nix
|
||||
../modules/laptop.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
|
||||
networking.hostName = "kyren-laptop";
|
||||
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs pkgs; };
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
users = {
|
||||
"kyren" = import ./home.nix;
|
||||
};
|
||||
};
|
||||
development.enable = true;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
{ ... }: {
|
||||
|
||||
imports = [
|
||||
./hardware-configuration-laptop.nix
|
||||
../modules/common.nix
|
||||
../modules/kde.nix
|
||||
../modules/networking.nix
|
||||
./configuration.nix
|
||||
../modules/laptop.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
|
||||
networking.hostName = "kyren-laptop";
|
||||
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs pkgs; };
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
users = {
|
||||
"kyren" = import ./home.nix;
|
||||
};
|
||||
};
|
||||
development.enable = true;
|
||||
|
||||
}
|
||||
|
||||
112
modules/apps.nix
Normal file
112
modules/apps.nix
Normal file
@@ -0,0 +1,112 @@
|
||||
{ pkgs, lib, config, ... }: {
|
||||
|
||||
options.apps.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "enables apps";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.apps.enable {
|
||||
|
||||
programs.firefox.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# System
|
||||
glib-networking
|
||||
openssl
|
||||
glibcLocales
|
||||
libnotify
|
||||
wl-clipboard
|
||||
jdk
|
||||
|
||||
libratbag # Mouse software (GHUB replacement)
|
||||
piper # ^ GUI frontend
|
||||
|
||||
# Utility
|
||||
gimp
|
||||
keepassxc
|
||||
protonvpn-gui
|
||||
(python312.withPackages (pypkgs: [
|
||||
pypkgs.matplotlib
|
||||
pypkgs.pandas
|
||||
pypkgs.pygithub
|
||||
]))
|
||||
kdePackages.filelight
|
||||
kdePackages.korganizer
|
||||
kdePackages.kaddressbook
|
||||
syncthingtray
|
||||
libreoffice
|
||||
albert
|
||||
aseprite
|
||||
cloudflare-warp
|
||||
haruna
|
||||
gparted
|
||||
gnome-clocks
|
||||
|
||||
# Communication
|
||||
whatsie
|
||||
vesktop
|
||||
|
||||
# Terminal
|
||||
ghostty
|
||||
nerd-fonts.jetbrains-mono
|
||||
oh-my-posh
|
||||
tmux
|
||||
neovim
|
||||
tree-sitter
|
||||
|
||||
# CLI
|
||||
git
|
||||
delta
|
||||
gh
|
||||
stow
|
||||
eza
|
||||
keychain
|
||||
bc
|
||||
bat
|
||||
fd
|
||||
ripgrep
|
||||
wakatime-cli
|
||||
fastfetch
|
||||
btop
|
||||
sqlite
|
||||
unzip
|
||||
fzf
|
||||
zoxide
|
||||
watchexec
|
||||
gitleaks
|
||||
rar
|
||||
dig
|
||||
minisign
|
||||
libisoburn
|
||||
ncdu
|
||||
imagemagick
|
||||
ghostscript # for imagemagick to support pdf files
|
||||
xxd
|
||||
duf
|
||||
tldr
|
||||
bottom
|
||||
hyperfine # for benchmarking
|
||||
wget
|
||||
tectonic
|
||||
mermaid-cli
|
||||
ffmpeg
|
||||
nh
|
||||
];
|
||||
|
||||
# VPN for Vault Hunters to avoid connection issues
|
||||
# Note, will break discord, also tried proton VPN, still has conn issues
|
||||
services.cloudflare-warp.enable = true;
|
||||
|
||||
# Mouse config service (used with piper)
|
||||
services.ratbagd.enable = true;
|
||||
|
||||
# Install Docker (without using root access)
|
||||
#virtualisation.docker.enable = true;
|
||||
virtualisation.docker.rootless = {
|
||||
enable = true;
|
||||
setSocketVariable = true;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
66
modules/development.nix
Normal file
66
modules/development.nix
Normal file
@@ -0,0 +1,66 @@
|
||||
{ pkgs, lib, config, ... }: {
|
||||
|
||||
options.development.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "enables development";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.development.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
jetbrains.idea-community
|
||||
|
||||
# LSP
|
||||
asm-lsp
|
||||
astro-language-server
|
||||
basedpyright
|
||||
bash-language-server
|
||||
vscode-langservers-extracted # html/css/json
|
||||
gopls
|
||||
lemminx # xml
|
||||
lua-language-server
|
||||
markdown-oxide
|
||||
marksman
|
||||
mdx-language-server
|
||||
neocmakelsp
|
||||
nil # nix
|
||||
tailwindcss-language-server
|
||||
taplo # toml
|
||||
typescript-language-server
|
||||
yaml-language-server
|
||||
# pnpm i -g css-variables-language-server
|
||||
# pnpm install -g gh-actions-language-server
|
||||
|
||||
# Tools
|
||||
stylua
|
||||
gofumpt
|
||||
golangci-lint
|
||||
prettierd
|
||||
jq
|
||||
lldb # codelldb debugger
|
||||
shellcheck
|
||||
beautysh # shell formatter
|
||||
gdb
|
||||
nasm
|
||||
rustup
|
||||
tokei # count lines of code
|
||||
go
|
||||
pnpm
|
||||
nodejs_24
|
||||
clang
|
||||
clang-tools
|
||||
gcc
|
||||
gnumake
|
||||
goose
|
||||
sqlc
|
||||
maven
|
||||
gradle
|
||||
kotlin
|
||||
mold # fast linker, for rust
|
||||
gomodifytags
|
||||
sops
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
33
modules/gaming.nix
Normal file
33
modules/gaming.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{ pkgs, lib, config, ... }: {
|
||||
|
||||
options.gaming.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "enables gaming";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.gaming.enable {
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
r2modman # For modded valheim
|
||||
prismlauncher # mc
|
||||
drawio # For VH
|
||||
|
||||
(minecraft.overrideAttrs (finalAttrs: previousAttrs: {
|
||||
meta.lib.broken = false;
|
||||
}))
|
||||
|
||||
kdePackages.kmines # Minesweeper for fun lol
|
||||
kdePackages.kpat # Solitaire
|
||||
# btw missing the card/brick thing with weird symbols, not sure what that game was called
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
@@ -1,140 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
glib-networking
|
||||
openssl
|
||||
clang
|
||||
clang-tools
|
||||
ghostty
|
||||
glibcLocales
|
||||
|
||||
nerd-fonts.jetbrains-mono
|
||||
keepassxc
|
||||
git
|
||||
gh
|
||||
delta
|
||||
stow
|
||||
eza
|
||||
oh-my-posh
|
||||
gcc
|
||||
gnumake
|
||||
neovim
|
||||
fzf
|
||||
zoxide
|
||||
tmux
|
||||
bc
|
||||
keychain
|
||||
bat
|
||||
sqlite
|
||||
fd
|
||||
ripgrep
|
||||
wakatime-cli
|
||||
fastfetch
|
||||
btop
|
||||
protonvpn-gui
|
||||
unzip
|
||||
go
|
||||
pnpm
|
||||
nodejs_24
|
||||
(python312.withPackages (pypkgs: [
|
||||
pypkgs.matplotlib
|
||||
pypkgs.pandas
|
||||
pypkgs.pygithub
|
||||
]))
|
||||
watchexec
|
||||
golangci-lint
|
||||
libnotify
|
||||
wl-clipboard
|
||||
whatsie
|
||||
libratbag # Mouse software (GHUB replacement)
|
||||
piper
|
||||
goose
|
||||
sqlc
|
||||
jetbrains.idea-community
|
||||
jdk
|
||||
maven
|
||||
gradle
|
||||
kdePackages.filelight
|
||||
kotlin
|
||||
(minecraft.overrideAttrs (finalAttrs: previousAttrs: {
|
||||
meta.lib.broken = false;
|
||||
}))
|
||||
rustup
|
||||
tokei
|
||||
kdePackages.kmines # Minesweeper for fun lol
|
||||
kdePackages.kpat # Solitaire
|
||||
# btw missing the card/brick thing with weird symbols, not sure what that game was called
|
||||
gimp
|
||||
kdePackages.korganizer
|
||||
kdePackages.kaddressbook
|
||||
gitleaks
|
||||
rar
|
||||
gomodifytags
|
||||
sops
|
||||
dig
|
||||
syncthingtray
|
||||
libreoffice
|
||||
vesktop
|
||||
nasm
|
||||
albert
|
||||
gdb
|
||||
minisign
|
||||
libisoburn
|
||||
ncdu
|
||||
imagemagick
|
||||
ghostscript # for imagemagick to support pdf files
|
||||
xxd
|
||||
gnome-clocks
|
||||
duf
|
||||
tldr
|
||||
bottom
|
||||
hyperfine
|
||||
nh
|
||||
wget
|
||||
mold
|
||||
aseprite
|
||||
prismlauncher
|
||||
cloudflare-warp
|
||||
drawio
|
||||
tree-sitter
|
||||
tectonic
|
||||
mermaid-cli
|
||||
ffmpeg
|
||||
haruna
|
||||
gparted
|
||||
r2modman
|
||||
openrgb-with-all-plugins
|
||||
|
||||
# LSP
|
||||
asm-lsp
|
||||
astro-language-server
|
||||
basedpyright
|
||||
bash-language-server
|
||||
vscode-langservers-extracted # html/css/json
|
||||
gopls
|
||||
lemminx
|
||||
lua-language-server
|
||||
markdown-oxide
|
||||
marksman
|
||||
mdx-language-server
|
||||
neocmakelsp
|
||||
nil
|
||||
tailwindcss-language-server
|
||||
taplo
|
||||
typescript-language-server
|
||||
yaml-language-server
|
||||
# pnpm i -g css-variables-language-server
|
||||
# pnpm install -g gh-actions-language-server
|
||||
|
||||
# Tools
|
||||
stylua
|
||||
gofumpt
|
||||
golangci-lint
|
||||
prettierd
|
||||
jq
|
||||
lldb # codelldb debugger
|
||||
shellcheck
|
||||
beautysh # shell formatter
|
||||
];
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user