From a51db7b00f700adbe71545a76eaf2bcf5bc3cd43 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Sat, 8 Jun 2024 23:40:44 -0400 Subject: [PATCH] refactor: move dracula from common overlays to pkgs --- common/home/bash/programs.nix | 14 ++---- common/home/git/default.nix | 8 +++- common/home/packages.nix | 1 - common/overlays/default.nix | 4 +- common/overlays/dracula-theme/default.nix | 46 ------------------- common/overlays/dracula-theme/git.nix | 23 ---------- flake.lock | 17 +++++++ flake.nix | 6 +++ home/theme/default.nix | 12 +++-- home/theme/qt.nix | 10 ++-- home/wpaperd.nix | 4 +- inputs.nix | 5 ++ modules/hyprland/packages.nix | 13 ++---- modules/plymouth.nix | 8 +++- pkgs/default.nix | 4 +- pkgs/dracula/bat.nix | 15 ++++++ pkgs/dracula/default.nix | 9 ++++ pkgs/dracula/git.nix | 21 +++++++++ pkgs/dracula/gtk.nix | 9 ++++ .../dracula}/plymouth.nix | 2 +- pkgs/dracula/sioyek.nix | 15 ++++++ .../dracula}/wallpaper.nix | 0 pkgs/dracula/xresources.nix | 15 ++++++ 23 files changed, 154 insertions(+), 107 deletions(-) delete mode 100644 common/overlays/dracula-theme/default.nix delete mode 100644 common/overlays/dracula-theme/git.nix create mode 100644 pkgs/dracula/bat.nix create mode 100644 pkgs/dracula/default.nix create mode 100644 pkgs/dracula/git.nix create mode 100644 pkgs/dracula/gtk.nix rename {common/overlays/dracula-theme => pkgs/dracula}/plymouth.nix (91%) create mode 100644 pkgs/dracula/sioyek.nix rename {common/overlays/dracula-theme => pkgs/dracula}/wallpaper.nix (100%) create mode 100644 pkgs/dracula/xresources.nix diff --git a/common/home/bash/programs.nix b/common/home/bash/programs.nix index 76dab74..014177d 100644 --- a/common/home/bash/programs.nix +++ b/common/home/bash/programs.nix @@ -1,6 +1,7 @@ { pkgs, config, + self, ... }: { programs = { @@ -41,15 +42,10 @@ bat = { enable = true; - config = { - theme = "dracula-bat"; - }; - themes = { - dracula-bat = { - src = pkgs.dracula-theme; - file = "bat"; - }; - }; + + config.theme = "dracula-bat"; + themes.dracula-bat.src = self.packages.${pkgs.system}.dracula.bat; + extraPackages = with pkgs.bat-extras; [ batman ]; diff --git a/common/home/git/default.nix b/common/home/git/default.nix index eacbc0c..382e01d 100644 --- a/common/home/git/default.nix +++ b/common/home/git/default.nix @@ -1,11 +1,15 @@ -{pkgs, ...}: { +{ + pkgs, + self, + ... +}: { programs = { git = { enable = true; lfs.enable = true; includes = [ - {path = "${pkgs.dracula-theme}/git-colors";} + {path = toString self.packages.${pkgs.system}.dracula.git;} { condition = "hasconfig:remote.*.url:git@github.com:*/**"; diff --git a/common/home/packages.nix b/common/home/packages.nix index a72afdc..2488c04 100644 --- a/common/home/packages.nix +++ b/common/home/packages.nix @@ -13,7 +13,6 @@ ]) ++ (with pkgs; [ dig.dnsutils - dracula-theme imagemagick killall mosh diff --git a/common/overlays/default.nix b/common/overlays/default.nix index 481870f..ba302ad 100644 --- a/common/overlays/default.nix +++ b/common/overlays/default.nix @@ -2,9 +2,7 @@ grim-hyprland, nixpkgs-wayland, ... -} @ inputs: [ - (import ./dracula-theme inputs) - +}: [ grim-hyprland.overlays.default nixpkgs-wayland.overlay ] diff --git a/common/overlays/dracula-theme/default.nix b/common/overlays/dracula-theme/default.nix deleted file mode 100644 index 416ef80..0000000 --- a/common/overlays/dracula-theme/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - bat-theme-src, - gtk-theme-src, - xresources-src, - ... -} @ inputs: (final: prev: { - dracula-theme = prev.dracula-theme.overrideAttrs (oldAttrs: let - git-colors = prev.callPackage ./git.nix inputs; - plymouth = prev.callPackage ./plymouth.nix inputs; - wallpaper = prev.fetchurl (import ./wallpaper.nix); - in { - version = gtk-theme-src.shortRev; - src = gtk-theme-src; - - installPhase = '' - runHook preInstall - - mkdir -p $out/share/plymouth/themes $out/wallpapers - cp -a ${wallpaper} $out/wallpapers/waves.png - - cp -a ${bat-theme-src}/Dracula.tmTheme $out/bat - cp -a ${git-colors}/git-colors $out/git-colors - cp -a ${plymouth}/share/plymouth/themes/dracula $out/share/plymouth/themes/ - cp -a ${xresources-src}/Xresources $out/xres - - # ------------------------------------------- - mkdir -p $out/share/themes/Dracula - cp -a {assets,cinnamon,gnome-shell,gtk-2.0,gtk-3.0,gtk-3.20,gtk-4.0,index.theme,metacity-1,unity,xfwm4} $out/share/themes/Dracula - - cp -a kde/{color-schemes,plasma} $out/share/ - cp -a kde/kvantum $out/share/Kvantum - - mkdir -p $out/share/aurorae/themes - cp -a kde/aurorae/* $out/share/aurorae/themes/ - - mkdir -p $out/share/sddm/themes - cp -a kde/sddm/* $out/share/sddm/themes/ - - mkdir -p $out/share/icons/Dracula-cursors - mv kde/cursors/Dracula-cursors/index.theme $out/share/icons/Dracula-cursors/cursor.theme - mv kde/cursors/Dracula-cursors/cursors $out/share/icons/Dracula-cursors/cursors - - runHook postInstall - ''; - }); -}) diff --git a/common/overlays/dracula-theme/git.nix b/common/overlays/dracula-theme/git.nix deleted file mode 100644 index 7cdc447..0000000 --- a/common/overlays/dracula-theme/git.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - stdenv, - git-theme-src, - ... -}: -stdenv.mkDerivation { - name = "dracula-git"; - version = git-theme-src.shortRev; - - src = git-theme-src; - - installPhase = '' - # Git colors - cp -a ./config/gitconfig ./git-colors - chmod 777 ./git-colors - - line=$(grep -n 'Dracula Dark Theme' ./git-colors | cut -d: -f1) - sed -i "1,$((line-1))d" ./git-colors - - mkdir $out - cp -a ./git-colors $out - ''; -} diff --git a/flake.lock b/flake.lock index d129ece..177f994 100644 --- a/flake.lock +++ b/flake.lock @@ -1878,6 +1878,7 @@ "piper-src": "piper-src", "pokemon-colorscripts-src": "pokemon-colorscripts-src", "secrets": "secrets", + "sioyek-theme-src": "sioyek-theme-src", "sops-nix": "sops-nix_2", "stylelint-lsp": "stylelint-lsp", "subsync": "subsync", @@ -1925,6 +1926,22 @@ "url": "ssh://git@git.nelim.org/matt1432/nixos-secrets" } }, + "sioyek-theme-src": { + "flake": false, + "locked": { + "lastModified": 1669165291, + "narHash": "sha256-+HzxZA8Bb+cGogK+w4JES4ZFG+ueXEAuLu+0T18fvbc=", + "owner": "dracula", + "repo": "sioyek", + "rev": "b832ab04d880fbe243c0fe9043612be61226426e", + "type": "github" + }, + "original": { + "owner": "dracula", + "repo": "sioyek", + "type": "github" + } + }, "sops-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index ae01597..d3407e9 100644 --- a/flake.nix +++ b/flake.nix @@ -283,6 +283,12 @@ type = "git"; url = "ssh://git@git.nelim.org/matt1432/nixos-secrets"; }; + sioyek-theme-src = { + flake = false; + owner = "dracula"; + repo = "sioyek"; + type = "github"; + }; sops-nix = { inputs.nixpkgs.follows = "nixpkgs"; owner = "Mic92"; diff --git a/home/theme/default.nix b/home/theme/default.nix index 2d4e3aa..cb86174 100644 --- a/home/theme/default.nix +++ b/home/theme/default.nix @@ -1,4 +1,10 @@ -{pkgs, ...}: { +{ + pkgs, + self, + ... +}: let + inherit (self.packages.${pkgs.system}) dracula; +in { imports = [ ./gtk.nix ./qt.nix @@ -6,7 +12,7 @@ home.pointerCursor = { name = "Dracula-cursors"; - package = pkgs.dracula-theme; + package = dracula.gtk; size = 24; gtk.enable = true; @@ -19,5 +25,5 @@ xresources.extraConfig = builtins.readFile - "${pkgs.dracula-theme}/xres"; + "${dracula.xresources}"; } diff --git a/home/theme/qt.nix b/home/theme/qt.nix index 4f78380..5455375 100644 --- a/home/theme/qt.nix +++ b/home/theme/qt.nix @@ -1,10 +1,12 @@ { - pkgs, - lib, config, + lib, + pkgs, + self, ... }: let inherit (config.vars) fontSize; + inherit (self.packages.${pkgs.system}) dracula; in { home.packages = with pkgs; [ libsForQt5.qtstyleplugin-kvantum @@ -32,8 +34,8 @@ in { style=''; # The newline before this must be there in { - "Kvantum/Dracula/Dracula.kvconfig".source = "${pkgs.dracula-theme}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig"; - "Kvantum/Dracula/Dracula.svg".source = "${pkgs.dracula-theme}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.svg"; + "Kvantum/Dracula/Dracula.kvconfig".source = "${dracula.gtk}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig"; + "Kvantum/Dracula/Dracula.svg".source = "${dracula.gtk}/share/Kvantum/Dracula-purple-solid/Dracula-purple-solid.svg"; "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula"; "qt5ct/qt5ct.conf".text = qtconf + "kvantum"; diff --git a/home/wpaperd.nix b/home/wpaperd.nix index 5d86ae8..0f0e2ad 100644 --- a/home/wpaperd.nix +++ b/home/wpaperd.nix @@ -1,17 +1,17 @@ { pkgs, + self, wpaperd, ... }: let inherit (pkgs.writers) writeTOML; wpaperdPkg = wpaperd.packages.${pkgs.system}.default; - wallpaper = "${pkgs.dracula-theme}/wallpapers/waves.png"; in { home.packages = [wpaperdPkg]; xdg.configFile."wpaperd/config.toml".source = writeTOML "config.toml" { default = { - path = wallpaper; + path = toString self.packages.${pkgs.system}.dracula.wallpaper; mode = "stretch"; }; }; diff --git a/inputs.nix b/inputs.nix index c314371..45eed10 100644 --- a/inputs.nix +++ b/inputs.nix @@ -281,6 +281,11 @@ let owner = "dracula"; repo = "xresources"; } + { + name = "sioyek-theme-src"; + owner = "dracula"; + repo = "sioyek"; + } ]; in { inherit mkDep mkInput mkSrc; diff --git a/modules/hyprland/packages.nix b/modules/hyprland/packages.nix index 91e2699..09a17d7 100644 --- a/modules/hyprland/packages.nix +++ b/modules/hyprland/packages.nix @@ -3,6 +3,7 @@ jellyfin-flake, lib, pkgs, + self, ... }: let inherit (lib) makeLibraryPath optionalString; @@ -51,19 +52,11 @@ in { programs.sioyek = { enable = true; - config = let - # TODO: put this with the rest of the themes - dracula-theme = pkgs.fetchFromGitHub { - owner = "dracula"; - repo = "sioyek"; - rev = "b832ab04d880fbe243c0fe9043612be61226426e"; - hash = "sha256-+HzxZA8Bb+cGogK+w4JES4ZFG+ueXEAuLu+0T18fvbc="; - }; - in { + config = { startup_commands = "toggle_custom_color"; ui_font = "JetBrainsMono Nerd Font Mono Regular"; font_size = "24"; - source = "${dracula-theme}/dracula.config"; + source = toString self.packages.${pkgs.system}.dracula.sioyek; }; }; diff --git a/modules/plymouth.nix b/modules/plymouth.nix index 18571e3..245e9d9 100644 --- a/modules/plymouth.nix +++ b/modules/plymouth.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + pkgs, + self, + ... +}: { boot = { initrd = { verbose = false; @@ -20,7 +24,7 @@ plymouth = { enable = true; - themePackages = [pkgs.dracula-theme]; + themePackages = [self.packages.${pkgs.system}.dracula.plymouth]; theme = "dracula"; }; }; diff --git a/pkgs/default.nix b/pkgs/default.nix index dce7813..4a961e2 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -4,13 +4,15 @@ pam-fprint-grosshack-src, pokemon-colorscripts-src, ... -}: { +} @ inputs: { coloryou = pkgs.callPackage ./coloryou {}; curseforge-server-downloader = pkgs.callPackage ./curseforge-server-downloader { inherit curseforge-server-downloader-src; }; + dracula = import ./dracula inputs; + pam-fprint-grosshack = pkgs.callPackage ./pam-fprint-grosshack { inherit pam-fprint-grosshack-src; }; diff --git a/pkgs/dracula/bat.nix b/pkgs/dracula/bat.nix new file mode 100644 index 0000000..fe4bf87 --- /dev/null +++ b/pkgs/dracula/bat.nix @@ -0,0 +1,15 @@ +{ + bat-theme-src, + stdenv, + ... +}: +stdenv.mkDerivation { + pname = "dracula-bat"; + version = bat-theme-src.shortRev; + + src = bat-theme-src; + + installPhase = '' + cat ./Dracula.tmTheme > $out + ''; +} diff --git a/pkgs/dracula/default.nix b/pkgs/dracula/default.nix new file mode 100644 index 0000000..6b8a3bc --- /dev/null +++ b/pkgs/dracula/default.nix @@ -0,0 +1,9 @@ +{pkgs, ...} @ inputs: { + bat = pkgs.callPackage ./bat.nix {inherit (inputs) bat-theme-src;}; + git = pkgs.callPackage ./git.nix {inherit (inputs) git-theme-src;}; + gtk = import ./gtk.nix {inherit (inputs) gtk-theme-src pkgs;}; + plymouth = pkgs.callPackage ./plymouth.nix {inherit (inputs) dracula-plymouth-src;}; + sioyek = pkgs.callPackage ./sioyek.nix {inherit (inputs) sioyek-theme-src;}; + wallpaper = pkgs.fetchurl (import ./wallpaper.nix); + xresources = pkgs.callPackage ./xresources.nix {inherit (inputs) xresources-src;}; +} diff --git a/pkgs/dracula/git.nix b/pkgs/dracula/git.nix new file mode 100644 index 0000000..56d754c --- /dev/null +++ b/pkgs/dracula/git.nix @@ -0,0 +1,21 @@ +{ + stdenv, + git-theme-src, + ... +}: +stdenv.mkDerivation { + pname = "dracula-git"; + version = git-theme-src.shortRev; + + src = git-theme-src; + + installPhase = '' + chmod 777 ./config/gitconfig + + # Remove every line above 'Dracula Dark Theme' + line=$(grep -n 'Dracula Dark Theme' ./config/gitconfig | cut -d: -f1) + sed -i "1,$((line-1))d" ./config/gitconfig + + cat ./config/gitconfig > $out + ''; +} diff --git a/pkgs/dracula/gtk.nix b/pkgs/dracula/gtk.nix new file mode 100644 index 0000000..b78b280 --- /dev/null +++ b/pkgs/dracula/gtk.nix @@ -0,0 +1,9 @@ +{ + gtk-theme-src, + pkgs, + ... +}: +pkgs.dracula-theme.overrideAttrs { + version = gtk-theme-src.shortRev; + src = gtk-theme-src; +} diff --git a/common/overlays/dracula-theme/plymouth.nix b/pkgs/dracula/plymouth.nix similarity index 91% rename from common/overlays/dracula-theme/plymouth.nix rename to pkgs/dracula/plymouth.nix index 5b51e55..0396b26 100644 --- a/common/overlays/dracula-theme/plymouth.nix +++ b/pkgs/dracula/plymouth.nix @@ -4,7 +4,7 @@ ... }: stdenv.mkDerivation { - name = "dracula-plymouth"; + pname = "dracula-plymouth"; version = dracula-plymouth-src.shortRev; src = dracula-plymouth-src; diff --git a/pkgs/dracula/sioyek.nix b/pkgs/dracula/sioyek.nix new file mode 100644 index 0000000..65581b5 --- /dev/null +++ b/pkgs/dracula/sioyek.nix @@ -0,0 +1,15 @@ +{ + sioyek-theme-src, + stdenv, + ... +}: +stdenv.mkDerivation { + pname = "dracula-sioyek"; + version = sioyek-theme-src.shortRev; + + src = sioyek-theme-src; + + installPhase = '' + cat ./dracula.config > $out + ''; +} diff --git a/common/overlays/dracula-theme/wallpaper.nix b/pkgs/dracula/wallpaper.nix similarity index 100% rename from common/overlays/dracula-theme/wallpaper.nix rename to pkgs/dracula/wallpaper.nix diff --git a/pkgs/dracula/xresources.nix b/pkgs/dracula/xresources.nix new file mode 100644 index 0000000..1db8533 --- /dev/null +++ b/pkgs/dracula/xresources.nix @@ -0,0 +1,15 @@ +{ + xresources-src, + stdenv, + ... +}: +stdenv.mkDerivation { + pname = "dracula-xresources"; + version = xresources-src.shortRev; + + src = xresources-src; + + installPhase = '' + cat ./Xresources > $out + ''; +}