massive restructure

This commit is contained in:
2026-07-30 01:02:17 +02:00
parent 0b0634530f
commit 438ce4c58e
32 changed files with 3558 additions and 0 deletions
+266
View File
@@ -0,0 +1,266 @@
{
pkgs,
sls-steam,
options,
config,
...
}:
let
cpuid-fault-emulation = pkgs.callPackage ../../pkgs/cpuid-fault-emulation {
kernel = config.boot.kernelPackages.kernel;
};
in
{
imports = [
./hardware-configuration.nix
./packages.nix
../../modules/scripts.nix
../../modules/desktop/xremap.nix
];
# DISKS
fileSystems."/media/gamedisk4" = {
device = "/dev/disk/by-uuid/D290EB87C8A1E82A";
fsType = "ntfs3";
options = [
"uid=1000"
"gid=100"
"rw"
"user"
"exec"
"umask=000"
"nofail"
];
};
fileSystems."/media/gamedisk" = {
device = "/dev/disk/by-uuid/5C7C14707C1446E4";
fsType = "ntfs3";
options = [
"uid=1000"
"gid=100"
"rw"
"user"
"exec"
"umask=000"
"nofail"
];
};
fileSystems."/media/gamedisk2" = {
device = "/dev/disk/by-uuid/945A7421DAD8A3CE";
fsType = "ntfs3";
options = [
"uid=1000"
"gid=100"
"rw"
"user"
"exec"
"umask=000"
"nofail"
];
};
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
boot.kernelParams = [
"iomem=relaxed"
"iommu=pt"
"amd_iommu=on"
"kvm.ignore_msrs=1"
"mitigations=off"
"amdgpu.ppfeaturemask=0xffffffff"
"clearcpuid=umip"
];
xdg = {
mime.defaultApplications = {
"inode/directory" = [ "nemo.desktop" ];
"application/x-gnome-saved-search" = [ "nemo.desktop" ];
};
};
hardware.graphics.enable = true;
hardware.graphics.enable32Bit = true;
services.hardware.openrgb.enable = true;
# Bootloader.
boot.loader.grub.enable = true;
boot.loader.grub.device = "nodev";
boot.loader.grub.efiSupport = true;
boot.extraModulePackages = [ cpuid-fault-emulation ];
environment.systemPackages = [
(pkgs.writeShellScriptBin "enable-hypervisor" ''
sudo modprobe -r kvm_amd kvm
sudo modprobe cpuid_fault_emulation
'')
(pkgs.writeShellScriptBin "disable-hypervisor" ''
sudo modprobe -r cpuid_fault_emulation
sudo modprobe kvm_amd kvm
'')
];
networking.hostName = "nixos-desktop";
networking.firewall.enable = false;
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
console.keyMap = "de";
programs.fish.enable = true;
users.users.user = {
isNormalUser = true;
description = "user";
uid = 1000;
extraGroups = [
"networkmanager"
"wheel"
"docker"
];
shell = pkgs.fish;
};
nixpkgs.config.allowUnfree = true;
programs.niri.enable = true;
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
# environment.loginShellInit = ''
# if [ "$(tty)" = "/dev/tty1" ] && [ -z "$WAYLAND_DISPLAY" ]; then
# exec start-hyprland
# fi
# '';
# NFS / MPD
fileSystems."/media/music" = {
device = "192.168.132.149:/media/music";
fsType = "nfs4";
};
boot.supportedFilesystems = [ "nfs4" ];
qt = {
enable = true;
platformTheme = "qt5ct";
style = "breeze";
};
virtualisation.docker.enable = true;
services.gvfs.enable = true;
services.goxlr-utility.enable = true;
services.lact.enable = true;
services.rsync.enable = true;
programs.kdeconnect.enable = true;
programs.neovim.enable = true;
programs.tmux.enable = true;
programs.bat.enable = true;
programs.nh.enable = true;
programs.git = {
enable = true;
config = {
signing = {
key = "51AE8C6E80E6AF3BDFBE2BF804B31D181764898D";
signByDefault = true;
};
user = {
name = "KeksNino";
email = "KeksNino@proton.me";
};
init = {
defaultBranch = "main";
};
push = {
autoSetupRemote = true;
};
commit = {
gpgsign = true;
};
tag = {
gpgsign = true;
};
};
};
programs.gnupg.agent = {
enable = true;
pinentryPackage = pkgs.pinentry-curses;
};
programs.steam = {
enable = true;
package = pkgs.millennium-steam.override {
extraEnv = {
LD_AUDIT = "${sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.sls-steam}/library-inject.so:${
sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.sls-steam
}/SLSsteam.so";
};
};
};
programs.nix-ld = {
enable = true;
libraries =
options.programs.nix-ld.libraries.default
++ (with pkgs; [
dbus # libdbus-1.so.3
fontconfig # libfontconfig.so.1
freetype # libfreetype.so.6
glib # libglib-2.0.so.0
libGL # libGL.so.1
libxkbcommon # libxkbcommon.so.0
libx11 # libX11.so.6
wayland
]);
};
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
jack.enable = true;
};
security.pam.loginLimits = [
{
domain = "@users";
item = "rtprio";
type = "-";
value = "95";
}
{
domain = "@users";
item = "memlock";
type = "-";
value = "unlimited";
}
];
security.rtkit.enable = true;
system.stateVersion = "24.11";
system.autoUpgrade.enable = false;
system.autoUpgrade.allowReboot = true;
}
+68
View File
@@ -0,0 +1,68 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/ddabcce9-86a5-4dd8-84f1-3afa99a83752";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/16F5-2D1A";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
fileSystems."/media/gamedisk4" = {
device = "/dev/disk/by-uuid/D290EB87C8A1E82A";
fsType = "ntfs3";
};
fileSystems."/media/music" = {
device = "192.168.132.149:/media/music";
fsType = "nfs4";
};
fileSystems."/media/arch" = {
device = "/dev/disk/by-uuid/8873d98f-c461-4d34-8867-f4ebd5c205d2";
fsType = "ext4";
};
fileSystems."/media/gamedisk" = {
device = "/dev/disk/by-uuid/5C7C14707C1446E4";
fsType = "ntfs3";
};
swapDevices = [
{ device = "/dev/disk/by-uuid/5949c73f-30eb-4956-9e93-70301c88fad8"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+191
View File
@@ -0,0 +1,191 @@
{
pkgs,
config,
zen-browser,
...
}:
{
imports = [
./mpd.nix
zen-browser.homeModules.beta
];
home.username = "user";
home.homeDirectory = "/home/user";
xdg.userDirs = {
enable = true;
createDirectories = false;
extraConfig = {
SCREENSHOTS = "${config.home.homeDirectory}/Pictures/Screenshots";
};
};
xdg.mimeApps = {
enable = true;
defaultApplications = {
"inode/directory" = [ "nemo.desktop" ];
"image/*" = [ "imv-dir.desktop" ];
"image/gif" = [ "imv-dir.desktop" ];
"image/jpeg" = [ "imv-dir.desktop" ];
"image/png" = [ "imv-dir.desktop" ];
"image/webp" = [ "imv-dir.desktop" ];
};
};
dconf = {
settings = {
"org/cinnamon/desktop/applications/terminal" = {
exec = "kitty";
# exec-arg = ""; # argument
};
};
};
home.pointerCursor = {
enable = true;
gtk.enable = true;
package = pkgs.adwaita-icon-theme;
name = "Adwaita";
size = 20;
};
programs.zen-browser = {
enable = true;
setAsDefaultBrowser = true;
};
programs.yazi.enable = true;
programs.yazi.enableFishIntegration = true;
programs.fzf.enable = true;
programs.fzf.enableFishIntegration = true;
programs.eza = {
enable = true;
enableFishIntegration = true;
git = true;
icons = "always";
extraOptions = [
"-1"
];
};
programs.pywal = {
enable = true;
package = pkgs.pywal16;
};
programs.lazygit.enable = true;
programs.lazygit.enableFishIntegration = true;
programs.rbw = {
enable = true;
settings = {
pinentry = pkgs.pinentry-curses;
email = "KeksNino@proton.me";
base_url = "https://vw.pizzasucht.net";
};
};
programs.distrobox.enable = true;
services.podman.enable = true;
programs.rofi.enable = true;
programs.rofi.plugins = [ pkgs.rofi-calc ];
services.polkit-gnome.enable = true;
services.cliphist.enable = true;
programs.btop.enable = true;
services.udiskie.enable = true;
programs.cava.enable = true;
programs.equibop.enable = true;
services.awww.enable = true;
services.mpdris2.enable = true;
programs.fastfetch.enable = true;
programs.prismlauncher.enable = true;
programs.fd.enable = true;
programs.uv.enable = true;
programs.satty.enable = true;
programs.mpvpaper.enable = true;
programs.obsidian.enable = true;
programs.gcc.enable = true;
programs.mpv.enable = true;
programs.imv.enable = true;
programs.aria2.enable = true;
programs.qutebrowser = {
enable = true;
settings = {
colors.webpage.preferred_color_scheme = "dark";
auto_save.session = true;
scrolling.smooth = true;
content.autoplay = false;
content.blocking.method = "both";
url.default_page = "https://priv.au";
};
extraConfig = ''
c.qt.args = ["disable-features=AcceleratedVideoDecodeLinuxGL"]
'';
keyBindings = {
normal = {
"M" = "hint links spawn mpv {hint-url}";
};
};
searchEngines = {
DEFAULT = "https://priv.au/search?q={}";
};
};
home.sessionPath = [
"${config.home.homeDirectory}/.local/bin"
];
home.sessionVariables = {
EDITOR = "nvim";
};
programs.fish = {
enable = true;
interactiveShellInit = ''
nitch
set -g fish_key_bindings fish_hybrid_key_bindings
set fish_greeting
'';
shellAliases = {
ls = "eza -al --no-time --no-user --no-permissions --no-filesize";
ll = "eza -la";
cat = "bat";
cd = "z";
cp = "cp -v";
ff = "fastfetch";
grep = "grep -i";
hyprland = "start-hyprland";
mv = "mv -v";
n = "nvim";
py = "uv run";
r = "rsync -avh --info=progress2";
rm = "gomi";
ssh = "kitty +kitten ssh";
nd = "nix develop";
};
};
programs.zoxide.enable = true;
programs.zoxide.enableFishIntegration = true;
home.file.".local/share/Steam/steam.cfg".text = ''
BootStrapperInhibitAll=enable
BootStrapperForceSelfUpdate=disable
'';
gtk = {
enable = true;
# theme = {
# name = "Materia-dark-compact";
# package = pkgs.materia-theme-transparent;
# };
colorScheme = "dark";
};
home.stateVersion = "26.05";
}
+225
View File
@@ -0,0 +1,225 @@
{
services.mpd = {
enable = true;
musicDirectory = "/home/user/Music";
playlistDirectory = "/home/user/Music/Playlists";
dbFile = "/home/user/.config/mpd/database";
# log_file = "~/.config/mpd/log";
extraConfig = ''
save_absolute_paths_in_playlists "yes"
metadata_to_use "+comment"
audio_output {
type "pipewire"
name "Pipewire Sound Server"
}
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
auto_update "yes"
'';
network.listenAddress = "/home/user/.config/mpd/socket";
};
services.mpdscribble = {
enable = true;
endpoints = {
"last.fm" = {
passwordFile = "/home/user/lastfm_password";
username = "KeksNino";
};
};
};
programs.rmpc.enable = true;
programs.rmpc.config = ''
#![enable(implicit_some)]
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
address: "/home/user/.config/mpd/socket",
password: None,
theme: Some("default"),
cache_dir: Some("/home/user/Music/rmpc"),
on_song_change: None,
volume_step: 5,
max_fps: 60,
scrolloff: 0,
wrap_navigation: false,
enable_mouse: true,
enable_config_hot_reload: true,
status_update_interval_ms: 1000,
rewind_to_start_sec: None,
reflect_changes_to_playlist: false,
select_current_song_on_change: false,
browser_song_sort: [Track, Disc, Artist, Title],
directories_sort: SortFormat(group_by_type: true, reverse: false),
album_art: (
method: Kitty,
max_size_px: (width: 1200, height: 1200),
disabled_protocols: ["http://", "https://"],
vertical_align: Center,
horizontal_align: Center,
),
keybinds: (
global: {
":": CommandMode,
",": VolumeDown,
"s": Stop,
".": VolumeUp,
"<Tab>": NextTab,
"<S-Tab>": PreviousTab,
"1": SwitchToTab("Queue"),
"2": SwitchToTab("Files"),
"3": SwitchToTab("Playlists"),
"4": SwitchToTab("Artists"),
"5": SwitchToTab("Albums"),
"6": SwitchToTab("Search"),
//"7": SwitchToTab("Album Artists"),
"q": Quit,
">": NextTrack,
"p": TogglePause,
"<": PreviousTrack,
"f": SeekForward,
"z": ToggleRepeat,
"x": ToggleRandom,
"c": ToggleConsume,
"v": ToggleSingle,
"b": SeekBack,
"~": ShowHelp,
"u": Update,
"U": Rescan,
"I": ShowCurrentSongInfo,
"O": ShowOutputs,
"P": ShowDecoders,
"R": AddRandom,
"<C-p>": ExternalCommand(command: ["/home/user/.scripts/check-playlist.sh"], description: "Check if selected song is already in a playlist"),
},
navigation: {
"k": Up,
"j": Down,
"h": Left,
"l": Right,
"<Up>": Up,
"<Down>": Down,
"<Left>": Left,
"<Right>": Right,
"<C-k>": PaneUp,
"<C-j>": PaneDown,
"<C-h>": PaneLeft,
"<C-l>": PaneRight,
"<C-u>": UpHalf,
"N": PreviousResult,
"a": Add,
"A": AddAll,
"r": Rename,
"n": NextResult,
"g": Top,
"<Space>": Select,
"<C-Space>": InvertSelection,
"G": Bottom,
"<CR>": Confirm,
"i": FocusInput,
"J": MoveDown,
"<C-d>": DownHalf,
"/": EnterSearch,
"<C-c>": Close,
"<Esc>": Close,
"K": MoveUp,
"D": Delete,
"B": ShowInfo,
},
queue: {
"D": DeleteAll,
"<CR>": Play,
"<C-s>": Save,
"a": AddToPlaylist,
"d": Delete,
"C": JumpToCurrent,
"X": Shuffle,
},
),
search: (
case_sensitive: false,
mode: Contains,
tags: [
(value: "any", label: "Any Tag"),
(value: "artist", label: "Artist"),
(value: "album", label: "Album"),
(value: "albumartist", label: "Album Artist"),
(value: "title", label: "Title"),
(value: "filename", label: "Filename"),
(value: "genre", label: "Genre"),
],
),
artists: (
album_display_mode: SplitByDate,
album_sort_by: Date,
),
cava: (
framerate: 60,
autosens: true,
sensitivity: 110, // default 100
lower_cutoff_freq: 50, // not passed to cava if not provided
higher_cutoff_freq: 10000, // not passed to cava if not provided
input: (
method: Fifo,
source: "/tmp/mpd.fifo",
sample_rate: 44100,
channels: 2,
sample_bits: 16,
),
smoothing: (
noise_reduction: 77,
monstercat: true,
waves: false,
),
eq: []
),
tabs: [
(
name: "Queue",
pane: Split(
direction: Horizontal,
panes: [
(size: "40%", pane: Pane(AlbumArt)),
(size: "60%", pane: Split(
direction: Vertical,
panes: [
(size: "95%", pane: Pane(Queue)),
(size: "30%", pane: Pane(Cava)),
],
)),
],
),
),
(
name: "Files",
pane: Pane(Directories),
),
(
name: "Playlists",
pane: Pane(Playlists),
),
(
name: "Artists",
pane: Pane(Artists),
),
(
name: "Albums",
pane: Pane(Albums),
),
(
name: "Search",
pane: Pane(Search),
),
//(
// name: "Album Artists",
// pane: Pane(AlbumArtists),
//),
],
)
'';
}
+69
View File
@@ -0,0 +1,69 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; [
wget
kitty
gdu
jamesdsp
grimblast
nitch
wl-clipboard
unzip
_7zz
tree-sitter
nodejs
nixfmt
decibels
nwg-look
mpc
python3
basedpyright
waypaper
renoise
pwvucontrol
lsof
picard
exiftool
tlrc
libnotify
trash-cli
spek
ffmpeg
# wine
ripgrep
nemo-with-extensions
papirus-icon-theme
rust-analyzer
scdl
motrix-next
onefetch
smartmontools
qpwgraph
pipewire.jack
sysz
gomi
noctalia-shell
discordchatexporter-desktop
act
ayugram-desktop
playerctl
musicpresence
nixd
libsForQt5.qt5ct
qt6Packages.qt6ct
kdePackages.breeze
kdePackages.breeze.qt5
gnumake
samrewritten
gale
losslesscut
tree
stow
];
fonts.packages = with pkgs; [
nerd-fonts.caskaydia-mono
nerd-fonts.symbols-only
nerd-fonts.jetbrains-mono
];
}
+87
View File
@@ -0,0 +1,87 @@
{
pkgs,
...
}:
{
imports = [
./hardware-configuration.nix
./packages.nix
../../modules/server
];
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
fileSystems."/media/music" = {
device = "/dev/disk/by-uuid/8e6ae06e-a4b5-4ac8-ad15-cb288b14715f";
fsType = "ext4";
};
fileSystems."/home/user/backup" = {
device = "/dev/disk/by-uuid/db7d96f1-5c72-42dc-abc1-00de9b73f017";
fsType = "ext4";
};
networking.hostId = "6054e036";
networking.hostName = "nixos-music";
networking.networkmanager.enable = true;
networking.firewall.enable = false;
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "de";
};
programs.fish.enable = true;
users.users.user = {
isNormalUser = true;
description = "user";
uid = 1000;
extraGroups = [
"networkmanager"
"wheel"
"docker"
];
shell = pkgs.fish;
};
services.tailscale.enable = true;
services.rsync.enable = true;
programs.nix-ld.enable = true;
programs.nh.enable = true;
programs.neovim.enable = true;
programs.tmux.enable = true;
programs.bat.enable = true;
programs.git = {
enable = true;
config = {
user = {
name = "KeksNino";
email = "KeksNino@proton.me";
};
init = {
defaultBranch = "main";
};
push = {
autoSetupRemote = true;
};
};
};
services.openssh = {
enable = true;
openFirewall = true;
settings = {
PasswordAuthentication = false;
PermitRootLogin = "no";
};
};
system.stateVersion = "26.05";
}
@@ -0,0 +1,61 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"usb_storage"
"uas"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "zpool/root";
fsType = "zfs";
};
fileSystems."/var" = {
device = "zpool/var";
fsType = "zfs";
};
fileSystems."/nix" = {
device = "zpool/nix";
fsType = "zfs";
};
fileSystems."/home" = {
device = "zpool/home";
fsType = "zfs";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/FCFD-4472";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+52
View File
@@ -0,0 +1,52 @@
{
programs.beets.enable = true;
# programs.beets.package = pkgs.beets.override {
# pluginOverrides = {
# filetote = {
# enable = true;
# };
# };
# };
programs.beets.settings = {
directory = "/home/user/Music/Tracks";
plugins = [
"fetchart"
"badfiles"
"edit"
"fish"
"hook"
];
import = {
copy = false;
move = true;
autotag = false;
write = true;
};
paths = {
default = "$albumartist/$album/$track. $artist - $title";
};
fetchart = {
auto = true;
sources = [ "filesystem" ];
};
badfiles = {
check_on_import = true;
};
hook = {
hooks = [
{
event = "item_imported";
command = "echo test";
}
];
};
};
}
+61
View File
@@ -0,0 +1,61 @@
{ pkgs, config, ... }:
{
imports = [
./beets.nix
];
home.username = "user";
home.homeDirectory = "/home/user";
programs.yazi.enable = true;
programs.yazi.enableFishIntegration = true;
programs.fzf.enable = true;
programs.fzf.enableFishIntegration = true;
programs.zoxide.enable = true;
programs.zoxide.enableFishIntegration = true;
programs.gcc.enable = true;
programs.eza = {
enable = true;
enableFishIntegration = true;
git = true;
icons = "always";
extraOptions = [
"-1"
];
};
programs.btop.enable = true;
programs.fastfetch.enable = true;
programs.fd.enable = true;
home.sessionVariables = {
EDITOR = "nvim";
};
programs.fish = {
enable = true;
interactiveShellInit = ''
set -g fish_key_bindings fish_hybrid_key_bindings
set fish_greeting
'';
shellAliases = {
ls = "eza -al --no-time --no-user --no-permissions --no-filesize";
ll = "eza -la";
cat = "bat";
cd = "z";
cp = "cp -v";
ff = "fastfetch";
grep = "grep -i";
mv = "mv -v";
n = "nvim";
r = "rsync -avh --info=progress2";
rm = "gomi";
};
};
home.stateVersion = "26.05";
}
+30
View File
@@ -0,0 +1,30 @@
{ pkgs, ... }: {
environment.systemPackages = (
with pkgs;
[
wget
nixfmt
tree-sitter
lsof
exiftool
trash-cli
ffmpeg
unzip
scdl
aria2
nodejs
gomi
bun
croc
mp3val
flac
(python314.withPackages (
ps: with ps; [
requests
python-dotenv
]
))
]
);
}