From adefce92cf794d5a086975c96c3380354cb583d7 Mon Sep 17 00:00:00 2001 From: Prouk Date: Thu, 23 Jul 2026 18:45:14 +0200 Subject: [PATCH] Initial commit --- .envrc | 1 + .gitignore | 10 +++++ Makefile | 67 ++++++++++++++++++++++++++++++ devenv.nix | 46 +++++++++++++++++++++ devenv.yaml | 18 ++++++++ flake.lock | 70 ++++++++++++++++++++++++++++++++ flake.nix | 42 +++++++++++++++++++ home/code.nix | 12 ++++++ home/config/default.nix | 8 ++++ home/config/niri/animations.kdl | 2 + home/config/niri/config.kdl | 21 ++++++++++ home/config/niri/env.kdl | 60 +++++++++++++++++++++++++++ home/config/niri/inputs.kdl | 24 +++++++++++ home/config/niri/keybinds.kdl | 37 +++++++++++++++++ home/config/niri/layout.kdl | 35 ++++++++++++++++ home/config/niri/outputs.kdl | 11 +++++ home/config/niri/startup.kdl | 2 + home/config/niri/wrules.kdl | 9 ++++ home/default.nix | 37 +++++++++++++++++ home/look.nix | 16 ++++++++ home/programs.nix | 11 +++++ home/user.nix | 5 +++ nixos/audio.nix | 17 ++++++++ nixos/default.nix | 64 +++++++++++++++++++++++++++++ nixos/dm/sddm.nix | 7 ++++ nixos/fonts/fonts.nix | 17 ++++++++ nixos/graphics/default.nix | 10 +++++ nixos/graphics/nvidia.nix | 20 +++++++++ nixos/hardware-configuration.nix | 58 ++++++++++++++++++++++++++ nixos/inputs/wooting.nix | 4 ++ nixos/network/bluetooth.nix | 12 ++++++ nixos/steam/steam.nix | 16 ++++++++ nixos/wm/niri.nix | 13 ++++++ 33 files changed, 782 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 devenv.nix create mode 100644 devenv.yaml create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home/code.nix create mode 100644 home/config/default.nix create mode 100644 home/config/niri/animations.kdl create mode 100644 home/config/niri/config.kdl create mode 100644 home/config/niri/env.kdl create mode 100644 home/config/niri/inputs.kdl create mode 100644 home/config/niri/keybinds.kdl create mode 100644 home/config/niri/layout.kdl create mode 100644 home/config/niri/outputs.kdl create mode 100644 home/config/niri/startup.kdl create mode 100644 home/config/niri/wrules.kdl create mode 100644 home/default.nix create mode 100644 home/look.nix create mode 100644 home/programs.nix create mode 100644 home/user.nix create mode 100644 nixos/audio.nix create mode 100644 nixos/default.nix create mode 100644 nixos/dm/sddm.nix create mode 100644 nixos/fonts/fonts.nix create mode 100644 nixos/graphics/default.nix create mode 100644 nixos/graphics/nvidia.nix create mode 100644 nixos/hardware-configuration.nix create mode 100644 nixos/inputs/wooting.nix create mode 100644 nixos/network/bluetooth.nix create mode 100644 nixos/steam/steam.nix create mode 100644 nixos/wm/niri.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..ec41858 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +eval "$(devenv direnvrc)" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae49879 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# Devenv +.devenv* +devenv.local.nix +devenv.local.yaml + +# direnv +.direnv + +# pre-commit +.pre-commit-config.yaml diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d2f7931 --- /dev/null +++ b/Makefile @@ -0,0 +1,67 @@ +# Makefile to safely clean up NixOS profiles, keeping only the last 3 generations. + +.PHONY: help dry-run clean-system clean-user clean-home-manager clean-all + +# Default target displays the help menu +help: + @echo "NixOS Profile Cleanup Utility" + @echo "=============================" + @echo "Available targets:" + @echo " make dry-run - Safe preview of what will be deleted" + @echo " make clean-system - Clean system generations and update bootloader (requires sudo)" + @echo " make clean-user - Clean current user's profile generations" + @echo " make clean-home-manager - Clean Home Manager generations (if applicable)" + @echo " make clean-all - Clean everything (System, User, and Home Manager)" + +# Dry run to preview changes without deleting anything +dry-run: + @echo "=== [DRY RUN] System Profile ===" + sudo nix-env --profile /nix/var/nix/profiles/system --delete-generations +3 --dry-run + @echo "\n=== [DRY RUN] User Profile ===" + nix-env --delete-generations +3 --dry-run + @echo "\n=== [DRY RUN] Home Manager Profile ===" + @if [ -d "$$HOME/.local/state/nix/profiles/home-manager" ]; then \ + nix-env --profile "$$HOME/.local/state/nix/profiles/home-manager" --delete-generations +3 --dry-run; \ + elif [ -d "$$HOME/.nix-profile" ]; then \ + echo "No Home Manager directory found, but user profile exists."; \ + else \ + echo "No Home Manager profile detected."; \ + fi + +# Clean system generations (requires sudo) +clean-system: + @echo "--- Cleaning System Profile (SUDO) ---" + sudo nix-env --profile /nix/var/nix/profiles/system --delete-generations +3 + sudo nix-collect-garbage + @echo "--- Updating Bootloader Menu ---" + sudo nixos-rebuild boot --flake + +# Clean user generations (no sudo) +clean-user: + @echo "--- Cleaning User Profile ---" + nix-env --delete-generations +3 + nix-collect-garbage + +# Clean Home Manager generations (no sudo) +clean-home-manager: + @echo "--- Cleaning Home Manager Profile ---" + @if [ -d "$$HOME/.local/state/nix/profiles/home-manager" ]; then \ + nix-env --profile "$$HOME/.local/state/nix/profiles/home-manager" --delete-generations +3; \ + nix-collect-garbage; \ + else \ + echo "No Home Manager profile found. Skipping."; \ + fi + +# Clean everything in one go +clean-all: clean-system clean-user clean-home-manager + @echo "All cleanups successfully completed!" + +# Rebuild +rebuild: + @echo "--- Rebuilding System ---" + sudo nixos-rebuild switch --flake + +# Update flake +update: + @echo "--- Updating Flake ---" + sudo nix flake update diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..9d22604 --- /dev/null +++ b/devenv.nix @@ -0,0 +1,46 @@ +{ pkgs, lib, config, inputs, ... }: + +{ + # https://devenv.sh/basics/ + env.GREET = "devenv"; + + # https://devenv.sh/packages/ + packages = [ pkgs.git ]; + + # https://devenv.sh/languages/ + # languages.rust.enable = true; + + # https://devenv.sh/processes/ + # processes.dev.exec = "${lib.getExe pkgs.watchexec} -n -- ls -la"; + + # https://devenv.sh/services/ + # services.postgres.enable = true; + + # https://devenv.sh/scripts/ + scripts.hello.exec = '' + echo hello from $GREET + ''; + + # https://devenv.sh/basics/ + enterShell = '' + hello # Run scripts directly + git --version # Use packages + ''; + + # https://devenv.sh/tasks/ + # tasks = { + # "myproj:setup".exec = "mytool build"; + # "devenv:enterShell".after = [ "myproj:setup" ]; + # }; + + # https://devenv.sh/tests/ + enterTest = '' + echo "Running tests" + git --version | grep --color=auto "${pkgs.git.version}" + ''; + + # https://devenv.sh/git-hooks/ + # git-hooks.hooks.shellcheck.enable = true; + + # See full reference at https://devenv.sh/reference/options/ +} diff --git a/devenv.yaml b/devenv.yaml new file mode 100644 index 0000000..3dcab58 --- /dev/null +++ b/devenv.yaml @@ -0,0 +1,18 @@ +# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json +inputs: + nixpkgs: + url: github:cachix/devenv-nixpkgs/rolling + +# If you're using non-OSS software, you can set allow_unfree to true. +# allow_unfree: true + +# If you're not willing to allow unsupported packages: +# allow_unsupported_system: false + +# If you're willing to use a package that's vulnerable +# permitted_insecure_packages: +# - "openssl-1.1.1w" + +# If you have more than one devenv you can merge them +#imports: +# - ./backend diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..e834514 --- /dev/null +++ b/flake.lock @@ -0,0 +1,70 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1784789275, + "narHash": "sha256-cgRTWuG+u1tBPhm01JrId2k0Bni09phVJ1Q0BZlRd7M=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "3b0e6bbd65869af1beadf5963a99befc179d209f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1784497964, + "narHash": "sha256-WhdsTtaih3DgTPP/PX023b36UNQyMzEoi6GkPyGx0y4=", + "rev": "241313f4e8e508cb9b13278c2b0fa25b9ca27163", + "type": "tarball", + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1037713.241313f4e8e5/nixexprs.tar.xz" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "zen-browser": "zen-browser" + } + }, + "zen-browser": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1784822396, + "narHash": "sha256-gW59E7cwPetoOAcygLtHQX7a3C8VdWz6T0GazldcxU0=", + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "rev": "a68b1580a237cae4c9f86e04ac972726e3f87fdb", + "type": "github" + }, + "original": { + "owner": "0xc000022070", + "repo": "zen-browser-flake", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..1af607f --- /dev/null +++ b/flake.nix @@ -0,0 +1,42 @@ +{ + description = "Prouk's magnificent flake"; + + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + zen-browser = { + url = "github:0xc000022070/zen-browser-flake"; + inputs = { + nixpkgs.follows = "nixpkgs"; + home-manager.follows = "home-manager"; + }; + }; + }; + + outputs = + inputs@{ + nixpkgs, + home-manager, + ... + }: + { + nixosConfigurations.prouk = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./nixos + home-manager.nixosModules.home-manager + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { inherit inputs; }; + users.prouk = import ./home; + }; + } + ]; + }; + }; +} diff --git a/home/code.nix b/home/code.nix new file mode 100644 index 0000000..d514f7a --- /dev/null +++ b/home/code.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + programs.zed-editor = { + enable = true; + defaultEditor = true; + }; + home.packages = with pkgs; [ + devenv + nil + nixd + ]; +} diff --git a/home/config/default.nix b/home/config/default.nix new file mode 100644 index 0000000..34e2fef --- /dev/null +++ b/home/config/default.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + xdg.configFile."niri" = { + force = true; + recursive = true; + source = ./niri; + }; +} diff --git a/home/config/niri/animations.kdl b/home/config/niri/animations.kdl new file mode 100644 index 0000000..946e7ae --- /dev/null +++ b/home/config/niri/animations.kdl @@ -0,0 +1,2 @@ +animations { +} diff --git a/home/config/niri/config.kdl b/home/config/niri/config.kdl new file mode 100644 index 0000000..385d895 --- /dev/null +++ b/home/config/niri/config.kdl @@ -0,0 +1,21 @@ +include "startup.kdl" +include "env.kdl" +include "animations.kdl" +include "inputs.kdl" +include "keybinds.kdl" +include "layout.kdl" +include "outputs.kdl" +include "wrules.kdl" + +hotkey-overlay { + skip-at-startup +} + +cursor { + xcursor-theme "Colloid-dark-cursors" + xcursor-size 24 +} + +prefer-no-csd + +screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" diff --git a/home/config/niri/env.kdl b/home/config/niri/env.kdl new file mode 100644 index 0000000..684f9a5 --- /dev/null +++ b/home/config/niri/env.kdl @@ -0,0 +1,60 @@ +environment { + // ========================================================================= + // 1. NVIDIA & GBM BACKEND + // ========================================================================= + // Forces the Generic Buffer Manager (GBM) to use the NVIDIA DRM driver. + GBM_BACKEND "nvidia-drm" + + // Forces OpenGL/GLX applications to use the NVIDIA proprietary driver. + __GLX_VENDOR_LIBRARY_NAME "nvidia" + + // ========================================================================= + // 2. HARDWARE VIDEO ACCELERATION + // ========================================================================= + // Tells VA-API to use the NVIDIA driver for hardware-accelerated video. + LIBVA_DRIVER_NAME "nvidia" + + // REQUIRED if you use 'nvidia-vaapi-driver' for Firefox/Chromium video decoding. + NVD_BACKEND "direct" + + // ========================================================================= + // 3. VARIABLE REFRESH RATE (G-SYNC / VRR) + // ========================================================================= + // Enables G-Sync / Adaptive Sync for capable monitors. + __GL_GSYNC_ALLOWED "1" + + // Controls VRR. Note: If you experience desktop flickering, change this to "0". + __GL_VRR_ALLOWED "1" + + // ========================================================================= + // 4. TOOLKIT BACKENDS (Forces apps to run natively on Wayland) + // ========================================================================= + // GTK: Try Wayland first, fallback to X11 if necessary. + GDK_BACKEND "wayland,x11,*" + + // Qt: Use Wayland, fallback to X11. + QT_QPA_PLATFORM "wayland;xcb" + + // Prevents Qt from drawing its own window borders/decorations. + QT_WAYLAND_DISABLE_WINDOWDECORATION "1" + + // SDL: Forces games using modern SDL2/SDL3 to run natively on Wayland. + SDL_VIDEODRIVER "wayland" + + // Clutter: Force Wayland backend. + CLUTTER_BACKEND "wayland" + + // Firefox: Force native Wayland rendering (massively improves scrolling smoothness). + MOZ_ENABLE_WAYLAND "1" + + // Electron/Chromium: Automatically flags apps (VS Code, Discord, Obsidian) to use Wayland. + ELECTRON_OZONE_PLATFORM_HINT "auto" + + // ========================================================================= + // 5. DESKTOP SESSION IDENTIFICATION + // ========================================================================= + // Helps xdg-desktop-portal and styling tools recognize your environment. + XDG_SESSION_TYPE "wayland" + XDG_CURRENT_DESKTOP "niri" + XDG_SESSION_DESKTOP "niri" +} diff --git a/home/config/niri/inputs.kdl b/home/config/niri/inputs.kdl new file mode 100644 index 0000000..d50db50 --- /dev/null +++ b/home/config/niri/inputs.kdl @@ -0,0 +1,24 @@ +input { + keyboard { + xkb { + layout "us" + } + } + + touchpad { + off + } + + mouse { + accel-speed 1 + accel-profile "flat" + } + + trackpoint { + off + } + + warp-mouse-to-focus + + focus-follows-mouse max-scroll-amount="0%" +} diff --git a/home/config/niri/keybinds.kdl b/home/config/niri/keybinds.kdl new file mode 100644 index 0000000..41b98c3 --- /dev/null +++ b/home/config/niri/keybinds.kdl @@ -0,0 +1,37 @@ +binds { + Mod+Shift+Slash { show-hotkey-overlay; } + + Mod+Tab repeat=false { toggle-overview; } + + Mod+Escape repeat=false { close-window; } + + Mod+Left { focus-column-or-monitor-left; } + Mod+Right { focus-column-or-monitor-right; } + + Mod+Alt+Left { move-column-left-or-to-monitor-left; } + Mod+Alt+Right { move-column-right-or-to-monitor-right; } + Mod+Alt+Up { move-window-up-or-to-workspace-up; } + Mod+Alt+Down { move-window-down-or-to-workspace-down; } + Mod+Up { focus-workspace-up; } + Mod+Down { focus-workspace-down; } + + Mod+R { switch-preset-column-width; } + + Mod+Ctrl+R { reset-window-height; } + + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + + F11 { toggle-windowed-fullscreen; } + Mod+F11 { fullscreen-window; } + Mod+F { toggle-window-floating; } + Mod+Shift+F { switch-focus-between-floating-and-tiling; } + + + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + + Mod+Q { spawn "alacritty"; } + Mod+Grave { spawn "fuzzel"; } +} diff --git a/home/config/niri/layout.kdl b/home/config/niri/layout.kdl new file mode 100644 index 0000000..7271423 --- /dev/null +++ b/home/config/niri/layout.kdl @@ -0,0 +1,35 @@ +layout { + background-color "transparent" + gaps 16 + + center-focused-column "never" + + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + + default-column-width { proportion 0.5; } + + focus-ring { + off + } + + border { + off + } + + shadow { + } + + struts { + } + + empty-workspace-above-first +} + +layer-rule { + match namespace="^awww-daemon$" + place-within-backdrop true +} diff --git a/home/config/niri/outputs.kdl b/home/config/niri/outputs.kdl new file mode 100644 index 0000000..923188e --- /dev/null +++ b/home/config/niri/outputs.kdl @@ -0,0 +1,11 @@ +output "DP-2" { + mode "2560x1440@239.970" + variable-refresh-rate + focus-at-startup +} + +output "DP-3" { + mode "1920x1080@143.981" + transform "90" + position x=-1080 y=-440 +} diff --git a/home/config/niri/startup.kdl b/home/config/niri/startup.kdl new file mode 100644 index 0000000..44a8542 --- /dev/null +++ b/home/config/niri/startup.kdl @@ -0,0 +1,2 @@ +spawn-at-startup "awww-daemon" +spawn-at-startup "awww img ~/Pictures/Wallpapers/Wallpaper.png --resize crop --crop-gravity center" diff --git a/home/config/niri/wrules.kdl b/home/config/niri/wrules.kdl new file mode 100644 index 0000000..e8916de --- /dev/null +++ b/home/config/niri/wrules.kdl @@ -0,0 +1,9 @@ +window-rule { + match title="^Picture-in-Picture$" + open-floating true +} + +window-rule { + geometry-corner-radius 12 + clip-to-geometry true +} diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..1494075 --- /dev/null +++ b/home/default.nix @@ -0,0 +1,37 @@ +{ + pkgs, + ... +}: + +{ + imports = [ + ./user.nix + ./programs.nix + ./code.nix + ./config + ./look.nix + ]; + + programs.git.enable = true; + programs.bash.enable = true; + programs.direnv = { + enable = true; + enableBashIntegration = true; + }; + home.packages = with pkgs; [ + xwayland-satellite + github-copilot-cli + vesktop + pavucontrol + wev + lutris + fuzzel + gparted + yazi + btop + awww + wootility + wooting-udev-rules + ]; + home.stateVersion = "26.05"; +} diff --git a/home/look.nix b/home/look.nix new file mode 100644 index 0000000..b13c646 --- /dev/null +++ b/home/look.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +{ + gtk = { + enable = true; + }; + + home.pointerCursor = { + enable = true; + gtk.enable = true; + x11.enable = true; + + package = pkgs.colloid-cursors; + name = "Colloid-dark-cursors"; + size = 24; + }; +} diff --git a/home/programs.nix b/home/programs.nix new file mode 100644 index 0000000..305c9db --- /dev/null +++ b/home/programs.nix @@ -0,0 +1,11 @@ +{ inputs, ... }: +{ + imports = [ + inputs.zen-browser.homeModules.twilight + ]; + + programs.zen-browser = { + enable = true; + setAsDefaultBrowser = true; + }; +} diff --git a/home/user.nix b/home/user.nix new file mode 100644 index 0000000..e2f2073 --- /dev/null +++ b/home/user.nix @@ -0,0 +1,5 @@ +{ ... }: +{ + home.username = "prouk"; + home.homeDirectory = "/home/prouk"; +} diff --git a/nixos/audio.nix b/nixos/audio.nix new file mode 100644 index 0000000..9b4f686 --- /dev/null +++ b/nixos/audio.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: + +{ + security.rtkit.enable = true; + + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + + environment.systemPackages = with pkgs; [ + alsa-scarlett-gui + ]; +} diff --git a/nixos/default.nix b/nixos/default.nix new file mode 100644 index 0000000..6939c24 --- /dev/null +++ b/nixos/default.nix @@ -0,0 +1,64 @@ +{ pkgs, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ./graphics + ./audio.nix + ./fonts/fonts.nix + ./dm/sddm.nix + ./wm/niri.nix + ./inputs/wooting.nix + ./inputs/wooting.nix + ./network/bluetooth.nix + ./steam/steam.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "prouk"; + networking.networkmanager.enable = true; + + time.timeZone = "Europe/Paris"; + + users.users.prouk = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + }; + + programs.firefox.enable = true; + programs.nix-ld.enable = true; + + nixpkgs.config.allowUnfree = true; + nixpkgs.config.permittedInsecurePackages = [ + "electron-40.10.5" + ]; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + # NO TOUCHY + system.stateVersion = "26.05"; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + environment.systemPackages = with pkgs; [ + gnumake + ]; + + nix.settings = { + trusted-users = [ "prouk" ]; + + substituters = [ + "https://cache.nixos.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; +} diff --git a/nixos/dm/sddm.nix b/nixos/dm/sddm.nix new file mode 100644 index 0000000..f890a2d --- /dev/null +++ b/nixos/dm/sddm.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + }; +} diff --git a/nixos/fonts/fonts.nix b/nixos/fonts/fonts.nix new file mode 100644 index 0000000..4458d58 --- /dev/null +++ b/nixos/fonts/fonts.nix @@ -0,0 +1,17 @@ +{ pkgs, ... }: +{ + fonts = { + packages = with pkgs; [ + nerd-fonts.iosevka + nerd-fonts.symbols-only + ]; + fontconfig = { + enable = true; + defaultFonts = { + emoji = [ + + ]; + }; + }; + }; +} diff --git a/nixos/graphics/default.nix b/nixos/graphics/default.nix new file mode 100644 index 0000000..97cb45f --- /dev/null +++ b/nixos/graphics/default.nix @@ -0,0 +1,10 @@ +{ ... }: +{ + hardware.graphics = { + enable = true; + }; + + imports = [ + ./nvidia.nix + ]; +} diff --git a/nixos/graphics/nvidia.nix b/nixos/graphics/nvidia.nix new file mode 100644 index 0000000..ae55d50 --- /dev/null +++ b/nixos/graphics/nvidia.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + branch = "bleeding_edge"; + modesetting.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + open = true; + nvidiaSettings = true; + }; + + environment.systemPackages = with pkgs; [ + libva-utils + nvidia-vaapi-driver + nvtopPackages.nvidia + ]; +} diff --git a/nixos/hardware-configuration.nix b/nixos/hardware-configuration.nix new file mode 100644 index 0000000..35e9971 --- /dev/null +++ b/nixos/hardware-configuration.nix @@ -0,0 +1,58 @@ +# 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, + modulesPath, + ... +}: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "usb_storage" + "usbhid" + "sd_mod" + ]; + boot.initrd.kernelModules = [ + "nvidia" + "nvidia-modeset" + "nvidia-uvm" + "nvidia-drm" + ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/fffa5d3f-1684-4434-bbdd-a8792659355f"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/AA82-FC59"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + fileSystems."/BIGNVME" = { + device = "/dev/disk/by-uuid/866d8acc-fd1b-4c03-aad2-91e4d099d4e4"; + fsType = "ext4"; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/95a4ca9d-b04f-4f5a-b1be-b1b17cba9a7b"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/inputs/wooting.nix b/nixos/inputs/wooting.nix new file mode 100644 index 0000000..3dda70e --- /dev/null +++ b/nixos/inputs/wooting.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + hardware.wooting.enable = true; +} diff --git a/nixos/network/bluetooth.nix b/nixos/network/bluetooth.nix new file mode 100644 index 0000000..8449584 --- /dev/null +++ b/nixos/network/bluetooth.nix @@ -0,0 +1,12 @@ +{ ... }: +{ + hardware.bluetooth = { + enable = true; + settings = { + General = { + Experimental = true; + }; + }; + }; + services.blueman.enable = true; +} diff --git a/nixos/steam/steam.nix b/nixos/steam/steam.nix new file mode 100644 index 0000000..87ceb6e --- /dev/null +++ b/nixos/steam/steam.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +{ + programs = { + steam.enable = true; + gamescope = { + enable = true; + capSysNice = false; + }; + }; + environment.systemPackages = with pkgs; [ + SDL2 + protonup-rs + protontricks + winetricks + ]; +} diff --git a/nixos/wm/niri.nix b/nixos/wm/niri.nix new file mode 100644 index 0000000..2592245 --- /dev/null +++ b/nixos/wm/niri.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +{ + programs.niri.enable = true; + programs.xwayland.enable = true; + + environment.variables = { + NIXOS_OZONE_WLEGL = "1"; + }; + + environment.systemPackages = with pkgs; [ + alacritty + ]; +}