summaryrefslogtreecommitdiff
path: root/backup-nix
diff options
context:
space:
mode:
authorseraphim <18ycm9tx@anonaddy.me>2026-07-29 22:09:26 +0700
committerseraphim <18ycm9tx@anonaddy.me>2026-07-29 22:09:26 +0700
commitab1d8b8a3e876d37e44c4d22a93c96a32fd01763 (patch)
treed72560dd0032f4341940a44613d02291b78b4a5e /backup-nix
parent73ddb338cd7542f9569a9ab5cb0481b4f0636710 (diff)
.
Diffstat (limited to 'backup-nix')
-rw-r--r--backup-nix/configuration.nix453
-rw-r--r--backup-nix/flake.lock80
-rw-r--r--backup-nix/flake.nix26
-rw-r--r--backup-nix/hardware-configuration.nix33
-rw-r--r--backup-nix/mi_edid.binbin0 -> 384 bytes
5 files changed, 592 insertions, 0 deletions
diff --git a/backup-nix/configuration.nix b/backup-nix/configuration.nix
new file mode 100644
index 0000000..760c077
--- /dev/null
+++ b/backup-nix/configuration.nix
@@ -0,0 +1,453 @@
+{ config, pkgs, inputs, ... }:
+
+{
+ # =========================================================================
+ # IMPORTS & NIX CONFIGURATION
+ # =========================================================================
+ imports = [
+ ./hardware-configuration.nix
+ inputs.noctalia-greeter.nixosModules.default
+ ];
+
+ nix.settings.experimental-features = [ "nix-command" "flakes" ];
+ nixpkgs.config.allowUnfree = true;
+
+ nix.gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than 7d";
+ };
+
+ # Dynamic binary execution & FHS compatibility
+ programs.nix-ld.enable = true;
+ services.envfs.enable = true;
+ security.polkit.enable = true;
+
+ # =========================================================================
+ # BOOT & KERNEL CONFIGURATION
+ # =========================================================================
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+# boot.kernelParams = [
+# "drm.edid_firmware=DP-1:edid/mi_edid.bin"
+# "video=DP-1:2560x1440@180"
+# ];
+
+ # Custom EDID firmware loading for monitor
+ hardware.firmware = [
+ (pkgs.runCommand "custom-edid" {} ''
+ mkdir -p $out/lib/firmware/edid
+ cp ${./mi_edid.bin} $out/lib/firmware/edid/mi_edid.bin
+ '')
+ ];
+
+ # =========================================================================
+ # HARDWARE, FILESYSTEMS & GRAPHICS
+ # =========================================================================
+ 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" ];
+ hardware.nvidia = {
+ modesetting.enable = true;
+ powerManagement.enable = false;
+ open = false;
+ nvidiaSettings = true;
+ package = config.boot.kernelPackages.nvidiaPackages.latest;
+ };
+
+ # Appimage settings
+ programs.appimage = {
+ 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 Configuration (Mullvad Base Primary -> Quad9 Fallback)
+ services.resolved = {
+ enable = true;
+ 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"
+ ];
+ };
+
+
+ # Avahi (Printer / Network Discovery)
+ services.avahi = {
+ enable = true;
+ nssmdns4 = true;
+ openFirewall = true;
+ };
+
+ # =========================================================================
+ # LOCALIZATION & TIMEZONE
+ # =========================================================================
+ 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";
+ };
+
+ # =========================================================================
+ # USER ACCOUNTS & PRIVILEGES
+ # =========================================================================
+ users.users."seraphim" = {
+ isNormalUser = true;
+ description = "seraphim";
+ shell = pkgs.fish; # Sets Fish as your default user shell
+ extraGroups = [ "networkmanager" "wheel" ];
+ packages = with pkgs; [];
+ };
+
+ security.doas = {
+ enable = true;
+ extraRules = [
+ {
+ users = [ "seraphim" ];
+ keepEnv = true;
+ persist = true;
+ }
+ ];
+ };
+
+ # =========================================================================
+ # SHELLS & ENHANCEMENTS
+ # =========================================================================
+ programs.fish = {
+ enable = true;
+ interactiveShellInit = ''
+ set -g fish_greeting "" # Disables the welcome message
+ fzf --fish |
+ source
+ '';
+ shellAliases = {
+ ls = "eza -al --icons=auto";
+ ll = "eza -al --icons=auto";
+ };
+ };
+
+ programs.starship.enable = true;
+
+ # =========================================================================
+ # DISPLAY, WAYLAND & DESKTOP ENVIRONMENT
+ # =========================================================================
+ programs.niri.enable = true;
+ programs.noctalia-greeter = {
+ enable = true;
+ settings = {
+ cursor = {
+ theme = "Bibata-Modern-Ice";
+ size = 24;
+ path = "${pkgs.bibata-cursors}/share/icons";
+ };
+ };
+ };
+
+ qt = {
+ enable = true;
+ platformTheme = "qt5ct";
+ style = "breeze";
+ };
+
+ xdg.portal = {
+ enable = true;
+ extraPortals = [
+ pkgs.xdg-desktop-portal-gnome
+ pkgs.xdg-desktop-portal-gtk
+ ];
+ };
+
+ # Environment Variables
+ environment.variables = {
+ SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt";
+ NIX_SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt";
+ };
+
+ environment.sessionVariables = {
+ SHELL = "${pkgs.fish}/bin/fish";
+ LIBVA_DRIVER_NAME = "nvidia";
+ XCURSOR_THEME = "Bibata-Modern-Ice";
+ XCURSOR_SIZE = "20";
+ __GLX_VENDOR_LIBRARY_NAME = "nvidia";
+ NIXOS_OZONE_WL = "1";
+ 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";
+ };
+
+ # Fonts Configuration
+ fonts.fontconfig.enable = true;
+ fonts.packages = with pkgs; [
+ font-awesome
+ nerd-fonts.jetbrains-mono
+ nerd-fonts.symbols-only
+ jetbrains-mono
+ noto-fonts-color-emoji
+ ];
+
+ # =========================================================================
+ # AUDIO & SERVICES
+ # =========================================================================
+ security.rtkit.enable = true;
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ };
+ # printer service
+ services.printing = {
+ enable = true;
+ drivers = with pkgs; [
+ brlaser
+ cups-filters
+ gutenprint
+ ];
+ };
+
+ # MPD Music 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";
+ };
+
+ # System Utilities & Gaming
+ 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
+ '';
+
+ programs.steam = {
+ enable = true;
+ remotePlay.openFirewall = true;
+ dedicatedServer.openFirewall = true;
+ };
+
+ programs.throne = {
+ enable = true;
+ tunMode.enable = true;
+ };
+
+ # =========================================================================
+ # USER SERVICES
+ # =========================================================================
+ 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" ];
+ };
+ };
+
+ 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";
+ };
+ };
+
+ systemd.user.services.niri.enableDefaultPath = false;
+
+ # =========================================================================
+ # SYSTEM PACKAGES
+ # =========================================================================
+ environment.systemPackages = with pkgs;
+ [
+ # Flake Inputs & Hardware Overrides
+ inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
+ (btop.override { cudaSupport = true; })
+
+ # 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
+ fastfetch
+ fd
+ foot
+ fzf
+ ghfetch
+ ghostty
+ hyfetch
+ stow
+ util-linux
+ pkgs.vimPlugins.im-select-nvim
+
+ # Audio & Music Controls
+ brightnessctl
+ mpc
+ mpd
+ mpd-mpris
+ mpv
+ pamixer
+ pavucontrol
+ playerctl
+ rmpc
+
+ # Text Editors
+ micro
+ neovim
+ (emacs.override {
+ withNativeCompilation = true;
+ })
+
+ # File Managers & Archiving
+ file-roller
+ kdePackages.ark
+ kdePackages.qt6ct
+ loupe
+ nautilus
+ sushi
+ yazi
+
+ # Utilities & Disk Tools
+ caligula
+ cryptsetup
+ yt-dlp
+
+ # GStreamer Codecs
+ gst_all_1.gst-plugins-bad
+ gst_all_1.gst-plugins-base
+ gst_all_1.gst-plugins-good
+ gst_all_1.gst-plugins-ugly
+
+ # Wayland, Desktop UI & Utilities
+ adwaita-icon-theme
+ bibata-cursors
+ cliphist
+ fuzzel
+ grim
+ hicolor-icon-theme
+ hyprpolkitagent
+ noctalia-shell
+ slurp
+ wl-clipboard
+ wtype
+ xwayland-satellite
+
+ # Desktop Applications & Office
+ claude-code
+ keepassxc
+ libreoffice
+ hunspellDicts.ru_RU
+ nvidia-vaapi-driver
+ opencode
+ pkgs.ayugram-desktop
+ pkgs.legcord
+ pkgs.amnezia-vpn
+ obsidian
+ pkgs.lutris
+ pkgs.qbittorrent
+ pkgs.prismlauncher
+ pkgs.wireshark
+ # Software Development & Toolchains
+ black
+ cargo
+ clang
+ clippy
+ gcc
+ git
+ gnumake
+ nodejs
+ pyright
+ python3
+ rust-analyzer
+ rustc
+ tree-sitter
+ ];
+
+ system.stateVersion = "26.05";
+}
diff --git a/backup-nix/flake.lock b/backup-nix/flake.lock
new file mode 100644
index 0000000..ff02820
--- /dev/null
+++ b/backup-nix/flake.lock
@@ -0,0 +1,80 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1784796856,
+ "narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "e2587caef70cea85dd97d7daab492899902dbf5d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1784356753,
+ "narHash": "sha256-zupdTm41be2fY8cexroEOGjopl3F2Gqs3gk7ieqaM3s=",
+ "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a",
+ "type": "tarball",
+ "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1036777.61b7c44c4073/nixexprs.tar.xz"
+ },
+ "original": {
+ "type": "tarball",
+ "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
+ }
+ },
+ "noctalia": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_2"
+ },
+ "locked": {
+ "lastModified": 1784974993,
+ "narHash": "sha256-RmVxiI/YkZigIB5uBuMZqdjaABtiyPejT+JEFAC8ras=",
+ "owner": "noctalia-dev",
+ "repo": "noctalia",
+ "rev": "89ad48e73af8ad4e8b42707912b12833443d819c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "noctalia-dev",
+ "repo": "noctalia",
+ "type": "github"
+ }
+ },
+ "noctalia-greeter": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1784707224,
+ "narHash": "sha256-K8yyxX/sShhVznU/3ejZgriayg8Fyac+bR4dCTB1864=",
+ "owner": "noctalia-dev",
+ "repo": "noctalia-greeter",
+ "rev": "8e53bb30f1d1179c0bd2275b02915258827d62eb",
+ "type": "github"
+ },
+ "original": {
+ "owner": "noctalia-dev",
+ "repo": "noctalia-greeter",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs",
+ "noctalia": "noctalia",
+ "noctalia-greeter": "noctalia-greeter"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/backup-nix/flake.nix b/backup-nix/flake.nix
new file mode 100644
index 0000000..f5f5b35
--- /dev/null
+++ b/backup-nix/flake.nix
@@ -0,0 +1,26 @@
+{
+ description = "Noctalia shell conf";
+
+ inputs = {
+ # Main tree
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ # Noctalia v5
+ noctalia.url = "github:noctalia-dev/noctalia";
+ noctalia-greeter = {
+ url = "github:noctalia-dev/noctalia-greeter";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ };
+
+ outputs = { self, nixpkgs, noctalia, ... }@inputs: {
+ nixosConfigurations.opus = nixpkgs.lib.nixosSystem {
+ system = "x86_64-linux";
+ specialArgs = { inherit inputs; };
+ modules = [
+ ./configuration.nix
+ ];
+ };
+ };
+}
diff --git a/backup-nix/hardware-configuration.nix b/backup-nix/hardware-configuration.nix
new file mode 100644
index 0000000..5163270
--- /dev/null
+++ b/backup-nix/hardware-configuration.nix
@@ -0,0 +1,33 @@
+# 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/backup-nix/mi_edid.bin b/backup-nix/mi_edid.bin
new file mode 100644
index 0000000..98a9522
--- /dev/null
+++ b/backup-nix/mi_edid.bin
Binary files differ