From 73ddb338cd7542f9569a9ab5cb0481b4f0636710 Mon Sep 17 00:00:00 2001 From: seraphim <18ycm9tx@anonaddy.me> Date: Wed, 29 Jul 2026 22:09:05 +0700 Subject: . --- nixos/configuration.nix | 83 +++++++++++-------- nixos/flake.lock | 72 +++++++++++++++++ nixos/flake.nix | 13 +-- nixos/hardware-configuration.nix | 33 -------- nixos/hosts/opus/default.nix | 93 ++++++++++++++++++++++ nixos/modules/features/appimage/default.nix | 13 +++ nixos/modules/features/audio-tools/default.nix | 12 +++ nixos/modules/features/binary-compat/default.nix | 23 ++++++ nixos/modules/features/cli-tools/default.nix | 18 +++++ nixos/modules/features/desktop-apps/default.nix | 18 +++++ nixos/modules/features/dev-tools/default.nix | 20 +++++ nixos/modules/features/editors/default.nix | 10 +++ nixos/modules/features/file-managers/default.nix | 13 +++ nixos/modules/features/fonts/default.nix | 13 +++ nixos/modules/features/gst-codecs/default.nix | 10 +++ nixos/modules/features/monitoring/default.nix | 11 +++ nixos/modules/features/mpd/default.nix | 39 +++++++++ nixos/modules/features/niri/default.nix | 13 +++ .../modules/features/noctalia-greeter/default.nix | 18 +++++ nixos/modules/features/noctalia-shell/default.nix | 10 +++ nixos/modules/features/nvidia/default.nix | 21 +++++ nixos/modules/features/starship/default.nix | 5 ++ nixos/modules/features/swingmusic/default.nix | 19 +++++ nixos/modules/features/terminals/default.nix | 8 ++ nixos/modules/features/wayland-tools/default.nix | 13 +++ nixos/modules/system/audio/default.nix | 17 ++++ nixos/modules/system/boot/default.nix | 31 ++++++++ nixos/modules/system/hardware/default.nix | 16 ++++ nixos/modules/system/locale/default.nix | 18 +++++ nixos/modules/system/network/default.nix | 32 ++++++++ nixos/modules/system/nix/default.nix | 21 +++++ nixos/modules/system/printing/default.nix | 12 +++ nixos/modules/system/services/default.nix | 13 +++ nixos/modules/system/users/default.nix | 34 ++++++++ 34 files changed, 725 insertions(+), 70 deletions(-) delete mode 100644 nixos/hardware-configuration.nix create mode 100644 nixos/hosts/opus/default.nix create mode 100644 nixos/modules/features/appimage/default.nix create mode 100644 nixos/modules/features/audio-tools/default.nix create mode 100644 nixos/modules/features/binary-compat/default.nix create mode 100644 nixos/modules/features/cli-tools/default.nix create mode 100644 nixos/modules/features/desktop-apps/default.nix create mode 100644 nixos/modules/features/dev-tools/default.nix create mode 100644 nixos/modules/features/editors/default.nix create mode 100644 nixos/modules/features/file-managers/default.nix create mode 100644 nixos/modules/features/fonts/default.nix create mode 100644 nixos/modules/features/gst-codecs/default.nix create mode 100644 nixos/modules/features/monitoring/default.nix create mode 100644 nixos/modules/features/mpd/default.nix create mode 100644 nixos/modules/features/niri/default.nix create mode 100644 nixos/modules/features/noctalia-greeter/default.nix create mode 100644 nixos/modules/features/noctalia-shell/default.nix create mode 100644 nixos/modules/features/nvidia/default.nix create mode 100644 nixos/modules/features/starship/default.nix create mode 100644 nixos/modules/features/swingmusic/default.nix create mode 100644 nixos/modules/features/terminals/default.nix create mode 100644 nixos/modules/features/wayland-tools/default.nix create mode 100644 nixos/modules/system/audio/default.nix create mode 100644 nixos/modules/system/boot/default.nix create mode 100644 nixos/modules/system/hardware/default.nix create mode 100644 nixos/modules/system/locale/default.nix create mode 100644 nixos/modules/system/network/default.nix create mode 100644 nixos/modules/system/nix/default.nix create mode 100644 nixos/modules/system/printing/default.nix create mode 100644 nixos/modules/system/services/default.nix create mode 100644 nixos/modules/system/users/default.nix diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 0992ccd..760c077 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -22,6 +22,7 @@ programs.nix-ld.enable = true; services.envfs.enable = true; security.polkit.enable = true; + # ========================================================================= # BOOT & KERNEL CONFIGURATION # ========================================================================= @@ -63,43 +64,42 @@ nvidiaSettings = true; package = config.boot.kernelPackages.nvidiaPackages.latest; }; - #Appimage settings + + # Appimage settings programs.appimage = { - enable = true; - binfmt = true; - package = pkgs.appimage-run.override { - extraPkgs = pkgs: [ - pkgs.webkitgtk_4_1 + enable = true; + binfmt = true; + package = pkgs.appimage-run.override { + extraPkgs = pkgs: [ + pkgs.webkitgtk_4_1 ]; }; }; - # ========================================================================= # NETWORKING, DNS & VPN # ========================================================================= networking.hostName = "opus"; networking.networkmanager.enable = true; + programs.amnezia-vpn.enable = true; + # Primary DNS Server: Mullvad DoT (Base Mode) + networking.nameservers = [ + "194.242.2.4#base.dns.mullvad.net" + "194.242.2.2#dns.mullvad.net" + ]; - # Systemd-Resolved (Encrypted DNS) + # systemd-resolved Configuration (Mullvad Base Primary -> Quad9 Fallback) services.resolved = { enable = true; - settings = { - Resolve = { - DNSOverTLS = "true"; - DNSSEC = "true"; - Domains = [ "~." ]; - DNS = "76.76.2.2#p2.freedns.controld.com"; - FallbackDNS = "1.1.1.1"; - }; - }; + dnsovertls = "opportunistic"; # Encrypts DNS via DoT, falls back if port 853 is blocked + dnssec = "false"; # Disables DNSSEC validation drops + domains = [ "~." ]; # Forces systemd-resolved to use global DNS, ignoring DHCP DNS + fallbackDns = [ + "9.9.9.9#dns.quad9.net" + "149.112.112.112#dns.quad9.net" + ]; }; - # Mullvad VPN Daemon - services.mullvad-vpn = { - enable = true; - package = pkgs.mullvad-vpn; - }; # Avahi (Printer / Network Discovery) services.avahi = { @@ -150,11 +150,12 @@ # ========================================================================= # SHELLS & ENHANCEMENTS # ========================================================================= -programs.fish = { + programs.fish = { enable = true; interactiveShellInit = '' set -g fish_greeting "" # Disables the welcome message - fzf --fish | source + fzf --fish | + source ''; shellAliases = { ls = "eza -al --icons=auto"; @@ -235,14 +236,13 @@ programs.fish = { alsa.support32Bit = true; pulse.enable = true; }; - - # Printing (CUPS) + # printer service services.printing = { enable = true; drivers = with pkgs; [ brlaser - gutenprint cups-filters + gutenprint ]; }; @@ -326,7 +326,8 @@ programs.fish = { # ========================================================================= # SYSTEM PACKAGES # ========================================================================= - environment.systemPackages = with pkgs; [ + environment.systemPackages = with pkgs; + [ # Flake Inputs & Hardware Overrides inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default (btop.override { cudaSupport = true; }) @@ -334,6 +335,23 @@ programs.fish = { # Terminals & CLI Utilities cacert tree + pkgs.libsixel + libGL + nss + cups + libdrm + glib + pango + gtk3 + zlib + expat + alsa-lib + libxkbcommon + atk + pkg-config + cmake + + nftables pkgs.rsync duf eza @@ -362,7 +380,7 @@ programs.fish = { # Text Editors micro neovim - (emacs-pgtk.override { + (emacs.override { withNativeCompilation = true; }) @@ -407,13 +425,14 @@ programs.fish = { hunspellDicts.ru_RU nvidia-vaapi-driver opencode - telegram-desktop - vesktop + pkgs.ayugram-desktop + pkgs.legcord + pkgs.amnezia-vpn obsidian pkgs.lutris pkgs.qbittorrent pkgs.prismlauncher - + pkgs.wireshark # Software Development & Toolchains black cargo diff --git a/nixos/flake.lock b/nixos/flake.lock index ff02820..102f69f 100644 --- a/nixos/flake.lock +++ b/nixos/flake.lock @@ -1,5 +1,27 @@ { "nodes": { + "helium-browser": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-darwin": "nixpkgs-darwin", + "utils": "utils" + }, + "locked": { + "lastModified": 1785004096, + "narHash": "sha256-8stbyRwnEwPMmni/U6iHGGBbi3uebfq60qlKXPgYwWI=", + "owner": "schembriaiden", + "repo": "helium-browser-nix-flake", + "rev": "b356d11eff33ec730a51f9c88d258fdd72efe587", + "type": "github" + }, + "original": { + "owner": "schembriaiden", + "repo": "helium-browser-nix-flake", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1784796856, @@ -16,6 +38,22 @@ "type": "github" } }, + "nixpkgs-darwin": { + "locked": { + "lastModified": 1784834831, + "narHash": "sha256-yj0LPLnsmYoLmA3FGANjeTEwej0/DHjZBXWnDQDUuIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "51fe96f9107566e6b8eeb7fc4ba696c01e548b04", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-26.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1784356753, @@ -69,10 +107,44 @@ }, "root": { "inputs": { + "helium-browser": "helium-browser", "nixpkgs": "nixpkgs", "noctalia": "noctalia", "noctalia-greeter": "noctalia-greeter" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } } }, "root": "root", diff --git a/nixos/flake.nix b/nixos/flake.nix index f5f5b35..ef43174 100644 --- a/nixos/flake.nix +++ b/nixos/flake.nix @@ -1,5 +1,5 @@ { - description = "Noctalia shell conf"; + description = "Noctalia shell conf (dendritic layout)"; inputs = { # Main tree @@ -11,16 +11,19 @@ url = "github:noctalia-dev/noctalia-greeter"; inputs.nixpkgs.follows = "nixpkgs"; }; - + helium-browser = { + url = "github:schembriaiden/helium-browser-nix-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { self, nixpkgs, noctalia, ... }@inputs: { nixosConfigurations.opus = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; - specialArgs = { inherit inputs; }; + specialArgs = { inherit inputs; }; modules = [ - ./configuration.nix + ./hosts/opus ]; }; }; -} +} \ No newline at end of file diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix deleted file mode 100644 index 5163270..0000000 --- a/nixos/hardware-configuration.nix +++ /dev/null @@ -1,33 +0,0 @@ -# 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 = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/363e0f04-0494-4bf5-96e7-33326d8b8a5c"; - fsType = "ext4"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/DD1F-3DEF"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/75ef05e5-75fb-4c5c-9a4d-e5e50f4b6438"; } - ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/nixos/hosts/opus/default.nix b/nixos/hosts/opus/default.nix new file mode 100644 index 0000000..4143528 --- /dev/null +++ b/nixos/hosts/opus/default.nix @@ -0,0 +1,93 @@ +{ config, pkgs, inputs, ... }: + +{ + imports = [ + # hardware-configuration.nix stays at the repo root for nixos-generate-config compat + ../../hardware-configuration.nix + + # OS-level modules — no binary wrapped, just system concerns + ../../modules/system/nix + ../../modules/system/boot + ../../modules/system/hardware + ../../modules/system/locale + ../../modules/system/users + ../../modules/system/audio + ../../modules/system/printing + ../../modules/system/network + ../../modules/system/services + + # Standalone features (apps with their own binaries) + ../../modules/features/niri + ../../modules/features/noctalia-greeter + ../../modules/features/noctalia-shell + ../../modules/features/nvidia + ../../modules/features/appimage + ../../modules/features/mpd + ../../modules/features/swingmusic + ../../modules/features/starship + ../../modules/features/monitoring + ../../modules/features/terminals + ../../modules/features/cli-tools + ../../modules/features/binary-compat + ../../modules/features/editors + ../../modules/features/file-managers + ../../modules/features/wayland-tools + ../../modules/features/audio-tools + ../../modules/features/gst-codecs + ../../modules/features/fonts + ../../modules/features/desktop-apps + ../../modules/features/dev-tools + ]; + + # ──────────────────────────────────────────────────────────────────────── + # Desktop composition (was attrs/desktop) + # Inline because this host is the only one using the full desktop stack. + # ──────────────────────────────────────────────────────────────────────── + qt = { + enable = true; + platformTheme = "qt5ct"; + style = "breeze"; + }; + + xdg.portal = { + enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-gnome + pkgs.xdg-desktop-portal-gtk + ]; + }; + + environment.sessionVariables = { + SHELL = "${pkgs.fish}/bin/fish"; + XCURSOR_THEME = "Bibata-Modern-Ice"; + XCURSOR_SIZE = "20"; + CC = "clang"; + ELECTRON_OZONE_PLATFORM_HINT = "auto"; + GSK_RENDERER = "ngl"; + QT_QPA_PLATFORM = "wayland;xcb"; + QT_ENABLE_HIGHDPI_SCALING = "1"; + QT_AUTO_SCREEN_SCALE_FACTOR = "1"; + QT_SCREEN_SCALE_FACTORS = "1.5"; + }; + + # ──────────────────────────────────────────────────────────────────────── + # Gaming composition (was attrs/gaming) + # ──────────────────────────────────────────────────────────────────────── + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; + + programs.throne = { + enable = true; + tunMode.enable = true; + }; + + environment.systemPackages = with pkgs; [ + pkgs.lutris + pkgs.prismlauncher + ]; + + system.stateVersion = "26.05"; +} diff --git a/nixos/modules/features/appimage/default.nix b/nixos/modules/features/appimage/default.nix new file mode 100644 index 0000000..b291735 --- /dev/null +++ b/nixos/modules/features/appimage/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + programs.appimage = { + enable = true; + binfmt = true; + package = pkgs.appimage-run.override { + extraPkgs = pkgs: [ + pkgs.webkitgtk_4_1 + ]; + }; + }; +} \ No newline at end of file diff --git a/nixos/modules/features/audio-tools/default.nix b/nixos/modules/features/audio-tools/default.nix new file mode 100644 index 0000000..b3013b0 --- /dev/null +++ b/nixos/modules/features/audio-tools/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + mpc + mpd + mpd-mpris + mpv + rmpc + pavucontrol + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/binary-compat/default.nix b/nixos/modules/features/binary-compat/default.nix new file mode 100644 index 0000000..f2ad751 --- /dev/null +++ b/nixos/modules/features/binary-compat/default.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: + +{ + # Libraries shipped so non-Nix binaries (AppImages, dynamically linked + # programs via nix-ld) can resolve their runtime deps. + environment.systemPackages = with pkgs; [ + cacert + libGL + nss + cups + libdrm + glib + pango + gtk3 + zlib + expat + alsa-lib + libxkbcommon + atk + pkg-config + cmake + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/cli-tools/default.nix b/nixos/modules/features/cli-tools/default.nix new file mode 100644 index 0000000..2cb6f25 --- /dev/null +++ b/nixos/modules/features/cli-tools/default.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + tree + pkgs.libsixel + fd + fzf + eza + stow + util-linux + nftables + pkgs.rsync + cryptsetup + yt-dlp + caligula + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/desktop-apps/default.nix b/nixos/modules/features/desktop-apps/default.nix new file mode 100644 index 0000000..59dda45 --- /dev/null +++ b/nixos/modules/features/desktop-apps/default.nix @@ -0,0 +1,18 @@ +{ pkgs, inputs, ... }: + +{ + environment.systemPackages = with pkgs; [ + inputs.helium-browser.packages.${pkgs.stdenv.hostPlatform.system}.helium + secretspec + claude-code + keepassxc + libreoffice + hunspellDicts.ru_RU + opencode + pkgs.ayugram-desktop + pkgs.legcord + pkgs.amnezia-vpn + obsidian + pkgs.qbittorrent + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/dev-tools/default.nix b/nixos/modules/features/dev-tools/default.nix new file mode 100644 index 0000000..2215b49 --- /dev/null +++ b/nixos/modules/features/dev-tools/default.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + black + cargo + clang + clippy + gcc + git + gnumake + nodejs + pyright + python3 + rust-analyzer + rustc + tree-sitter + pkgs.wireshark + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/editors/default.nix b/nixos/modules/features/editors/default.nix new file mode 100644 index 0000000..1570aa3 --- /dev/null +++ b/nixos/modules/features/editors/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + micro + neovim + (emacs.override { withNativeCompilation = true; }) + pkgs.vimPlugins.im-select-nvim + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/file-managers/default.nix b/nixos/modules/features/file-managers/default.nix new file mode 100644 index 0000000..03bd41d --- /dev/null +++ b/nixos/modules/features/file-managers/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + file-roller + kdePackages.ark + kdePackages.qt6ct + loupe + nautilus + sushi + yazi + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/fonts/default.nix b/nixos/modules/features/fonts/default.nix new file mode 100644 index 0000000..8ac4785 --- /dev/null +++ b/nixos/modules/features/fonts/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + fonts.fontconfig.enable = true; + + environment.systemPackages = with pkgs; [ + font-awesome + nerd-fonts.jetbrains-mono + nerd-fonts.symbols-only + jetbrains-mono + noto-fonts-color-emoji + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/gst-codecs/default.nix b/nixos/modules/features/gst-codecs/default.nix new file mode 100644 index 0000000..7a85bf2 --- /dev/null +++ b/nixos/modules/features/gst-codecs/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-ugly + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/monitoring/default.nix b/nixos/modules/features/monitoring/default.nix new file mode 100644 index 0000000..df0a937 --- /dev/null +++ b/nixos/modules/features/monitoring/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + (btop.override { cudaSupport = true; }) + duf + fastfetch + ghfetch + hyfetch + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/mpd/default.nix b/nixos/modules/features/mpd/default.nix new file mode 100644 index 0000000..383180d --- /dev/null +++ b/nixos/modules/features/mpd/default.nix @@ -0,0 +1,39 @@ +{ pkgs, ... }: + +{ + # MPD server + services.mpd = { + enable = true; + user = "seraphim"; + openFirewall = false; + settings = { + music_directory = "/mnt/giga/music"; + bind_to_address = "any"; + port = 6600; + auto_update = "yes"; + audio_output = [ + { + type = "pulse"; + name = "PipeWire Output"; + mixer_type = "hardware"; + } + ]; + }; + }; + + systemd.services.mpd.environment = { + XDG_RUNTIME_DIR = "/run/user/1000"; + }; + + # mpd-mpris is the MPRIS bridge for MPD — only useful when MPD is on, + # so it lives in the same feature. Disable by removing this block. + systemd.user.services.mpd-mpris = { + description = "MPD MPRIS Service for Waybar"; + wantedBy = [ "default.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + ExecStart = "${pkgs.mpd-mpris}/bin/mpd-mpris -network tcp -host 127.0.0.1 -port 6600"; + Restart = "on-failure"; + }; + }; +} \ No newline at end of file diff --git a/nixos/modules/features/niri/default.nix b/nixos/modules/features/niri/default.nix new file mode 100644 index 0000000..84f1d15 --- /dev/null +++ b/nixos/modules/features/niri/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + programs.niri.enable = true; + systemd.user.services.niri.enableDefaultPath = false; + + environment.systemPackages = with pkgs; [ + adwaita-icon-theme + bibata-cursors + hicolor-icon-theme + hyprpolkitagent + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/noctalia-greeter/default.nix b/nixos/modules/features/noctalia-greeter/default.nix new file mode 100644 index 0000000..b80465c --- /dev/null +++ b/nixos/modules/features/noctalia-greeter/default.nix @@ -0,0 +1,18 @@ +{ pkgs, inputs, ... }: + +{ + imports = [ + inputs.noctalia-greeter.nixosModules.default + ]; + + programs.noctalia-greeter = { + enable = true; + settings = { + cursor = { + theme = "Bibata-Modern-Ice"; + size = 24; + path = "${pkgs.bibata-cursors}/share/icons"; + }; + }; + }; +} diff --git a/nixos/modules/features/noctalia-shell/default.nix b/nixos/modules/features/noctalia-shell/default.nix new file mode 100644 index 0000000..a137d32 --- /dev/null +++ b/nixos/modules/features/noctalia-shell/default.nix @@ -0,0 +1,10 @@ +{ pkgs, inputs, ... }: + +{ + environment.systemPackages = with pkgs; [ + # v5 from the flake input + inputs.noctalia.packages.${stdenv.hostPlatform.system}.default + # packaged copy from nixpkgs (also installed in the original config) + noctalia-shell + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/nvidia/default.nix b/nixos/modules/features/nvidia/default.nix new file mode 100644 index 0000000..30a8c28 --- /dev/null +++ b/nixos/modules/features/nvidia/default.nix @@ -0,0 +1,21 @@ +{ config, pkgs, ... }: + +{ + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = false; + open = false; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.latest; + }; + + environment.systemPackages = with pkgs; [ + nvidia-vaapi-driver + ]; + + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "nvidia"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NIXOS_OZONE_WL = "1"; + }; +} \ No newline at end of file diff --git a/nixos/modules/features/starship/default.nix b/nixos/modules/features/starship/default.nix new file mode 100644 index 0000000..b364c5d --- /dev/null +++ b/nixos/modules/features/starship/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + programs.starship.enable = true; +} \ No newline at end of file diff --git a/nixos/modules/features/swingmusic/default.nix b/nixos/modules/features/swingmusic/default.nix new file mode 100644 index 0000000..6c3bc90 --- /dev/null +++ b/nixos/modules/features/swingmusic/default.nix @@ -0,0 +1,19 @@ +{ ... }: + +{ + systemd.user.services.swingmusic = { + description = "Swing Music Local Server"; + wantedBy = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + ExecStart = "/home/seraphim/.swingmusic/swingmusic"; + Restart = "on-failure"; + WorkingDirectory = "/home/seraphim"; + NoNewPrivileges = true; + PrivateTmp = true; + ProtectSystem = "strict"; + ProtectHome = "false"; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + }; + }; +} \ No newline at end of file diff --git a/nixos/modules/features/terminals/default.nix b/nixos/modules/features/terminals/default.nix new file mode 100644 index 0000000..22c5662 --- /dev/null +++ b/nixos/modules/features/terminals/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + foot + ghostty + ]; +} \ No newline at end of file diff --git a/nixos/modules/features/wayland-tools/default.nix b/nixos/modules/features/wayland-tools/default.nix new file mode 100644 index 0000000..19111c1 --- /dev/null +++ b/nixos/modules/features/wayland-tools/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + cliphist + fuzzel + grim + slurp + wl-clipboard + wtype + xwayland-satellite + ]; +} \ No newline at end of file diff --git a/nixos/modules/system/audio/default.nix b/nixos/modules/system/audio/default.nix new file mode 100644 index 0000000..140b08c --- /dev/null +++ b/nixos/modules/system/audio/default.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: + +{ + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + environment.systemPackages = with pkgs; [ + brightnessctl + pamixer + playerctl + ]; +} \ No newline at end of file diff --git a/nixos/modules/system/boot/default.nix b/nixos/modules/system/boot/default.nix new file mode 100644 index 0000000..eedf939 --- /dev/null +++ b/nixos/modules/system/boot/default.nix @@ -0,0 +1,31 @@ +{ config, pkgs, lib, modulesPath, ... }: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + # EDID firmware loading is kept here because it's a kernel-level boot concern. + # Commented kernel params from the original config are preserved. + # boot.kernelParams = [ + # "drm.edid_firmware=DP-1:edid/mi_edid.bin" + # "video=DP-1:2560x1440@180" + # ]; + hardware.firmware = [ + (pkgs.runCommand "custom-edid" {} '' + mkdir -p $out/lib/firmware/edid + cp ${../../../mi_edid.bin} $out/lib/firmware/edid/mi_edid.bin + '') + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} \ No newline at end of file diff --git a/nixos/modules/system/hardware/default.nix b/nixos/modules/system/hardware/default.nix new file mode 100644 index 0000000..bad717c --- /dev/null +++ b/nixos/modules/system/hardware/default.nix @@ -0,0 +1,16 @@ +{ config, pkgs, ... }: + +{ + fileSystems."/mnt/giga" = { + device = "/dev/disk/by-uuid/bfed3a37-05e1-465b-a4b7-d74cd31bf937"; + fsType = "ext4"; + options = [ "defaults" "user" "rw" ]; + }; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; +} \ No newline at end of file diff --git a/nixos/modules/system/locale/default.nix b/nixos/modules/system/locale/default.nix new file mode 100644 index 0000000..da66f76 --- /dev/null +++ b/nixos/modules/system/locale/default.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + time.timeZone = "Etc/GMT-7"; + + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; +} \ No newline at end of file diff --git a/nixos/modules/system/network/default.nix b/nixos/modules/system/network/default.nix new file mode 100644 index 0000000..a862235 --- /dev/null +++ b/nixos/modules/system/network/default.nix @@ -0,0 +1,32 @@ +{ ... }: + +{ + networking.hostName = "opus"; + networking.networkmanager.enable = true; + programs.amnezia-vpn.enable = true; + + # Primary DNS via Mullvad DoT (Base mode) + networking.nameservers = [ + "194.242.2.4#base.dns.mullvad.net" + "194.242.2.2#dns.mullvad.net" + ]; + + # systemd-resolved: Mullvad primary, Quad9 fallback + services.resolved = { + enable = true; + dnsovertls = "opportunistic"; + dnssec = "false"; + domains = [ "~." ]; + fallbackDns = [ + "9.9.9.9#dns.quad9.net" + "149.112.112.112#dns.quad9.net" + ]; + }; + + # Avahi (Printer / Network Discovery) + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; +} \ No newline at end of file diff --git a/nixos/modules/system/nix/default.nix b/nixos/modules/system/nix/default.nix new file mode 100644 index 0000000..8f33990 --- /dev/null +++ b/nixos/modules/system/nix/default.nix @@ -0,0 +1,21 @@ +{ config, pkgs, lib, inputs, ... }: + +{ + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nixpkgs.config.allowUnfree = true; + + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + + programs.nix-ld.enable = true; + services.envfs.enable = true; + security.polkit.enable = true; + + environment.variables = { + SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt"; + NIX_SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt"; + }; +} \ No newline at end of file diff --git a/nixos/modules/system/printing/default.nix b/nixos/modules/system/printing/default.nix new file mode 100644 index 0000000..26ceb03 --- /dev/null +++ b/nixos/modules/system/printing/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + services.printing = { + enable = true; + drivers = with pkgs; [ + brlaser + gutenprint + cups-filters + ]; + }; +} \ No newline at end of file diff --git a/nixos/modules/system/services/default.nix b/nixos/modules/system/services/default.nix new file mode 100644 index 0000000..40cfa89 --- /dev/null +++ b/nixos/modules/system/services/default.nix @@ -0,0 +1,13 @@ +{ ... }: + +{ + services.gvfs.enable = true; + services.tumbler.enable = true; + services.gnome.gnome-keyring.enable = true; + programs.dconf.enable = true; + + services.journald.extraConfig = '' + SystemMaxUse=50M + MaxRetentionSec=1month + ''; +} \ No newline at end of file diff --git a/nixos/modules/system/users/default.nix b/nixos/modules/system/users/default.nix new file mode 100644 index 0000000..042c055 --- /dev/null +++ b/nixos/modules/system/users/default.nix @@ -0,0 +1,34 @@ +{ pkgs, ... }: + +{ + users.users."seraphim" = { + isNormalUser = true; + description = "seraphim"; + shell = pkgs.fish; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; []; + }; + + security.doas = { + enable = true; + extraRules = [ + { + users = [ "seraphim" ]; + keepEnv = true; + persist = true; + } + ]; + }; + + programs.fish = { + enable = true; + interactiveShellInit = '' + set -g fish_greeting "" + fzf --fish | source + ''; + shellAliases = { + ls = "eza -al --icons=auto"; + ll = "eza -al --icons=auto"; + }; + }; +} \ No newline at end of file -- cgit v1.2.3