diff --git a/flake.nix b/flake.nix index 95bce6e..cafb311 100644 --- a/flake.nix +++ b/flake.nix @@ -2,10 +2,10 @@ description = "Nix config entry point"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; # Home manager - home-manager.url = "github:nix-community/home-manager/release-24.11"; + home-manager.url = "github:nix-community/home-manager/release-25.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; # Managing flatpak apps nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; diff --git a/modules/home-manager/code.nix b/modules/home-manager/code.nix index 93194ff..7e9c1eb 100644 --- a/modules/home-manager/code.nix +++ b/modules/home-manager/code.nix @@ -3,20 +3,119 @@ programs.vscode = { enable = true; - extensions = with pkgs.vscode-extensions; [ - # QOL - mhutchie.git-graph - redhat.vscode-yaml - github.copilot + profiles = { + default = { + extensions = with pkgs.vscode-extensions; [ + # QOL + mhutchie.git-graph + redhat.vscode-yaml + github.copilot - # python - ms-python.python - ms-python.isort - ms-python.debugpy - ms-python.vscode-pylance + # python + ms-python.python + ms-python.isort + ms-python.debugpy + ms-python.vscode-pylance + + # Nix language + jnoortheen.nix-ide + ]; + }; + + keybindings = { + "ctrl+shift+." = "workbench.action.terminal.focus"; + "ctlr+#" = "editor.action.commentLine"; + }; + + userSettings = '' + { + "telemetry.enableCrashReporter": false, + "telemetry.enableTelemetry": false, + "git.ignoreMissingGitWarning": true, + "editor.suggestSelection": "first", + "workbench.editorAssociations": { + "*.ipynb": "jupyter-notebook" + }, + "workbench.startupEditor": "newUntitledFile", + "editor.renderWhitespace": "none", + "editor.acceptSuggestionOnEnter": "off", + "explorer.confirmDelete": false, + "git.confirmSync": false, + "workbench.iconTheme": "vs-seti", + "editor.fontLigatures": true, + "explorer.confirmDragAndDrop": false, + "editor.wordWrap": "on", + "files.associations": { + }, + "settingsSync.ignoredSettings": [ + "editor.fontFamily", + "terminal.integrated.fontFamily", + "-python.venvFolders" + ], + "jupyter.askForKernelRestart": false, + "security.workspace.trust.untrustedFiles": "open", + "notebook.cellToolbarLocation": { + "default": "right", + "jupyter-notebook": "left" + }, + "git.enableSmartCommit": true, + "terminal.integrated.fontFamily": "Fira Code", + "settingsSync.ignoredExtensions": [ + "ms-vscode-remote.remote-wsl", + "ms-vscode-remote.remote-ssh-edit", + "ms-vscode-remote.remote-ssh" + ], + "editor.bracketPairColorization.enabled": true, + "jupyter.widgetScriptSources": [ + "jsdelivr.com", + "unpkg.com" + ], + "%DOC%.tex" + ], + "diffEditor.renderSideBySide": false, + "editor.inlineSuggest.enabled": true, + "suppressLineUncommittedWarning": true + }, + "github.copilot.enable": { + "*": true, + "plaintext": true, + "markdown": true, + "scminput": false, + "yaml": true + }, + "redhat.telemetry.enabled": false, + "git.autofetch": true, + "terminal.integrated.enableMultiLinePasteWarning": false, + "editor.unicodeHighlight.nonBasicASCII": false, + "jupyter.disableJupyterAutoStart": true, + "editor.unicodeHighlight.invisibleCharacters": false, + "editor.unicodeHighlight.ambiguousCharacters": false, + "diffEditor.ignoreTrimWhitespace": false, + "update.showReleaseNotes": false, + "terminal.external.linuxExec": "kitty", + "window.dialogStyle": "custom", + "window.titleBarStyle": "custom", + "github.copilot.editor.enableAutoCompletions": true, + "window.menuBarVisibility": "compact", + "workbench.colorTheme": "Default Light+", + "github.copilot.advanced": {}, + "git.openRepositoryInParentFolders": "never", + "terminal.integrated.commandsToSkipShell": [ + "language-julia.interrupt" + ], + "diffEditor.hideUnchangedRegions.enabled": true, + "[typst]": { + "editor.wordSeparators": "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?" + }, + "[typst-code]": { + "editor.wordSeparators": "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?" + }, + "tinymist.fontPaths": [ + "./font" + ], + "editor.fontFamily": "'FiraCode Nerd Font Mono', 'monospace', monospace", + }; + ''; + }; - # Nix language - jnoortheen.nix-ide - ]; - }; } diff --git a/modules/home-manager/hypr/cursor.nix b/modules/home-manager/hypr/cursor.nix new file mode 100644 index 0000000..bd60f55 --- /dev/null +++ b/modules/home-manager/hypr/cursor.nix @@ -0,0 +1,32 @@ +{inputs, pkgs, ...}: +{ + gtk = { + enable = true; + cursorTheme = { + package = pkgs.capitaine-cursors; + name = "capitaine-cursors-white"; + size = 32; + }; + # iconTheme = { + # name = "Papirus-Dark"; + # package = pkgs.papirus-icon-theme; + # }; + # theme = { + # name = "Materia-dark"; + # package = pkgs.materia-theme; + # }; + # font = { + # name = "Inter"; + # size = 11; + # package = pkgs.inter; + # }; + }; + + + home.pointerCursor = { + gtk.enable = true; + package = pkgs.capitaine-cursors; + name = "capitaine-cursors-white"; + size = 32; + }; +} \ No newline at end of file diff --git a/modules/home-manager/hypr/default.nix b/modules/home-manager/hypr/default.nix index 6389027..d54254c 100644 --- a/modules/home-manager/hypr/default.nix +++ b/modules/home-manager/hypr/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./cursor.nix ./hyprland-customization.nix ./hyprpaper.nix ./waybar.nix diff --git a/modules/home-manager/hypr/hyprland-customization.nix b/modules/home-manager/hypr/hyprland-customization.nix index 7dd575d..a6444b6 100644 --- a/modules/home-manager/hypr/hyprland-customization.nix +++ b/modules/home-manager/hypr/hyprland-customization.nix @@ -26,6 +26,9 @@ "$mod, b, exec, $browser" "$mod, s, exec, $ide" "$mod, e, exec, nautilus" + + # Lock screen + "$mod+Shift, l, exec, hyprlock" "$mod+Shift, Q, killactive," # Close window @@ -56,6 +59,9 @@ # "${pkgs.hyprpaper}/bin/hyprpaper" # hyprpaper is handled as its own service "${pkgs.waybar}/bin/waybar" + # Fixes cursor themes in gnome apps under hyprland + "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'" + "gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}" ]; general = { @@ -144,35 +150,4 @@ }; services.swaync.enable = true; - - - gtk = { - enable = true; - cursorTheme = { - package = pkgs.capitaine-cursors; - name = "capitaine-cursors-white"; - size = 32; - }; - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme; - }; - theme = { - name = "Materia-dark"; - package = pkgs.materia-theme; - }; - font = { - name = "Inter"; - size = 11; - package = pkgs.inter; - }; - }; - - - home.pointerCursor = { - gtk.enable = true; - package = pkgs.capitaine-cursors; - name = "capitaine-cursors-white"; - size = 32; - }; } diff --git a/modules/home-manager/hypr/hyprpaper.nix b/modules/home-manager/hypr/hyprpaper.nix index 6bfbe49..0581fdc 100644 --- a/modules/home-manager/hypr/hyprpaper.nix +++ b/modules/home-manager/hypr/hyprpaper.nix @@ -4,57 +4,57 @@ ... }: with lib; let - # wallpapers = builtins.path { path = ../../../wallpapers; }; + wallpapers = builtins.readDir ../../../wallpapers; - # wallpaperBashArray = "(\"${strings.concatStrings (strings.intersperse "\" \"" (map (wallpaper: "${wallpaper}") wallpapers))}\")"; - # wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" '' - # wallpapers=${wallpaperBashArray} - # rand=$[$RANDOM % ''${#wallpapers[@]}] - # wallpaper=''${wallpapers[$rand]} + wallpaperBashArray = "(\"${strings.concatStrings (strings.intersperse "\" \"" (map (wallpaper: ../../../wallpapers + "/" + wallpaper) (attrNames wallpapers)))}\")"; + wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" '' + wallpapers=${wallpaperBashArray} + rand=$[$RANDOM % ''${#wallpapers[@]}] + wallpaper=''${wallpapers[$rand]} - # monitor=(`hyprctl monitors | grep Monitor | awk '{print $2}'`) - # hyprctl hyprpaper unload all - # hyprctl hyprpaper preload $wallpaper - # for m in ''${monitor[@]}; do - # hyprctl hyprpaper wallpaper "$m,$wallpaper" - # done - # ''; + monitor=(`hyprctl monitors | grep Monitor | awk '{print $2}'`) + hyprctl hyprpaper unload all + hyprctl hyprpaper preload $wallpaper + for m in ''${monitor[@]}; do + hyprctl hyprpaper wallpaper "$m,$wallpaper" + done + ''; in { - # home.packages = [wallpaperRandomizer]; + home.packages = [wallpaperRandomizer]; - # services.hyprpaper = { - # enable = true; + services.hyprpaper = { + enable = true; - # # settings = { - # # ipc = "on"; - # # splash = false; - # # splash_offset = 2.0; - # # }; - # }; + # settings = { + # ipc = "on"; + # splash = false; + # splash_offset = 2.0; + # }; + }; - # systemd.user = { - # services.wallpaperRandomizer = { - # Install = {WantedBy = ["graphical-session.target"];}; + systemd.user = { + services.wallpaperRandomizer = { + Install = {WantedBy = ["graphical-session.target"];}; - # Unit = { - # Description = "Set random desktop background using hyprpaper"; - # After = ["graphical-session-pre.target"]; - # PartOf = ["graphical-session.target"]; - # }; + Unit = { + Description = "Set random desktop background using hyprpaper"; + After = ["graphical-session-pre.target"]; + PartOf = ["graphical-session.target"]; + }; - # Service = { - # Type = "oneshot"; - # ExecStart = "${wallpaperRandomizer}/bin/wallpaperRandomizer"; - # IOSchedulingClass = "idle"; - # }; - # }; + Service = { + Type = "oneshot"; + ExecStart = "${wallpaperRandomizer}/bin/wallpaperRandomizer"; + IOSchedulingClass = "idle"; + }; + }; - # timers.wallpaperRandomizer = { - # Unit = {Description = "Set random desktop background using hyprpaper on an interval";}; + timers.wallpaperRandomizer = { + Unit = {Description = "Set random desktop background using hyprpaper on an interval";}; - # Timer = {OnUnitActiveSec = "6h";}; + Timer = {OnUnitActiveSec = "6h";}; - # Install = {WantedBy = ["timers.target"];}; - # }; - # }; + Install = {WantedBy = ["timers.target"];}; + }; + }; } \ No newline at end of file diff --git a/modules/home-manager/hypr/waybar.nix b/modules/home-manager/hypr/waybar.nix index 4360609..208b1a7 100644 --- a/modules/home-manager/hypr/waybar.nix +++ b/modules/home-manager/hypr/waybar.nix @@ -5,9 +5,8 @@ # waybar requires font-awesome home.packages = [ - pkgs.font-awesome - pkgs.font-awesome_5 - pkgs.fira-code + # fira code now contains ligatures and font-awesome + nerd-fonts.fira-code pkgs.pavucontrol ]; @@ -141,7 +140,7 @@ border: none; border-radius: 0; /* `otf-font-awesome` is required to be installed for icons */ - font-family: Liberation Mono; + font-family: FiraCode Nerd Font; min-height: 20px; } diff --git a/modules/home-manager/xdg-portals.nix b/modules/home-manager/xdg-portals.nix index 4c1b255..a796bf2 100644 --- a/modules/home-manager/xdg-portals.nix +++ b/modules/home-manager/xdg-portals.nix @@ -4,8 +4,20 @@ xdg.portal = { enable = true; + configPackages [ pkgs.hyprland ]; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; }; + + + xdg.userDirs = { + enable = true; + createDirectories = true; + desktop = "Desktop"; + documents = "Documents"; + downloads = "Downloads"; + pictures = "Pictures"; + }; } diff --git a/modules/nixos/nvidia.nix b/modules/nixos/nvidia.nix index 0302f11..010847e 100644 --- a/modules/nixos/nvidia.nix +++ b/modules/nixos/nvidia.nix @@ -17,16 +17,18 @@ enable = true; }; hardware.nvidia = { - # prime = { - # nvidiaBusId = "PCI:1:0:0"; - # intelBusId = "PCI:0:2:0"; - # }; modesetting.enable = true; powerManagement.enable = true; powerManagement.finegrained = false; open = false; nvidiaSettings = false; + prime = { + sync.enable = true; + nvidiaBusId = "PCI:1:0:0"; + intelBusId = "PCI:0:2:0"; + }; + package = config.boot.kernelPackages.nvidiaPackages.mkDriver { version = "565.77"; sha256_64bit = "sha256-CnqnQsRrzzTXZpgkAtF7PbH9s7wbiTRNcM0SPByzFHw=";