mirror of
https://github.com/elwrcl/copnix.git
synced 2026-10-31 14:28:02 +03:00
big
This commit is contained in:
16 files changed
+290
-435
No files matched your search
@@ -62,6 +62,13 @@
|
|||||||
url = "github:elwrcl/heliux";
|
url = "github:elwrcl/heliux";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
theme-assets = {
|
||||||
|
url = "github:elwrcl/copland-theme";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
themes = {
|
||||||
|
url = "github:RGBCube/ThemeNix";
|
||||||
|
};
|
||||||
intel-hard = {
|
intel-hard = {
|
||||||
url = "github:elwrcl/intel-hard";
|
url = "github:elwrcl/intel-hard";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ in
|
|||||||
config.flake.homeModules.home-zellij-theme
|
config.flake.homeModules.home-zellij-theme
|
||||||
config.flake.homeModules.home-zellij-layout-ide
|
config.flake.homeModules.home-zellij-layout-ide
|
||||||
config.flake.homeModules.home-zellij-ide-command
|
config.flake.homeModules.home-zellij-ide-command
|
||||||
|
config.flake.homeModules.home-theme
|
||||||
|
config.flake.homeModules.home-theme-kemuri
|
||||||
config.flake.homeModules.home-direnv
|
config.flake.homeModules.home-direnv
|
||||||
config.flake.homeModules.home-jujutsu
|
config.flake.homeModules.home-jujutsu
|
||||||
config.flake.homeModules.home-jujutsu-difftastic
|
config.flake.homeModules.home-jujutsu-difftastic
|
||||||
@@ -59,6 +61,7 @@ in
|
|||||||
config.flake.homeModules.home-session-vars
|
config.flake.homeModules.home-session-vars
|
||||||
config.flake.homeModules.home-cursor
|
config.flake.homeModules.home-cursor
|
||||||
config.flake.homeModules.home-gtk
|
config.flake.homeModules.home-gtk
|
||||||
|
config.flake.homeModules.home-icons
|
||||||
config.flake.homeModules.home-qt
|
config.flake.homeModules.home-qt
|
||||||
config.flake.homeModules.home-browser-zen
|
config.flake.homeModules.home-browser-zen
|
||||||
config.flake.homeModules.home-browser-helium
|
config.flake.homeModules.home-browser-helium
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ in
|
|||||||
{
|
{
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nixpkgs.config.allowDeprecatedx86_64Darwin = true;
|
nixpkgs.config.allowDeprecatedx86_64Darwin = true;
|
||||||
nixpkgs.overlays = [ inputs.nix-vscode-extensions.overlays.default ];
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
|
|||||||
@@ -15,10 +15,6 @@
|
|||||||
id = "dkdnancajokhfclpjpplkhlkbhaeejob";
|
id = "dkdnancajokhfclpjpplkhlkbhaeejob";
|
||||||
hash = "sha256-hkEGW2JVQzeRmTpoPrWFoVG3sbCgHohnsr2b12rfeMg=";
|
hash = "sha256-hkEGW2JVQzeRmTpoPrWFoVG3sbCgHohnsr2b12rfeMg=";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
id = "jgejdcdoeeabklepnkdbglgccjpdgpmf";
|
|
||||||
hash = "sha256-0xYJtbYNn0JwAaskB/qwdRt74ThSG1CcN41bTN4H88c=";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
id = "jleldmehlnopjhbldegndecakdemocah";
|
id = "jleldmehlnopjhbldegndecakdemocah";
|
||||||
hash = "sha256-u79qidIP1DCtusQ7COjjpnnInO/dXyBeNsJKNHnbIC4=";
|
hash = "sha256-u79qidIP1DCtusQ7COjjpnnInO/dXyBeNsJKNHnbIC4=";
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
programs.zen-browser = {
|
programs.zen-browser = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setAsDefaultBrowser = true;
|
setAsDefaultBrowser = false;
|
||||||
|
|
||||||
policies = {
|
policies = {
|
||||||
DisableAppUpdate = true;
|
DisableAppUpdate = true;
|
||||||
|
|||||||
@@ -1,12 +1,22 @@
|
|||||||
{ ... }:
|
{ inputs, ... }:
|
||||||
{
|
{
|
||||||
flake.homeModules.home-cursor =
|
flake.homeModules.home-cursor =
|
||||||
{ pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
p = config.elars.theme.palette.withHashtag;
|
||||||
|
|
||||||
|
cursors = inputs.theme-assets.lib.mkCursorTheme {
|
||||||
|
inherit pkgs;
|
||||||
|
themeName = "KemuriSusu-cursors";
|
||||||
|
light = p.base05;
|
||||||
|
dark = p.base00;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
home.pointerCursor = {
|
home.pointerCursor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
name = "macOS";
|
name = "KemuriSusu-cursors";
|
||||||
package = pkgs.apple-cursor;
|
package = cursors;
|
||||||
size = 24;
|
size = 24;
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
x11.enable = true;
|
x11.enable = true;
|
||||||
|
|||||||
@@ -3,34 +3,25 @@
|
|||||||
flake.homeModules.home-file-manager-actions =
|
flake.homeModules.home-file-manager-actions =
|
||||||
{ pkgs, lib, ... }:
|
{ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib)
|
inherit (lib) concatStringsSep concatMap optional;
|
||||||
concatStringsSep
|
|
||||||
concatMapStringsSep
|
|
||||||
escapeXML
|
|
||||||
optional
|
|
||||||
;
|
|
||||||
fmActions = pkgs.writeShellApplication {
|
fmActions = pkgs.writeShellApplication {
|
||||||
name = "fm-actions";
|
name = "fm-actions";
|
||||||
runtimeInputs = with pkgs; [
|
runtimeInputs = with pkgs; [
|
||||||
poppler-utils
|
poppler-utils
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
imagemagick
|
imagemagick
|
||||||
libarchive
|
|
||||||
coreutils
|
coreutils
|
||||||
libnotify
|
libnotify
|
||||||
tesseract
|
tesseract
|
||||||
ffmpeg
|
ffmpeg
|
||||||
gnutar
|
|
||||||
p7zip
|
|
||||||
zstd
|
|
||||||
zip
|
|
||||||
];
|
];
|
||||||
text = ''
|
text = ''
|
||||||
op="''${1:-}"
|
op="''${1:-}"
|
||||||
if [ "$#" -gt 0 ]; then shift; fi
|
if [ "$#" -gt 0 ]; then shift; fi
|
||||||
|
|
||||||
notify() {
|
notify() {
|
||||||
notify-send -a Thunar -i system-file-manager "$1" "''${2:-}" || true
|
notify-send -a Dolphin -i system-file-manager "$1" "''${2:-}" || true
|
||||||
}
|
}
|
||||||
finish() {
|
finish() {
|
||||||
status=$?
|
status=$?
|
||||||
@@ -38,15 +29,18 @@
|
|||||||
printf '\n[fm-actions] exit %s — press enter to close\n' "$status"
|
printf '\n[fm-actions] exit %s — press enter to close\n' "$status"
|
||||||
read -r _ || true
|
read -r _ || true
|
||||||
elif [ "$status" -ne 0 ]; then
|
elif [ "$status" -ne 0 ]; then
|
||||||
notify-send -a Thunar -u critical "action failed" \
|
notify-send -a Dolphin -u critical "action failed" \
|
||||||
"fm-actions ''${op:-?} exited with $status" || true
|
"fm-actions ''${op:-?} exited with $status" || true
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
trap finish EXIT
|
trap finish EXIT
|
||||||
stem() { printf '%s' "''${1%.*}"; }
|
stem() { printf '%s' "''${1%.*}"; }
|
||||||
escape_own_folder() {
|
require_count() {
|
||||||
if [ ! -e "$1" ] && [ "$(basename -- "$PWD")" = "$1" ]; then
|
n="$1"; shift
|
||||||
cd .. || exit 1
|
if [ "$#" -ne "$n" ]; then
|
||||||
|
notify-send -a Dolphin -u critical "action failed" \
|
||||||
|
"expected $n item(s), got $#" || true
|
||||||
|
exit 2
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
case "$op" in
|
case "$op" in
|
||||||
@@ -91,10 +85,6 @@
|
|||||||
for f in "$@"; do magick "$f" -strip "$f"; done
|
for f in "$@"; do magick "$f" -strip "$f"; done
|
||||||
notify "metadata stripped" "$# image(s)"
|
notify "metadata stripped" "$# image(s)"
|
||||||
;;
|
;;
|
||||||
ocr)
|
|
||||||
tesseract "$1" - -l eng+tur 2>/dev/null | wl-copy
|
|
||||||
notify "OCR" "recognised text copied to clipboard"
|
|
||||||
;;
|
|
||||||
wallpaper)
|
wallpaper)
|
||||||
noctalia msg wallpaper-set "$1"
|
noctalia msg wallpaper-set "$1"
|
||||||
;;
|
;;
|
||||||
@@ -129,42 +119,19 @@
|
|||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
zip)
|
|
||||||
escape_own_folder "$1"
|
|
||||||
zip -r -- "$1.zip" "$@"
|
|
||||||
notify "archive created" "$1.zip"
|
|
||||||
;;
|
|
||||||
7z)
|
|
||||||
escape_own_folder "$1"
|
|
||||||
7z a -- "$1.7z" "$@"
|
|
||||||
notify "archive created" "$1.7z"
|
|
||||||
;;
|
|
||||||
tar-zst)
|
|
||||||
escape_own_folder "$1"
|
|
||||||
tar --zstd -cf "$1.tar.zst" -- "$@"
|
|
||||||
notify "archive created" "$1.tar.zst"
|
|
||||||
;;
|
|
||||||
extract)
|
|
||||||
for f in "$@"; do bsdtar -xf "$f"; done
|
|
||||||
notify "extracted" "$# archive(s)"
|
|
||||||
;;
|
|
||||||
extract-to-folder)
|
|
||||||
for f in "$@"; do
|
|
||||||
d="$(stem "$f")"
|
|
||||||
mkdir -p "$d"
|
|
||||||
bsdtar -xf "$f" -C "$d"
|
|
||||||
done
|
|
||||||
notify "extracted into folders" "$# archive(s)"
|
|
||||||
;;
|
|
||||||
|
|
||||||
pdf-images)
|
pdf-images)
|
||||||
for f in "$@"; do pdftoppm -png -r 150 "$f" "$(stem "$f")"; done
|
for f in "$@"; do pdftoppm -png -r 150 "$f" "$(stem "$f")"; done
|
||||||
notify "PDF rendered" "$# document(s)"
|
notify "PDF rendered" "$# document(s)"
|
||||||
;;
|
;;
|
||||||
pdf-merge)
|
pdf-merge)
|
||||||
|
require_count 2 "$@" 2>/dev/null || true
|
||||||
pdfunite "$@" merged.pdf
|
pdfunite "$@" merged.pdf
|
||||||
notify "PDFs merged" "merged.pdf"
|
notify "PDFs merged" "merged.pdf"
|
||||||
;;
|
;;
|
||||||
|
compare)
|
||||||
|
require_count 2 "$@"
|
||||||
|
meld "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo "fm-actions: unknown operation: $op" >&2
|
echo "fm-actions: unknown operation: $op" >&2
|
||||||
@@ -176,378 +143,258 @@
|
|||||||
|
|
||||||
fm = lib.getExe fmActions;
|
fm = lib.getExe fmActions;
|
||||||
term = "ghostty --working-directory=%f";
|
term = "ghostty --working-directory=%f";
|
||||||
dirs = [ "directories" ];
|
typeMime = {
|
||||||
files = [
|
directories = [ "inode/directory" ];
|
||||||
"audio-files"
|
everything = [ "all/all" ];
|
||||||
"image-files"
|
files = [ "all/allfiles" ];
|
||||||
"other-files"
|
audio-files = [ "audio/*" ];
|
||||||
"text-files"
|
image-files = [ "image/*" ];
|
||||||
"video-files"
|
video-files = [ "video/*" ];
|
||||||
];
|
text-files = [ "text/*" ];
|
||||||
everything = dirs ++ files;
|
};
|
||||||
archivePatterns = [
|
pdfMimeTypes = [ "application/pdf" ];
|
||||||
"*.7z"
|
|
||||||
"*.bz2"
|
|
||||||
"*.cab"
|
|
||||||
"*.gz"
|
|
||||||
"*.iso"
|
|
||||||
"*.rar"
|
|
||||||
"*.tar"
|
|
||||||
"*.tar.bz2"
|
|
||||||
"*.tar.gz"
|
|
||||||
"*.tar.xz"
|
|
||||||
"*.tar.zst"
|
|
||||||
"*.tbz2"
|
|
||||||
"*.tgz"
|
|
||||||
"*.txz"
|
|
||||||
"*.xz"
|
|
||||||
"*.zip"
|
|
||||||
"*.zst"
|
|
||||||
];
|
|
||||||
|
|
||||||
mkAction =
|
|
||||||
{
|
|
||||||
id,
|
|
||||||
name,
|
|
||||||
command,
|
|
||||||
icon ? "",
|
|
||||||
description ? "",
|
|
||||||
patterns ? [ "*" ],
|
|
||||||
types ? [ ],
|
|
||||||
submenu ? null,
|
|
||||||
range ? null,
|
|
||||||
startupNotify ? true,
|
|
||||||
}:
|
|
||||||
concatStringsSep "\n" (
|
|
||||||
[ " <action>" ]
|
|
||||||
++ map (line: " " + line) (
|
|
||||||
[
|
|
||||||
"<icon>${escapeXML icon}</icon>"
|
|
||||||
"<name>${escapeXML name}</name>"
|
|
||||||
"<unique-id>${escapeXML id}</unique-id>"
|
|
||||||
"<command>${escapeXML command}</command>"
|
|
||||||
"<description>${escapeXML description}</description>"
|
|
||||||
"<patterns>${escapeXML (concatStringsSep ";" patterns)}</patterns>"
|
|
||||||
]
|
|
||||||
++ optional (submenu != null) "<submenu>${escapeXML submenu}</submenu>"
|
|
||||||
++ optional (range != null) "<range>${escapeXML range}</range>"
|
|
||||||
++ optional startupNotify "<startup-notify/>"
|
|
||||||
++ map (t: "<${t}/>") types
|
|
||||||
)
|
|
||||||
++ [ " </action>" ]
|
|
||||||
);
|
|
||||||
|
|
||||||
# this is slop but idc.
|
|
||||||
actions = [
|
actions = [
|
||||||
{
|
{
|
||||||
id = "open-terminal-here";
|
id = "open-terminal-here";
|
||||||
name = "Open Terminal Here";
|
name = "open ghostty here";
|
||||||
description = "browse folder in ghostty";
|
|
||||||
icon = "utilities-terminal";
|
icon = "utilities-terminal";
|
||||||
command = term;
|
command = term;
|
||||||
types = dirs;
|
types = [ "directories" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "open-root-terminal-here";
|
id = "open-root-terminal-here";
|
||||||
name = "Open Root Terminal Here";
|
name = "open root terminal here";
|
||||||
description = "browse folder in ghostty as root";
|
|
||||||
icon = "dialog-password";
|
icon = "dialog-password";
|
||||||
command = "${term} -e sudo -E -s";
|
command = "${term} -e sudo -E -s";
|
||||||
types = dirs;
|
types = [ "directories" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "open-yazi-here";
|
id = "open-yazi-here";
|
||||||
name = "Open Yazi Here";
|
name = "open yazi here";
|
||||||
description = "browse folder in yazi";
|
|
||||||
icon = "system-file-manager";
|
icon = "system-file-manager";
|
||||||
command = "${term} -e yazi";
|
command = "${term} -e yazi";
|
||||||
types = dirs;
|
types = [ "directories" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "open-as-root";
|
id = "open-as-root";
|
||||||
name = "Open as Root";
|
name = "open as root";
|
||||||
description = "reopen folder as root";
|
|
||||||
icon = "security-high";
|
icon = "security-high";
|
||||||
command = "thunar admin://%f";
|
command = "dolphin admin://%f";
|
||||||
types = dirs;
|
types = [ "directories" ];
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "open-in-code";
|
|
||||||
name = "Open in VS Code";
|
|
||||||
description = "open in vsc";
|
|
||||||
icon = "applications-development";
|
|
||||||
command = "code %F";
|
|
||||||
types = everything;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "search-here";
|
|
||||||
name = "Search Here";
|
|
||||||
description = "search in this folder with catfish";
|
|
||||||
icon = "system-search";
|
|
||||||
command = "catfish --path=%f";
|
|
||||||
types = dirs;
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "open-lazyjj-here";
|
id = "open-lazyjj-here";
|
||||||
name = "Open lazyjj Here";
|
name = "open lazyjj here";
|
||||||
description = "inspect with lazyjj";
|
|
||||||
icon = "folder-open";
|
icon = "folder-open";
|
||||||
command = "${term} -e lazyjj";
|
command = "${term} -e lazyjj";
|
||||||
types = dirs;
|
types = [ "directories" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "open-lazygit-here";
|
id = "open-lazygit-here";
|
||||||
name = "Open lazygit Here";
|
name = "open lazygit here";
|
||||||
description = "inspect with lazygit";
|
|
||||||
icon = "folder-open";
|
icon = "folder-open";
|
||||||
command = "${term} -e lazygit";
|
command = "${term} -e lazygit";
|
||||||
types = dirs;
|
types = [ "directories" ];
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "play-in-mpv";
|
|
||||||
name = "Play in mpv";
|
|
||||||
description = "play with mpv";
|
|
||||||
icon = "multimedia-player";
|
|
||||||
command = "mpv -- %F";
|
|
||||||
types = [
|
|
||||||
"audio-files"
|
|
||||||
"video-files"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "compare-in-meld";
|
id = "compare-in-meld";
|
||||||
name = "Compare in Meld";
|
name = "compare in meld";
|
||||||
description = "diff exactly two files or folders";
|
|
||||||
icon = "document-properties";
|
icon = "document-properties";
|
||||||
command = "meld %F";
|
command = "${fm} compare %F";
|
||||||
range = "2-2";
|
types = [ "everything" ];
|
||||||
types = everything;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "archive-extract-here";
|
|
||||||
name = "Extract Here";
|
|
||||||
description = "unpack content into the current folder";
|
|
||||||
icon = "package-x-generic";
|
|
||||||
command = "${fm} extract %F";
|
|
||||||
patterns = archivePatterns;
|
|
||||||
submenu = "Archive";
|
|
||||||
types = [ "other-files" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "archive-extract-to-folder";
|
|
||||||
name = "Extract to Folder";
|
|
||||||
description = "unpack into a folder named after the archive";
|
|
||||||
icon = "package-x-generic";
|
|
||||||
command = "${fm} extract-to-folder %F";
|
|
||||||
patterns = archivePatterns;
|
|
||||||
submenu = "Archive";
|
|
||||||
types = [ "other-files" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "archive-zip";
|
|
||||||
name = "Compress to .zip";
|
|
||||||
icon = "package-x-generic";
|
|
||||||
command = "${fm} zip %N";
|
|
||||||
submenu = "Archive";
|
|
||||||
types = everything;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "archive-7z";
|
|
||||||
name = "Compress to .7z";
|
|
||||||
icon = "package-x-generic";
|
|
||||||
command = "${fm} 7z %N";
|
|
||||||
submenu = "Archive";
|
|
||||||
types = everything;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "archive-tar-zst";
|
|
||||||
name = "Compress to .tar.zst";
|
|
||||||
icon = "package-x-generic";
|
|
||||||
command = "${fm} tar-zst %N";
|
|
||||||
submenu = "Archive";
|
|
||||||
types = everything;
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "image-to-png";
|
id = "image-to-png";
|
||||||
name = "Convert to PNG";
|
name = "convert to PNG";
|
||||||
icon = "image-x-generic";
|
icon = "image-x-generic";
|
||||||
command = "${fm} img-png %F";
|
command = "${fm} img-png %F";
|
||||||
submenu = "Image";
|
|
||||||
types = [ "image-files" ];
|
types = [ "image-files" ];
|
||||||
|
submenu = "Image";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "image-to-jpg";
|
id = "image-to-jpg";
|
||||||
name = "Convert to JPEG";
|
name = "convert to JPEG";
|
||||||
icon = "image-x-generic";
|
icon = "image-x-generic";
|
||||||
command = "${fm} img-jpg %F";
|
command = "${fm} img-jpg %F";
|
||||||
submenu = "Image";
|
|
||||||
types = [ "image-files" ];
|
types = [ "image-files" ];
|
||||||
|
submenu = "Image";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "image-to-webp";
|
id = "image-to-webp";
|
||||||
name = "Convert to WebP";
|
name = "convert to WebP";
|
||||||
icon = "image-x-generic";
|
icon = "image-x-generic";
|
||||||
command = "${fm} img-webp %F";
|
command = "${fm} img-webp %F";
|
||||||
submenu = "Image";
|
|
||||||
types = [ "image-files" ];
|
types = [ "image-files" ];
|
||||||
|
submenu = "Image";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "image-resize-1920";
|
id = "image-resize-1920";
|
||||||
name = "Resize to 1920px";
|
name = "resize to 1920px";
|
||||||
description = "shrink to 1920px wide but keep aspect ratio";
|
|
||||||
icon = "image-x-generic";
|
icon = "image-x-generic";
|
||||||
command = "${fm} img-resize %F";
|
command = "${fm} img-resize %F";
|
||||||
submenu = "Image";
|
|
||||||
types = [ "image-files" ];
|
types = [ "image-files" ];
|
||||||
|
submenu = "Image";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "image-strip-metadata";
|
id = "image-strip-metadata";
|
||||||
name = "Strip Metadata";
|
name = "strip metadata";
|
||||||
description = "remove EXIF and other metadata from images";
|
|
||||||
icon = "image-x-generic";
|
icon = "image-x-generic";
|
||||||
command = "${fm} img-strip %F";
|
command = "${fm} img-strip %F";
|
||||||
submenu = "Image";
|
|
||||||
types = [ "image-files" ];
|
types = [ "image-files" ];
|
||||||
}
|
|
||||||
{
|
|
||||||
id = "image-ocr";
|
|
||||||
name = "OCR to Clipboard";
|
|
||||||
description = "ocr to clipboard";
|
|
||||||
icon = "edit-copy";
|
|
||||||
command = "${fm} ocr %f";
|
|
||||||
submenu = "Image";
|
submenu = "Image";
|
||||||
types = [ "image-files" ];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "image-set-wallpaper";
|
id = "image-set-wallpaper";
|
||||||
name = "Set as Wallpaper";
|
name = "Set as Wallpaper";
|
||||||
icon = "preferences-desktop-wallpaper";
|
icon = "preferences-desktop-wallpaper";
|
||||||
command = "${fm} wallpaper %f";
|
command = "${fm} wallpaper %f";
|
||||||
submenu = "Image";
|
|
||||||
types = [ "image-files" ];
|
types = [ "image-files" ];
|
||||||
|
submenu = "Image";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "media-to-mp4";
|
id = "media-to-mp4";
|
||||||
name = "Convert to MP4";
|
name = "convert to MP4";
|
||||||
description = "H.264 / AAC, CRF 20";
|
|
||||||
icon = "video-x-generic";
|
icon = "video-x-generic";
|
||||||
command = "ghostty -e ${fm} vid-mp4 %F";
|
command = "ghostty -e ${fm} vid-mp4 %F";
|
||||||
submenu = "Media";
|
|
||||||
types = [ "video-files" ];
|
types = [ "video-files" ];
|
||||||
|
submenu = "Media";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "media-extract-audio";
|
id = "media-extract-audio";
|
||||||
name = "Extract Audio (MP3)";
|
name = "extract Audio (MP3)";
|
||||||
icon = "audio-x-generic";
|
icon = "audio-x-generic";
|
||||||
command = "ghostty -e ${fm} vid-audio %F";
|
command = "ghostty -e ${fm} vid-audio %F";
|
||||||
submenu = "Media";
|
|
||||||
types = [
|
types = [
|
||||||
"audio-files"
|
"audio-files"
|
||||||
"video-files"
|
"video-files"
|
||||||
];
|
];
|
||||||
|
submenu = "Media";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "media-to-gif";
|
id = "media-to-gif";
|
||||||
name = "Make GIF";
|
name = "make GIF";
|
||||||
description = "640px, 15 fps, optimized";
|
|
||||||
icon = "video-x-generic";
|
icon = "video-x-generic";
|
||||||
command = "ghostty -e ${fm} vid-gif %F";
|
command = "ghostty -e ${fm} vid-gif %F";
|
||||||
submenu = "Media";
|
|
||||||
types = [ "video-files" ];
|
types = [ "video-files" ];
|
||||||
|
submenu = "Media";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "media-info";
|
id = "media-info";
|
||||||
name = "Media Info";
|
name = "media info";
|
||||||
description = "ffprobe the selection";
|
|
||||||
icon = "dialog-information";
|
icon = "dialog-information";
|
||||||
command = "ghostty -e ${fm} media-info %F";
|
command = "ghostty -e ${fm} media-info %F";
|
||||||
submenu = "Media";
|
|
||||||
types = [
|
types = [
|
||||||
"audio-files"
|
"audio-files"
|
||||||
"image-files"
|
"image-files"
|
||||||
"video-files"
|
"video-files"
|
||||||
];
|
];
|
||||||
|
submenu = "Media";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "pdf-to-images";
|
id = "pdf-to-images";
|
||||||
name = "Render to PNG";
|
name = "render to PNG";
|
||||||
description = "150 dpi, one file per page";
|
|
||||||
icon = "application-pdf";
|
icon = "application-pdf";
|
||||||
command = "${fm} pdf-images %F";
|
command = "${fm} pdf-images %F";
|
||||||
patterns = [ "*.pdf" ];
|
mimeTypes = pdfMimeTypes;
|
||||||
submenu = "PDF";
|
submenu = "PDF";
|
||||||
types = [ "other-files" ];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "pdf-merge";
|
id = "pdf-merge";
|
||||||
name = "Merge into merged.pdf";
|
name = "merge into merged.pdf";
|
||||||
icon = "application-pdf";
|
icon = "application-pdf";
|
||||||
command = "${fm} pdf-merge %F";
|
command = "${fm} pdf-merge %F";
|
||||||
patterns = [ "*.pdf" ];
|
mimeTypes = pdfMimeTypes;
|
||||||
range = "2-64";
|
|
||||||
submenu = "PDF";
|
submenu = "PDF";
|
||||||
types = [ "other-files" ];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "tools-copy-path";
|
id = "tools-copy-path";
|
||||||
name = "Copy Full Path";
|
name = "copy full path";
|
||||||
icon = "edit-copy";
|
icon = "edit-copy";
|
||||||
command = "${fm} copy-path %F";
|
command = "${fm} copy-path %F";
|
||||||
|
types = [ "everything" ];
|
||||||
submenu = "Tools";
|
submenu = "Tools";
|
||||||
types = everything;
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "tools-copy-content";
|
id = "tools-copy-content";
|
||||||
name = "Copy File Contents";
|
name = "copy file contents";
|
||||||
icon = "edit-copy";
|
icon = "edit-copy";
|
||||||
command = "${fm} copy-content %F";
|
command = "${fm} copy-content %F";
|
||||||
submenu = "Tools";
|
|
||||||
types = [ "text-files" ];
|
types = [ "text-files" ];
|
||||||
|
submenu = "Tools";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "tools-checksum";
|
id = "tools-checksum";
|
||||||
name = "SHA-256 Checksum";
|
name = "SHA-256 Checksum";
|
||||||
icon = "dialog-information";
|
icon = "dialog-information";
|
||||||
command = "ghostty -e ${fm} checksum %F";
|
command = "ghostty -e ${fm} checksum %F";
|
||||||
|
types = [ "files" ];
|
||||||
submenu = "Tools";
|
submenu = "Tools";
|
||||||
types = files;
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "tools-duplicate";
|
id = "tools-duplicate";
|
||||||
name = "Duplicate";
|
name = "Duplicate";
|
||||||
description = "copy alongside as <name>.copy";
|
|
||||||
icon = "edit-copy";
|
icon = "edit-copy";
|
||||||
command = "${fm} duplicate %F";
|
command = "${fm} duplicate %F";
|
||||||
|
types = [ "everything" ];
|
||||||
submenu = "Tools";
|
submenu = "Tools";
|
||||||
types = everything;
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "tools-symlink";
|
id = "tools-symlink";
|
||||||
name = "Create Symlink Here";
|
name = "Create Symlink Here";
|
||||||
icon = "emblem-symbolic-link";
|
icon = "emblem-symbolic-link";
|
||||||
command = "${fm} symlink %F";
|
command = "${fm} symlink %F";
|
||||||
|
types = [ "everything" ];
|
||||||
submenu = "Tools";
|
submenu = "Tools";
|
||||||
types = everything;
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
id = "tools-dos2unix";
|
id = "tools-dos2unix";
|
||||||
name = "Fix Line Endings";
|
name = "Fix Line Endings";
|
||||||
description = "convert CRLF to LF";
|
|
||||||
icon = "text-x-generic";
|
icon = "text-x-generic";
|
||||||
command = "dos2unix -- %F";
|
command = "dos2unix -- %F";
|
||||||
submenu = "Tools";
|
|
||||||
types = [ "text-files" ];
|
types = [ "text-files" ];
|
||||||
|
submenu = "Tools";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
mkServiceMenu =
|
||||||
|
{
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
command,
|
||||||
|
icon ? "",
|
||||||
|
types ? null,
|
||||||
|
mimeTypes ? null,
|
||||||
|
submenu ? null,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
mimes = if mimeTypes != null then mimeTypes else concatMap (t: typeMime.${t}) types;
|
||||||
|
in
|
||||||
|
concatStringsSep "\n" (
|
||||||
|
[
|
||||||
|
"[Desktop Entry]"
|
||||||
|
"Type=Service"
|
||||||
|
"X-KDE-ServiceTypes=KonqPopupMenu/Plugin"
|
||||||
|
"MimeType=${concatStringsSep ";" mimes};"
|
||||||
|
"Actions=${id};"
|
||||||
|
]
|
||||||
|
++ optional (submenu != null) "X-KDE-Submenu=${submenu}"
|
||||||
|
++ [
|
||||||
|
""
|
||||||
|
"[Desktop Action ${id}]"
|
||||||
|
"Name=${name}"
|
||||||
|
"Icon=${icon}"
|
||||||
|
"Exec=${command}"
|
||||||
|
]
|
||||||
|
);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home.packages = [ fmActions ];
|
home.packages = [ fmActions ];
|
||||||
|
|
||||||
xdg.configFile."Thunar/uca.xml".text = ''
|
xdg.dataFile = builtins.listToAttrs (
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
map (a: {
|
||||||
<actions>
|
name = "kio/servicemenus/${a.id}.desktop";
|
||||||
${concatMapStringsSep "\n" mkAction actions}
|
value.text = mkServiceMenu a;
|
||||||
</actions>
|
}) actions
|
||||||
'';
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -4,142 +4,28 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
let
|
let
|
||||||
home = config.home.homeDirectory;
|
home = config.home.homeDirectory;
|
||||||
thunar = pkgs.thunar.override {
|
|
||||||
thunarPlugins = with pkgs; [
|
|
||||||
thunar-media-tags-plugin
|
|
||||||
thunar-archive-plugin
|
|
||||||
thunar-vcs-plugin
|
|
||||||
thunar-volman
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home.packages = [ thunar ] ++ (with pkgs; [ catfish ]);
|
home.packages = with pkgs; [
|
||||||
xfconf.settings.thunar = {
|
kdePackages.dolphin
|
||||||
"default-view" = "ThunarIconsView";
|
kdePackages.dolphin-plugins
|
||||||
"last-view" = "ThunarIconsView";
|
|
||||||
"last-icon-view-zoom-level" = "THUNAR_ZOOM_LEVEL_100_PERCENT";
|
|
||||||
"last-details-view-zoom-level" = "THUNAR_ZOOM_LEVEL_38_PERCENT";
|
|
||||||
"last-compact-view-zoom-level" = "THUNAR_ZOOM_LEVEL_50_PERCENT";
|
|
||||||
"last-details-view-visible-columns" =
|
|
||||||
"THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE,THUNAR_COLUMN_DATE_MODIFIED";
|
|
||||||
"last-details-view-fixed-columns" = false;
|
|
||||||
"misc-expandable-folders" = true;
|
|
||||||
"misc-compact-view-max-chars" = 50;
|
|
||||||
|
|
||||||
# UI
|
|
||||||
"last-location-bar" = "ThunarLocationButtons";
|
|
||||||
"last-side-pane" = "THUNAR_SIDEPANE_TYPE_SHORTCUTS";
|
|
||||||
"last-menubar-visible" = false;
|
|
||||||
"last-statusbar-visible" = true;
|
|
||||||
"last-separator-position" = 180;
|
|
||||||
"misc-use-csd" = true;
|
|
||||||
"misc-small-toolbar-icons" = false;
|
|
||||||
"misc-text-beside-icons" = false;
|
|
||||||
"misc-symbolic-icons-in-toolbar" = true;
|
|
||||||
"misc-symbolic-icons-in-sidepane" = true;
|
|
||||||
"misc-window-title-style" = "THUNAR_WINDOW_TITLE_STYLE_FOLDER_NAME_WITHOUT_THUNAR_SUFFIX";
|
|
||||||
"misc-change-window-icon" = true;
|
|
||||||
"misc-highlighting-enabled" = true;
|
|
||||||
"misc-status-bar-active-info" = {
|
|
||||||
type = "uint";
|
|
||||||
value = 61;
|
|
||||||
};
|
|
||||||
"misc-image-size-in-statusbar" = true;
|
|
||||||
"last-toolbar-items" =
|
|
||||||
"menu:0,back:1,forward:1,open-parent:1,open-home:1,"
|
|
||||||
+ "new-tab:0,new-window:0,toggle-split-view:1,"
|
|
||||||
+ "undo:1,redo:1,zoom-out:0,zoom-in:0,zoom-reset:0,"
|
|
||||||
+ "view-as-icons:0,view-as-detailed-list:0,view-as-compact-list:0,view-switcher:1,"
|
|
||||||
+ "location-bar:1,reload:1,search:1";
|
|
||||||
|
|
||||||
# SIDE PANE
|
|
||||||
"shortcuts-icon-size" = "THUNAR_ICON_SIZE_16";
|
|
||||||
"shortcuts-icon-emblems" = true;
|
|
||||||
"tree-icon-size" = "THUNAR_ICON_SIZE_16";
|
|
||||||
"tree-icon-emblems" = true;
|
|
||||||
"misc-tree-lines-in-tree-sidepane" = true;
|
|
||||||
|
|
||||||
# SORT
|
|
||||||
"last-sort-column" = "THUNAR_COLUMN_NAME";
|
|
||||||
"last-sort-order" = "GTK_SORT_ASCENDING";
|
|
||||||
"misc-folders-first" = true;
|
|
||||||
"misc-case-sensitive" = false;
|
|
||||||
"last-show-hidden" = true;
|
|
||||||
|
|
||||||
# TABS
|
|
||||||
"last-restore-tabs" = true;
|
|
||||||
"misc-open-new-window-as-tab" = true;
|
|
||||||
"misc-switch-to-new-tab" = true;
|
|
||||||
"misc-always-show-tabs" = false;
|
|
||||||
"misc-tab-close-middle-click" = true;
|
|
||||||
"misc-middle-click-in-tab" = true;
|
|
||||||
"misc-confirm-close-multiple-tabs" = true;
|
|
||||||
"misc-remember-geometry" = true;
|
|
||||||
"misc-vertical-split-pane" = false;
|
|
||||||
"misc-always-enable-split-view" = false;
|
|
||||||
|
|
||||||
# THUMB
|
|
||||||
"misc-thumbnail-mode" = "THUNAR_THUMBNAIL_MODE_ONLY_LOCAL";
|
|
||||||
"misc-thumbnail-draw-frames" = true;
|
|
||||||
"misc-thumbnail-max-file-size" = {
|
|
||||||
type = "uint64";
|
|
||||||
value = 0;
|
|
||||||
};
|
|
||||||
"misc-image-preview-mode" = "THUNAR_IMAGE_PREVIEW_MODE_EMBEDDED";
|
|
||||||
"last-image-preview-visible" = false;
|
|
||||||
"misc-folder-item-count" = "THUNAR_FOLDER_ITEM_COUNT_ONLY_LOCAL";
|
|
||||||
|
|
||||||
# INTERACTION
|
|
||||||
"misc-single-click" = false;
|
|
||||||
"misc-ctrl-scroll-wheel-to-zoom" = true;
|
|
||||||
"misc-horizontal-wheel-navigates" = true;
|
|
||||||
"misc-date-style" = "THUNAR_DATE_STYLE_YYYYMMDD";
|
|
||||||
"misc-file-size-binary" = true;
|
|
||||||
"misc-recursive-search" = "THUNAR_RECURSIVE_SEARCH_LOCAL";
|
|
||||||
"misc-show-about-templates" = false;
|
|
||||||
"misc-directory-specific-settings" = false;
|
|
||||||
|
|
||||||
# FILE OPERATIONS
|
|
||||||
"misc-volume-management" = true;
|
|
||||||
"misc-exec-shell-scripts-by-default" = "THUNAR_EXECUTE_SHELL_SCRIPT_ASK";
|
|
||||||
"misc-recursive-permissions" = "THUNAR_RECURSIVE_PERMISSIONS_ASK";
|
|
||||||
"misc-confirm-move-to-trash" = false;
|
|
||||||
"misc-show-delete-action" = true;
|
|
||||||
"misc-undo-redo-history-size" = 30;
|
|
||||||
"misc-parallel-copy-mode" = "THUNAR_PARALLEL_COPY_MODE_ONLY_LOCAL_SAME_DEVICES";
|
|
||||||
"misc-transfer-use-partial" = "THUNAR_USE_PARTIAL_MODE_REMOTE";
|
|
||||||
"misc-transfer-verify-file" = "THUNAR_VERIFY_FILE_MODE_REMOTE";
|
|
||||||
};
|
|
||||||
|
|
||||||
xfconf.settings.thunar-volman = {
|
|
||||||
"automount-drives/enabled" = true;
|
|
||||||
"automount-media/enabled" = true;
|
|
||||||
"autobrowse/enabled" = true;
|
|
||||||
"autoopen/enabled" = false;
|
|
||||||
"autorun/enabled" = false;
|
|
||||||
"autoburn/enabled" = false;
|
|
||||||
"autoplay-audio-cds/enabled" = false;
|
|
||||||
"autoplay-video-cds/enabled" = false;
|
|
||||||
"autophoto/enabled" = false;
|
|
||||||
"autoipod/enabled" = false;
|
|
||||||
"autokeyboard/enabled" = false;
|
|
||||||
"automouse/enabled" = false;
|
|
||||||
"autoprinter/enabled" = false;
|
|
||||||
"autotablet/enabled" = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk.gtk3.bookmarks = [
|
|
||||||
"file://${home}/copland nix"
|
|
||||||
"file://${home}/.config dotfiles"
|
|
||||||
"file://${home}/Documents"
|
|
||||||
"file://${home}/Downloads"
|
|
||||||
"file://${home}/Music"
|
|
||||||
"file://${home}/Pictures"
|
|
||||||
"file://${home}/Videos"
|
|
||||||
"file://${home}/Videos-HDD"
|
|
||||||
"file://${home}/Projects"
|
|
||||||
"file://${home}/ProjectsHDD"
|
|
||||||
];
|
];
|
||||||
|
home.file.".local/share/user-places.xbel".text = ''
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<xbel xmlns:bookmark="http://www.freedesktop.org/standards/desktop-bookmarks"
|
||||||
|
xmlns:kdepriv="http://www.kde.org/kdepriv">
|
||||||
|
<bookmark href="file://${home}"><title>Home</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/copland"><title>nix</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/.config"><title>dotfiles</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Documents"><title>documents</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Downloads"><title>downloads</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Music"><title>music</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Pictures"><title>pictures</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Videos"><title>videos</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Videos_XFS"><title>videos-xfs</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Projects"><title>projects</title></bookmark>
|
||||||
|
<bookmark href="file://${home}/Projects_XFS"><title>projects-xfs</title></bookmark>
|
||||||
|
</xbel>
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,26 +1,28 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
flake.homeModules.home-gtk =
|
flake.homeModules.home-gtk =
|
||||||
{ pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme.name = "WhiteSur-Dark";
|
theme.name = "Adwaita-dark";
|
||||||
theme.package = pkgs.whitesur-gtk-theme;
|
theme.package = pkgs.gnome-themes-extra;
|
||||||
gtk4.theme.name = "WhiteSur-Dark";
|
gtk4.theme.name = "adwaita-dark";
|
||||||
gtk4.theme.package = pkgs.whitesur-gtk-theme;
|
iconTheme.name = "Adwaita";
|
||||||
iconTheme.name = "WhiteSur-dark";
|
iconTheme.package = pkgs.adwaita-icon-theme;
|
||||||
iconTheme.package = pkgs.whitesur-icon-theme;
|
|
||||||
font = {
|
font = {
|
||||||
name = "JetBrainsMono Nerd Font";
|
name = "JetBrainsMono Nerd Font";
|
||||||
size = 11;
|
size = 11;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gtk3.extraCss = config.elars.theme.palette.adwaitaGtkCss;
|
||||||
|
gtk4.extraCss = config.elars.theme.palette.adwaitaGtkCss;
|
||||||
};
|
};
|
||||||
|
|
||||||
dconf.settings."org/gnome/desktop/interface" = {
|
dconf.settings."org/gnome/desktop/interface" = {
|
||||||
color-scheme = "prefer-dark";
|
color-scheme = "prefer-dark";
|
||||||
gtk-application-prefer-dark-theme = true;
|
gtk-application-prefer-dark-theme = true;
|
||||||
gtk-theme = "WhiteSur-Dark";
|
gtk-theme = "Adwaita-dark";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{ inputs, ... }:
|
||||||
|
{
|
||||||
|
flake.homeModules.home-icons =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
gtk.iconTheme = {
|
||||||
|
name = "int_nord";
|
||||||
|
package = inputs.theme-assets.packages.${pkgs.stdenv.hostPlatform.system}.int-nord-icon-theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
xdg.mimeApps = {
|
xdg.mimeApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultApplications = {
|
defaultApplications = {
|
||||||
"inode/directory" = [ "thunar.desktop" ];
|
"inode/directory" = [ "org.kde.dolphin.desktop" ];
|
||||||
"x-scheme-handler/about" = [ "helium.desktop" ];
|
"x-scheme-handler/about" = [ "helium.desktop" ];
|
||||||
"x-scheme-handler/unknown" = [ "helium.desktop" ];
|
"x-scheme-handler/unknown" = [ "helium.desktop" ];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,30 +1,79 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
flake.homeModules.home-qt =
|
flake.homeModules.home-qt =
|
||||||
{ pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
p = config.elars.theme.palette.withHashtag;
|
||||||
|
active = builtins.concatStringsSep ", " [
|
||||||
|
p.base05 p.base01 p.base02 p.base02 p.base00 p.base01
|
||||||
|
p.base05 p.base07 p.base05 p.base01 p.base00 p.base00
|
||||||
|
p.base06 p.base00 p.base0D p.base0E p.base02 p.base01
|
||||||
|
p.base01 p.base05 p.base04
|
||||||
|
];
|
||||||
|
inactive = active;
|
||||||
|
disabled = builtins.concatStringsSep ", " [
|
||||||
|
p.base04 p.base01 p.base02 p.base02 p.base00 p.base01
|
||||||
|
p.base04 p.base06 p.base04 p.base01 p.base00 p.base00
|
||||||
|
p.base02 p.base04 p.base04 p.base04 p.base02 p.base01
|
||||||
|
p.base01 p.base04 p.base03
|
||||||
|
];
|
||||||
|
|
||||||
|
font = "JetBrainsMono Nerd Font,11,-1,5,50,0,0,0,0,0";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme.name = "kde";
|
platformTheme.name = "qtct";
|
||||||
style.name = "kvantum";
|
style.name = "qtct";
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."Kvantum/WhiteSur-Dark/WhiteSur-Dark.kvconfig".source =
|
home.packages = [
|
||||||
"${pkgs.whitesur-kde}/share/Kvantum/WhiteSur/WhiteSurDark.kvconfig";
|
pkgs.qt5ct
|
||||||
xdg.configFile."Kvantum/WhiteSur-Dark/WhiteSur-Dark.svg".source =
|
pkgs.qt6ct
|
||||||
"${pkgs.whitesur-kde}/share/Kvantum/WhiteSur/WhiteSurDark.svg";
|
];
|
||||||
|
|
||||||
xdg.configFile."Kvantum/kvantum.kvconfig".text = ''
|
xdg.configFile."qt5ct/colors/kemuri.conf".text = ''
|
||||||
[General]
|
[ColorScheme]
|
||||||
theme=WhiteSur-Dark
|
active_colors=${active}
|
||||||
|
inactive_colors=${inactive}
|
||||||
|
disabled_colors=${disabled}
|
||||||
|
'';
|
||||||
|
xdg.configFile."qt6ct/colors/kemuri.conf".text = ''
|
||||||
|
[ColorScheme]
|
||||||
|
active_colors=${active}
|
||||||
|
inactive_colors=${inactive}
|
||||||
|
disabled_colors=${disabled}
|
||||||
|
'';
|
||||||
|
|
||||||
|
xdg.configFile."qt5ct/qt5ct.conf".text = ''
|
||||||
|
[Appearance]
|
||||||
|
style=Fusion
|
||||||
|
custom_palette=true
|
||||||
|
color_scheme_path=${config.xdg.configHome}/qt5ct/colors/kemuri.conf
|
||||||
|
standard_dialogs=default
|
||||||
|
|
||||||
|
[Fonts]
|
||||||
|
fixed="${font}"
|
||||||
|
general="${font}"
|
||||||
|
'';
|
||||||
|
xdg.configFile."qt6ct/qt6ct.conf".text = ''
|
||||||
|
[Appearance]
|
||||||
|
style=Fusion
|
||||||
|
custom_palette=true
|
||||||
|
color_scheme_path=${config.xdg.configHome}/qt6ct/colors/kemuri.conf
|
||||||
|
standard_dialogs=default
|
||||||
|
|
||||||
|
[Fonts]
|
||||||
|
fixed="${font}"
|
||||||
|
general="${font}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
xdg.configFile."kdeglobals".text = ''
|
xdg.configFile."kdeglobals".text = ''
|
||||||
[General]
|
[General]
|
||||||
font=JetBrainsMono Nerd Font,11,-1,5,50,0,0,0,0,0
|
font=${font}
|
||||||
fixed=JetBrainsMono Nerd Font,11,-1,5,50,0,0,0,0,0
|
fixed=${font}
|
||||||
menuFont=JetBrainsMono Nerd Font,11,-1,5,50,0,0,0,0,0
|
menuFont=${font}
|
||||||
toolBarFont=JetBrainsMono Nerd Font,11,-1,5,50,0,0,0,0,0
|
toolBarFont=${font}
|
||||||
smallestReadableFont=JetBrainsMono Nerd Font,9,-1,5,50,0,0,0,0,0
|
smallestReadableFont=JetBrainsMono Nerd Font,9,-1,5,50,0,0,0,0,0
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
# LAUNCHERS
|
# LAUNCHERS
|
||||||
"Mod+Return".action.spawn = [ "ghostty" ];
|
"Mod+Return".action.spawn = [ "ghostty" ];
|
||||||
"Mod+W".action.spawn = [ "helium" ];
|
"Mod+W".action.spawn = [ "helium" ];
|
||||||
"Mod+E".action.spawn = [ "thunar" ];
|
"Mod+E".action.spawn = [ "dolphin" ];
|
||||||
"Mod+Z".action.spawn = [ "code" ];
|
"Mod+Z".action.spawn = [ "code" ];
|
||||||
"Mod+Alt+V".action.spawn = [ "pavucontrol" ];
|
"Mod+Alt+V".action.spawn = [ "pavucontrol" ];
|
||||||
"Mod+Shift+V".action.spawn-sh = "noctalia msg panel-toggle clipboard";
|
"Mod+Shift+V".action.spawn-sh = "noctalia msg panel-toggle clipboard";
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{ inputs, ... }:
|
||||||
|
{
|
||||||
|
flake.homeModules.home-theme-kemuri =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
elars.theme.palette = inputs.themes.custom {
|
||||||
|
name = "Kemuri Susu";
|
||||||
|
author = "elars";
|
||||||
|
|
||||||
|
base00 = "1e1d1b";
|
||||||
|
base01 = "282624";
|
||||||
|
base02 = "34312d";
|
||||||
|
base03 = "594f46";
|
||||||
|
base04 = "73685f";
|
||||||
|
base05 = "f0ede6";
|
||||||
|
base06 = "cabaaa";
|
||||||
|
base07 = "fafbfe";
|
||||||
|
|
||||||
|
base08 = "cf7670"; # red / mError
|
||||||
|
base09 = "d1ba94"; # orange (approximated, see note above)
|
||||||
|
base0A = "bfa67a"; # yellow
|
||||||
|
base0B = "8ca38a"; # green
|
||||||
|
base0C = "7fa39a"; # cyan
|
||||||
|
base0D = "78909c"; # blue
|
||||||
|
base0E = "b38f99"; # magenta
|
||||||
|
base0F = "594f46"; # brown / mTertiary
|
||||||
|
|
||||||
|
accent = "cabaaa";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
flake.homeModules.home-theme =
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
options.elars.theme.palette = lib.mkOption {
|
||||||
|
type = lib.types.raw;
|
||||||
|
description = ''
|
||||||
|
Active ThemeNix-shaped base16 palette. Set by exactly one
|
||||||
|
`home-theme-*` module (e.g. home-theme-kemuri); consumed by
|
||||||
|
home-gtk and home-qt.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -16,18 +16,17 @@
|
|||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# apps
|
# apps
|
||||||
onlyoffice-desktopeditors
|
onlyoffice-desktopeditors
|
||||||
|
whatsapp-electron
|
||||||
telegram-desktop
|
telegram-desktop
|
||||||
prismlauncher
|
prismlauncher
|
||||||
moonlight-qt
|
moonlight-qt
|
||||||
qbittorrent
|
qbittorrent
|
||||||
obs-studio
|
obs-studio
|
||||||
localsend
|
localsend
|
||||||
picotool
|
picotool
|
||||||
sunshine
|
sunshine
|
||||||
# todo find better spotify client
|
spotify
|
||||||
spotify
|
heroic
|
||||||
whatsie
|
|
||||||
heroic
|
|
||||||
loupe
|
loupe
|
||||||
gimp
|
gimp
|
||||||
wine
|
wine
|
||||||
@@ -182,7 +181,6 @@
|
|||||||
uv
|
uv
|
||||||
|
|
||||||
# editors
|
# editors
|
||||||
lite-xl
|
|
||||||
neovim
|
neovim
|
||||||
vscode
|
vscode
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user