diff --git a/.envrc b/.envrc deleted file mode 100644 index ec41858..0000000 --- a/.envrc +++ /dev/null @@ -1 +0,0 @@ -eval "$(devenv direnvrc)" diff --git a/Makefile b/Makefile deleted file mode 100644 index d2f7931..0000000 --- a/Makefile +++ /dev/null @@ -1,67 +0,0 @@ -# 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/assets/wallpaper.png b/assets/wallpaper.png new file mode 100644 index 0000000..a210fe7 Binary files /dev/null and b/assets/wallpaper.png differ diff --git a/devenv.lock b/devenv.lock deleted file mode 100644 index 1d3c354..0000000 --- a/devenv.lock +++ /dev/null @@ -1,65 +0,0 @@ -{ - "nodes": { - "devenv": { - "locked": { - "dir": "src/modules", - "lastModified": 1788547743, - "narHash": "sha256-IppAkVcpH55MHAljWOthUEF/crrX3Rs8ZBSzuGes3gA=", - "owner": "cachix", - "repo": "devenv", - "rev": "77f76dbb618d6c91d7dbba369da1483228f3fd6f", - "type": "github" - }, - "original": { - "dir": "src/modules", - "owner": "cachix", - "repo": "devenv", - "type": "github" - } - }, - "nixpkgs": { - "inputs": { - "nixpkgs-src": "nixpkgs-src" - }, - "locked": { - "lastModified": 1787753358, - "narHash": "sha256-Tl77VbWyAKrOfRNQhL6JbQtb/MLzbYa/1RG1gWWfICk=", - "owner": "cachix", - "repo": "devenv-nixpkgs", - "rev": "256551e45f6303e142ab4a98be1bf243feb77dc0", - "type": "github" - }, - "original": { - "owner": "cachix", - "ref": "rolling", - "repo": "devenv-nixpkgs", - "type": "github" - } - }, - "nixpkgs-src": { - "flake": false, - "locked": { - "lastModified": 1787394516, - "narHash": "sha256-pRGOQSClnXNI2iLUG6DYpsGvYcuw0drOutVZFTJNw90=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c8f90650c15282fa8656a041bfbbd2403997a9a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "devenv": "devenv", - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} \ No newline at end of file diff --git a/devenv.nix b/devenv.nix deleted file mode 100644 index 9d22604..0000000 --- a/devenv.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ 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 deleted file mode 100644 index 3dcab58..0000000 --- a/devenv.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# 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 index e88410c..3112750 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1789273010, - "narHash": "sha256-E7dWx+utzZPpqQsBUd5sMimKTWMEEbTKFD+ya99Shps=", + "lastModified": 1790928438, + "narHash": "sha256-ZuJbu8VQe/Qzy7GJdZ3Xv7adRllH1o4O7nqONtkhFbA=", "owner": "nix-community", "repo": "home-manager", - "rev": "fdc36b12804b0179b24a5ffd282e4c95c37072e2", + "rev": "833540099ef43cbeb28b1e3f3c21901961edb48e", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1789149629, - "narHash": "sha256-eQUZVehWLDBbpBR2rq6DnuRee1ULT6Y675RhsYDSjYI=", - "rev": "eaad089433ca2bb662274377d33df3d0e51ef28b", + "lastModified": 1790822859, + "narHash": "sha256-VBA0QerzzmL+4wxgtwiCdiLwLpJg2/9xOxhgO3BRJQA=", + "rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1072397.eaad089433ca/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1083223.c59305bab206/nixexprs.tar.zst" }, "original": { "id": "nixpkgs", @@ -71,11 +71,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1788991189, - "narHash": "sha256-0TxfMgqW0/BLD4M942c5DCKYrtPvzsPJwvdcco4LQUM=", + "lastModified": 1790770493, + "narHash": "sha256-sNWVkfOVelr60lWHvEgCWx7Mr/2PcoAN8oOrOk7Yp/g=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "add2795134593faafce60e404a0a75df68e9ee0c", + "rev": "b5690b56d749526a05db9b9268d58bf8f700957f", "type": "github" }, "original": { @@ -94,11 +94,11 @@ ] }, "locked": { - "lastModified": 1789239533, - "narHash": "sha256-x6LDRbyl+trEnwrFth2SAdDf8x4SM7DWcjmR2JUxtAg=", + "lastModified": 1790940304, + "narHash": "sha256-i1W4IdG9PVdSRN1rvTHaqiVqvnRS3+OXgaQa7z5iRDc=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "b66d03970382d5185e040110b24ecb7a39df0e80", + "rev": "b12abb753335dd3b9ba5ea90d3be799bd9b2dc29", "type": "github" }, "original": { diff --git a/home/config/default.nix b/home/config/default.nix index 2a4c069..2a7523b 100644 --- a/home/config/default.nix +++ b/home/config/default.nix @@ -15,4 +15,14 @@ recursive = true; source = ./fuzzel; }; + # Shared with SDDM (nixos/dm/sddm.nix); niri loads it from this path. + home.file."Pictures/Wallpapers/wallpaper.png" = { + force = true; + source = ../../assets/wallpaper.png; + }; + xdg.configFile."helix" = { + force = true; + recursive = true; + source = ./helix; + }; } diff --git a/home/config/helix/config.toml b/home/config/helix/config.toml new file mode 100644 index 0000000..49e75ca --- /dev/null +++ b/home/config/helix/config.toml @@ -0,0 +1,19 @@ +theme = "kanagawa-dragon-transparent" + +[editor] +line-number = "relative" +cursorline = true +color-modes = true +bufferline = "multiple" +true-color = true + +[editor.cursor-shape] +insert = "bar" +normal = "block" +select = "underline" + +[editor.indent-guides] +render = true + +[editor.lsp] +display-inlay-hints = true diff --git a/home/config/helix/themes/kanagawa-dragon-transparent.toml b/home/config/helix/themes/kanagawa-dragon-transparent.toml new file mode 100644 index 0000000..b7e9a89 --- /dev/null +++ b/home/config/helix/themes/kanagawa-dragon-transparent.toml @@ -0,0 +1,3 @@ +inherits = "kanagawa-dragon" + +"ui.background" = { fg = "dragonWhite" } diff --git a/home/config/niri/startup.kdl b/home/config/niri/startup.kdl index 44a8542..140a112 100644 --- a/home/config/niri/startup.kdl +++ b/home/config/niri/startup.kdl @@ -1,2 +1,2 @@ spawn-at-startup "awww-daemon" -spawn-at-startup "awww img ~/Pictures/Wallpapers/Wallpaper.png --resize crop --crop-gravity center" +spawn-at-startup "awww img ~/Pictures/Wallpapers/wallpaper.png --resize crop --crop-gravity center" diff --git a/home/packages/desktop.nix b/home/packages/desktop.nix index 2f66930..7117d2d 100644 --- a/home/packages/desktop.nix +++ b/home/packages/desktop.nix @@ -20,7 +20,6 @@ fuzzel gparted pavucontrol - vesktop wev wl-clip-persist yazi diff --git a/home/packages/development.nix b/home/packages/development.nix index cd564fb..9327ee4 100644 --- a/home/packages/development.nix +++ b/home/packages/development.nix @@ -2,15 +2,17 @@ { programs.zed-editor = { enable = true; - defaultEditor = true; + defaultEditor = false; }; home.packages = with pkgs; [ devenv + github-copilot-app github-copilot-cli nil nixd jujutsu just + helix ]; } diff --git a/home/packages/gaming.nix b/home/packages/gaming.nix index 61510dd..f3a0dba 100644 --- a/home/packages/gaming.nix +++ b/home/packages/gaming.nix @@ -4,9 +4,11 @@ awakened-poe-trade lutris rusty-path-of-building - protonup-rs + protonup-qt protontricks winetricks mangohud + steamtinkerlaunch + gamma-launcher ]; } diff --git a/home/packages/hardware.nix b/home/packages/hardware.nix index 0f85e80..0d76b9a 100644 --- a/home/packages/hardware.nix +++ b/home/packages/hardware.nix @@ -3,6 +3,7 @@ home.packages = with pkgs; [ wootility wooting-udev-rules + helvum ]; services.udiskie = { diff --git a/home/packages/web.nix b/home/packages/web.nix index b8f38ef..33741c2 100644 --- a/home/packages/web.nix +++ b/home/packages/web.nix @@ -1,9 +1,34 @@ -{ inputs, ... }: +{ pkgs, inputs, ... }: +let + # Track latest upstream Equicord release (nixpkgs lags behind). + equicord = pkgs.equicord.overrideAttrs (finalAttrs: prev: { + version = "2026-10-01"; + src = pkgs.fetchFromGitHub { + owner = "Equicord"; + repo = "Equicord"; + tag = finalAttrs.version; + hash = "sha256-hk2/djNmbwIBwVAJ1bj3ayurj85EPfMUgmAr1SpYlvw="; + }; + pnpmDeps = prev.pnpmDeps.overrideAttrs { + inherit (finalAttrs) src; + outputHash = "sha256-rx8z6PAlAPaZbkmg+3Vvq8OXR/yy5ZP0PmAk97ZDOSQ="; + }; + }); +in { imports = [ inputs.zen-browser.homeModules.twilight ]; + home.packages = with pkgs; [ + (discord.override { + withEquicord = true; + withOpenASAR = true; + inherit equicord; + }) + chromium + ]; + programs.zen-browser = { enable = true; setAsDefaultBrowser = true; diff --git a/justfile b/justfile index cb2bbae..697a229 100644 --- a/justfile +++ b/justfile @@ -54,8 +54,8 @@ clean-home-manager: clean-all: clean-system clean-user clean-home-manager @echo "All cleanups successfully completed!" -# Rebuild. -rebuild: +# Build. +build: @echo "--- Rebuilding System ---" sudo nixos-rebuild switch --flake diff --git a/nixos/default.nix b/nixos/default.nix index 39dd0ce..e7779bc 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -12,7 +12,7 @@ ./network/bluetooth.nix ./network/usb.nix ./steam/steam.nix - ./steam/programs.nix + ./programs/obs.nix ]; boot.loader.systemd-boot.enable = true; diff --git a/nixos/dm/sddm.nix b/nixos/dm/sddm.nix index f890a2d..b9e4694 100644 --- a/nixos/dm/sddm.nix +++ b/nixos/dm/sddm.nix @@ -1,7 +1,67 @@ -{ ... }: +{ pkgs, lib, config, ... }: +let + # Same wallpaper niri displays (see home/config/default.nix). + wallpaper = ../../assets/wallpaper.png; + + sddmTheme = + (pkgs.sddm-astronaut.override { + themeConfig = { + Background = "Backgrounds/wallpaper.png"; + CropBackground = "true"; + }; + }).overrideAttrs + (old: { + postInstall = (old.postInstall or "") + '' + chmod u+w $out/share/sddm/themes/sddm-astronaut-theme/Backgrounds + install -Dm644 ${wallpaper} $out/share/sddm/themes/sddm-astronaut-theme/Backgrounds/wallpaper.png + ''; + }); + + # Weston (the greeter compositor) must use the same modes as niri + # (home/config/niri/outputs.kdl), otherwise the monitors do a full + # modeset when niri takes over, causing a black screen on login. + xkb = config.services.xserver.xkb; + westonIni = (pkgs.formats.iniWithGlobalSection { }).generate "weston.ini" { + sections = { + libinput = { + enable-tap = config.services.libinput.mouse.tapping; + left-handed = config.services.libinput.mouse.leftHanded; + }; + keyboard = { + keymap_model = xkb.model; + keymap_layout = xkb.layout; + keymap_variant = xkb.variant; + keymap_options = xkb.options; + }; + }; + }; + westonOutputs = pkgs.writeText "weston-outputs.ini" '' + [output] + name=DP-2 + mode=2560x1440@240 + + [output] + name=DP-3 + mode=1920x1080@144 + transform=rotate-90 + ''; + westonConfig = pkgs.runCommand "weston.ini" { } '' + cat ${westonIni} > $out + echo >> $out + cat ${westonOutputs} >> $out + ''; +in { services.displayManager.sddm = { enable = true; - wayland.enable = true; + wayland = { + enable = true; + compositorCommand = "${lib.getExe pkgs.weston} --shell=kiosk -c ${westonConfig}"; + }; + package = pkgs.kdePackages.sddm; + theme = "sddm-astronaut-theme"; + extraPackages = [ sddmTheme ]; }; + + environment.systemPackages = [ sddmTheme ]; } diff --git a/nixos/graphics/nvidia.nix b/nixos/graphics/nvidia.nix index d8f5ffa..51a32b8 100644 --- a/nixos/graphics/nvidia.nix +++ b/nixos/graphics/nvidia.nix @@ -11,6 +11,7 @@ }; environment.systemPackages = with pkgs; [ + egl-wayland libva-utils nvidia-vaapi-driver nvtopPackages.nvidia diff --git a/nixos/programs/obs.nix b/nixos/programs/obs.nix index ce66299..4cdf771 100644 --- a/nixos/programs/obs.nix +++ b/nixos/programs/obs.nix @@ -10,6 +10,7 @@ enableVirtualCamera = true; plugins = with pkgs.obs-studio-plugins; [ + wlrobs obs-pipewire-audio-capture ]; };