diff --git a/flake.lock b/flake.lock index 477352b..226d445 100644 --- a/flake.lock +++ b/flake.lock @@ -33,6 +33,89 @@ "type": "github" } }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1736852337, + "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1741628778, + "narHash": "sha256-RsvHGNTmO2e/eVfgYK7g+eYEdwwh7SbZa+gZkT24MEA=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "5a81d390bb64afd4e81221749ec4bffcbeb5fa80", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -49,6 +132,85 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": [ + "stylix", + "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" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "stylix", + "flake-compat" + ], + "gitignore": "gitignore_2", + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741379162, + "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -71,6 +233,45 @@ "type": "github" } }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1732369855, + "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "dadd58f630eeea41d645ee225a63f719390829dc", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "47.2", + "repo": "gnome-shell", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -92,6 +293,28 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1739757849, + "narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-24.11", + "repo": "home-manager", + "type": "github" + } + }, "hyprcursor": { "inputs": { "hyprlang": [ @@ -376,6 +599,22 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1741600792, + "narHash": "sha256-yfDy6chHcM7pXpMF4wycuuV+ILSTG486Z/vLx/Bdi6Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ebe2788eafd539477f83775ef93c3c7e244421d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -405,7 +644,41 @@ "hyprland": "hyprland", "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs_2", - "nixpkgs-unstable": "nixpkgs-unstable" + "nixpkgs-unstable": "nixpkgs-unstable", + "stylix": "stylix" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils", + "git-hooks": "git-hooks", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_3", + "systems": "systems_2", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-tmux": "tinted-tmux" + }, + "locked": { + "lastModified": 1741703235, + "narHash": "sha256-3efck7239JPh6IHnqhETaoQejfxh4RBU16bE8IHOkto=", + "owner": "danth", + "repo": "stylix", + "rev": "4a3ac9e30cd15b25a8b2e6cf0a7a047f454408bd", + "type": "github" + }, + "original": { + "owner": "danth", + "ref": "release-24.11", + "repo": "stylix", + "type": "github" } }, "systems": { @@ -423,6 +696,71 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1716423189, + "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "eb39e141db14baef052893285df9f266df041ff8", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "eb39e141db14baef052893285df9f266df041ff8", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1740877430, + "narHash": "sha256-zWcCXgdC4/owfH/eEXx26y5BLzTrefjtSLFHWVD5KxU=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "d48ee86394cbe45b112ba23ab63e33656090edb4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index 8989b21..f816ba9 100644 --- a/flake.nix +++ b/flake.nix @@ -11,12 +11,14 @@ nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; # hyprland, plugins and related utils hyprland.url = "github:hyprwm/Hyprland"; + stylix.url = "github:danth/stylix/release-24.11"; }; outputs = { self, nixpkgs, home-manager, + stylix, ... } @ inputs: let @@ -31,6 +33,7 @@ modules = [ ./hosts/spectre-x360-2018 + stylix.nixosModules.stylix home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; diff --git a/hosts/spectre-x360-2018/default.nix b/hosts/spectre-x360-2018/default.nix index 64ff277..7d0e722 100644 --- a/hosts/spectre-x360-2018/default.nix +++ b/hosts/spectre-x360-2018/default.nix @@ -14,6 +14,7 @@ ../../modules/nixos/pipewire.nix ../../modules/nixos/podman.nix ../../modules/nixos/power.nix + ../../modules/nixos/stylix.nix ../../utils/binary-cache.nix ../../utils/garbage-collection.nix ]; diff --git a/modules/home-manager/code.nix b/modules/home-manager/code.nix index 0e28a44..9157ef2 100644 --- a/modules/home-manager/code.nix +++ b/modules/home-manager/code.nix @@ -1,4 +1,4 @@ -{pkgs, ...}: +{pkgs, ...}: { programs.vscode = { enable = true; @@ -32,9 +32,9 @@ userSettings = { # visual - "editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace"; - "terminal.integrated.fontFamily" = "FiraCode Nerd Font Mono"; - "workbench.iconTheme" = "vs-seti"; + # "editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace"; + # "terminal.integrated.fontFamily" = "FiraCode Nerd Font Mono"; + # "workbench.iconTheme" = "vs-seti"; # telemetry "telemetry.enableCrashReporter" = false; @@ -45,52 +45,46 @@ # editor QOL "security.workspace.trust.untrustedFiles" = "open"; "editor.wordWrap" = "on"; + "editor.suggestSelection" = "first"; + "editor.renderWhitespace" = "none"; + "editor.acceptSuggestionOnEnter" = "off"; + "editor.fontLigatures" = true; + "editor.inlineSuggest.enabled" = true; + "editor.bracketPairColorization.enabled" = true; + "editor.unicodeHighlight.nonBasicASCII" = false; + "editor.unicodeHighlight.invisibleCharacters" = false; + "editor.unicodeHighlight.ambiguousCharacters" = false; + "files.autoSave" = "onWindowChange"; "files.autoSaveDelay" = 1000; "files.insertFinalNewline" = true; "files.trimTrailingWhitespace" = true; - "git.ignoreMissingGitWarning" = true; - "editor.suggestSelection" = "first"; - "workbench.startupEditor" = "newUntitledFile"; - "editor.renderWhitespace" = "none"; - "editor.acceptSuggestionOnEnter" = "off"; + "explorer.confirmDelete" = false; - "git.confirmSync" = false; - "git.enableSmartCommit" = true; - "editor.fontLigatures" = true; "explorer.confirmDragAndDrop" = false; - "editor.inlineSuggest.enabled" = true; - "diffEditor.renderSideBySide" = false; - "github.copilot.enable" = { - "*" = true; - "plaintext" = true; - "markdown" = true; - "scminput" = false; - "yaml" = true; - }; - "editor.bracketPairColorization.enabled" = true; - "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+"; + "workbench.startupEditor" = "newUntitledFile"; + # "workbench.colorTheme" = "Default Light+"; + "github.copilot.editor.enableAutoCompletions" = true; "github.copilot.advanced" = {}; - "git.openRepositoryInParentFolders" = "never"; - "terminal.integrated.commandsToSkipShell" = [ - "language-julia.interrupt" - ]; + "github.copilot.enable" = { + "*" = true; + }; + + # git + "git.ignoreMissingGitWarning" = true; + "git.confirmSync" = false; + "git.enableSmartCommit" = true; + "git.autofetch" = true; + "diffEditor.renderSideBySide" = false; "diffEditor.hideUnchangedRegions.enabled" = true; + "diffEditor.ignoreTrimWhitespace" = false; # Python + "jupyter.disableJupyterAutoStart" = true; "jupyter.askForKernelRestart" = false; "workbench.editorAssociations" = { "*.ipynb" = "jupyter-notebook"; @@ -110,6 +104,7 @@ "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?"; }; "[typst-code]" = { + "git.openRepositoryInParentFolders" = "never"; "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?"; }; "tinymist.fontPaths" = [ diff --git a/modules/home-manager/dev.nix b/modules/home-manager/dev.nix index 18f3edc..1ef4961 100644 --- a/modules/home-manager/dev.nix +++ b/modules/home-manager/dev.nix @@ -1,8 +1,8 @@ -{pkgs, ...}: +{pkgs, ...}: { programs.direnv = { enable = true; - enableFishIntegration = true; # see note on other shells below + # enableFishIntegration = true; # see note on other shells below nix-direnv.enable = true; }; } diff --git a/modules/home-manager/hypr/hyprland-customization.nix b/modules/home-manager/hypr/hyprland-customization.nix index 8a77910..09701c6 100644 --- a/modules/home-manager/hypr/hyprland-customization.nix +++ b/modules/home-manager/hypr/hyprland-customization.nix @@ -168,8 +168,9 @@ monitor = [ "eDP-1, 3840x2160, 0x0, 1.5" # the internal laptop monitor - "DP-2, 3840x2160, 0x-1440, 1.5" - ", preferred, auto, 1" # automatically add any newly detected monitor + # Samsung monitor at irchel (matching the description) + # "desc:Samsung Electric Company LS27D80xU HK7X800803, 3840x2160, auto-up, 1.5" + ", preferred, auto-up, auto" # automatically add any newly detected monitor ]; xwayland = { diff --git a/modules/home-manager/hypr/hyprpaper.nix b/modules/home-manager/hypr/hyprpaper.nix index 552d3ea..2d9b032 100644 --- a/modules/home-manager/hypr/hyprpaper.nix +++ b/modules/home-manager/hypr/hyprpaper.nix @@ -4,60 +4,60 @@ ... }: with lib; let - # load the wallpapers from the wallpapers directory - this gives a set with the folder content - dirContent = builtins.readDir ../../../wallpapers; - wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers; - # # load each wallpaper and keep its path (now in the nix store) as an array - # wallpapers = map (x: builtins.readDir "${../../../wallpapers}/${x.value}") dirContent; + # # load the wallpapers from the wallpapers directory - this gives a set with the folder content + # dirContent = builtins.readDir ../../../wallpapers; # wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers; + # # # load each wallpaper and keep its path (now in the nix store) as an array + # # wallpapers = map (x: builtins.readDir "${../../../wallpapers}/${x.value}") dirContent; + # # wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers; - # script that picks a random wallpaper from the array and sets it as the desktop background - monitor = ""; # leave empty to set the wallpaper on all monitors + # # script that picks a random wallpaper from the array and sets it as the desktop background + # monitor = ""; # leave empty to set the wallpaper on all monitors - wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" '' - wallpaper=$(shuf -n 1 -e ${wallpaperString}) - hyprctl hyprpaper unload all - hyprctl hyprpaper preload $wallpaper - hyprctl hyprpaper wallpaper "${monitor},$wallpaper" - ''; + # wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" '' + # wallpaper=$(shuf -n 1 -e ${wallpaperString}) + # hyprctl hyprpaper unload all + # hyprctl hyprpaper preload $wallpaper + # hyprctl hyprpaper wallpaper "${monitor},$wallpaper" + # ''; in { - home.packages = [wallpaperRandomizer]; + # home.packages = [wallpaperRandomizer]; services.hyprpaper = { enable = true; - - settings = { - ipc = "off"; - splash = false; - }; }; + # settings = { + # ipc = "off"; + # splash = false; + # }; + # }; - 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"];}; + # }; + # }; } diff --git a/modules/home-manager/kitty.nix b/modules/home-manager/kitty.nix index d496800..9f713f2 100644 --- a/modules/home-manager/kitty.nix +++ b/modules/home-manager/kitty.nix @@ -4,7 +4,7 @@ enable = true; shellIntegration.enableFishIntegration = true; settings = { - background_opacity = 0.8; + # background_opacity = 0.8; confirm_os_window_close = 0; enable_audio_bell = false; cursor_trail = 3; diff --git a/modules/home-manager/stylix.nix b/modules/home-manager/stylix.nix new file mode 100644 index 0000000..0a4d6b5 --- /dev/null +++ b/modules/home-manager/stylix.nix @@ -0,0 +1,33 @@ +{pkgs, ...}: +{ + stylix = { + # Stylix is already enabled since the system is configured to use it + # enable = true; + # don't theme applications by default + autoEnable = false; + + cursor = { + package = pkgs.apple-cursor; + name = "macOS"; + size = 32; + }; + + # TODO + # fonts = {}; + + iconTheme = { + package = pkgs.tela-icon-theme; + }; + + image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg; + + }; + + stylix.targets = { + vscode.enable = true; + hyprpaper.enable = true; + waybar.enable = true; + wofi.enable = true; + kitty.enable = true; + }; +} diff --git a/modules/nixos/stylix.nix b/modules/nixos/stylix.nix new file mode 100644 index 0000000..426a694 --- /dev/null +++ b/modules/nixos/stylix.nix @@ -0,0 +1,11 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + stylix.enable = true; + stylix.image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg; + +} diff --git a/users/remy.nix b/users/remy.nix index 784e9f5..6987188 100644 --- a/users/remy.nix +++ b/users/remy.nix @@ -13,6 +13,7 @@ with lib.hm.gvariant; ../modules/home-manager/kubectl.nix ../modules/home-manager/obsidian.nix ../modules/home-manager/owncloud-client.nix + ../modules/home-manager/stylix.nix ../modules/home-manager/thunderbird.nix ../modules/home-manager/wofi.nix ../modules/home-manager/xdg-portals.nix