From 939d761c32904c408290d6764930d31e0cc890ab Mon Sep 17 00:00:00 2001 From: triethyl Date: Mon, 27 Oct 2025 14:23:32 -0400 Subject: home manager: cleaned up and edited desktop --- home-manager/features/cli/apps/iamb.nix | 0 .../features/cli/scripts/spiral/default.nix | 10 - home-manager/features/cli/scripts/spiral/plan.md | 47 --- home-manager/features/cli/scripts/spiral/spiral.nu | 329 --------------------- .../features/gui/desktops/niri/default.nix | 2 + .../features/gui/desktops/niri/parts/fuzzel.nix | 5 +- .../gui/desktops/niri/parts/niri/keybinds.nix | 34 ++- .../gui/desktops/niri/parts/scrap-maker.nix | 22 ++ .../features/gui/desktops/niri/parts/swayosd.nix | 52 ++++ .../features/gui/desktops/niri/parts/waybar.nix | 28 +- home-manager/modules/aesthetics/targets/gtk.nix | 36 +++ home-manager/users/nzxt-desktop/culsans.nix | 3 - home-manager/users/thinkpad-laptop/lucas.nix | 3 - 13 files changed, 165 insertions(+), 406 deletions(-) create mode 100644 home-manager/features/cli/apps/iamb.nix delete mode 100644 home-manager/features/cli/scripts/spiral/default.nix delete mode 100644 home-manager/features/cli/scripts/spiral/plan.md delete mode 100755 home-manager/features/cli/scripts/spiral/spiral.nu create mode 100644 home-manager/features/gui/desktops/niri/parts/scrap-maker.nix create mode 100644 home-manager/features/gui/desktops/niri/parts/swayosd.nix (limited to 'home-manager') diff --git a/home-manager/features/cli/apps/iamb.nix b/home-manager/features/cli/apps/iamb.nix new file mode 100644 index 0000000..e69de29 diff --git a/home-manager/features/cli/scripts/spiral/default.nix b/home-manager/features/cli/scripts/spiral/default.nix deleted file mode 100644 index 780c207..0000000 --- a/home-manager/features/cli/scripts/spiral/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, pkgs, lib, ... }: let - cfg = config.features.cli.scripts.spiral; -in { - options.features.cli.scripts.spiral.enable = lib.mkEnableOption "spiral"; - config = lib.mkIf cfg.enable { - home.packages = [ - (pkgs.writers.writeNuBin "sp" (builtins.readFile ./spiral.nu)) - ]; - }; -} diff --git a/home-manager/features/cli/scripts/spiral/plan.md b/home-manager/features/cli/scripts/spiral/plan.md deleted file mode 100644 index adbcba0..0000000 --- a/home-manager/features/cli/scripts/spiral/plan.md +++ /dev/null @@ -1,47 +0,0 @@ -# Spiral Plan - -## Main Functions - -Are ran by the user. - -- `main new (--no-frontmatter (-n)) (title: )` -- `main open (--by-title (-t)) (--by-contents (-c)) (title: )` -- `main tags (tag: )` -- `main remove (--by-title (-t)) (--by-contents (-c)) (title: )` -- `main list` -- `main restore (--by-title (-t)) (--by-contents (-c)) (title: )` -- `main journal (date: )` - -## Action Functions - -Accept parameters and perform an action. - -- `create_note (--no-frontmatter) --title ` -- `create_journal_entry --title ` -- `open_file_in_editor --dir ` - -## Interface Functions - -Accept a prompt and other data and return a value from the user. - -- `get_confirmation --prompt -> bool` -- `get_string_input --prompt -> string` -- `get_choice_from_list --list -> string` -- `get_choice_from_dir --dir -> path` -- `get_choice_from_dir_file_contents --dir -> path: line number` -- `get_choice_from_note_titles --dir -> path` - -## String Manipulation Functions - -Accept, modify, and return strings. - -- `title_to_path title: -> path` -- `strip_line_number string: -> string` -- `generate_note_text (--no-frontmatter) --title -> string` - -## File Manipulation Functions - -Read, write, or otherwise manipulate files. - -- `parse_note_frontmatter path: -> record` -- `list_notes -> table` diff --git a/home-manager/features/cli/scripts/spiral/spiral.nu b/home-manager/features/cli/scripts/spiral/spiral.nu deleted file mode 100755 index 399dace..0000000 --- a/home-manager/features/cli/scripts/spiral/spiral.nu +++ /dev/null @@ -1,329 +0,0 @@ -#!/usr/bin/env nu - -# +---------------+ -# | Configuration | -# +---------------+ - -# Default config options. -mut config = { - notebook_dir: "~/Sync/notebook" - journal_dir: "~/Sync/notebook/journal" - trash_dir: "~/Sync/notebook/.trash" -} - -# Read config options from environment variables. -if ((try {$env.spiral_notebook_dir}) != null) { - $config.notebook_dir = $env.spiral_notebook_dir -} -if ((try {$env.spiral_journal_dir}) != null) { - $config.journal_dir = $env.spiral_journal_dir -} -if ((try {$env.spiral_trash_dir}) != null) { - $config.trash_dir = $env.spiral_trash_dir -} - -# Make config immutable. -let config = $config - -# +-------------+ -# | Subcommands | -# +-------------+ - -# A commandline utility written in nushell to manage your markdown notebook! -def "main" [] {} - -# Create a new note. -def "main new" [ - title?: string # The title of the new note. - --no-frontmatter (-n) # Don't add a frontmatter to the note. -] { - mut title = $title - if ($title == null) { - $title = get_string_input "Enter a title: " - } - if $no_frontmatter { - create_note --no-frontmatter $title - } else { - create_note $title - } -} - -# Open a pre-existing note. -def "main open" [ - --by-title (-t) # Filter notes by their title (disables preview) - --by-contents (-c) # Search through the contents of the notebook. - title?: string # The title of the note to open. -] { - if ($by_title and $by_contents) { - error make {msg: "Only one flag can be used at a time."} - } - if ($title != null) { - if ((title_to_path $title) | path exists) { - return (title_to_path $title) - } else { - if (confirm $"The note ($title) does not exist. Would you like to create it? ") { - create_note $title - } - } - } else if $by_title { - edit $"(get_choice_from_note_titles --dir $config.notebook_dir)" - } else if $by_contents { - edit (get_choice_from_dir_file_contents --dir $config.notebook_dir) - } else { - edit $"(get_choice_from_dir --dir $config.notebook_dir)" - } -} - -# Open a note based on the tag. -def "main tags" [ - tag?: string # The tag to select a note from. -] { - # This section of code creates nested records with tags and notes and stores them in $tag_record. - let note_table = list_notes --dir $config.notebook_dir - - let tag_list = $note_table - | get tags - | flatten - | where (($it != null) and ($it != "")) - - mut tag_record = {} - - print $tag_list - for tag in $tag_list { - mut notes = {} - for note_path in ($note_table | get path) { - let note_tags = ($note_table | where path == $note_path | get tags | flatten) - let note_title = ($note_table | where path == $note_path | get title | to text | str trim) - if ($note_tags != []) { - for note_tag in $note_tags { - if ($note_tag == $tag) { - $notes = $notes | insert $note_title { $note_path } - } - } - } - } - let notes = $notes - # $tag_record = $tag_record | insert $tag { $notes } - } - - # Actual logic of the subcommand - if ($tag == null) { - let user_tag_choice = get_choice_from_list --list $tag_list - if ($user_tag_choice != "") { - let note_record = $tag_record | get $user_tag_choice - let user_note_title_choice = get_choice_from_list --list ($note_record | columns) - if ($user_note_title_choice != "") { - edit ($note_record | get $user_note_title_choice) - } - } - } else { - if ($tag_list | any {|item| $item == $tag}) { - let note_record = $tag_record | get $tag - let user_note_title_choice = get_choice_from_list --list ($note_record | columns) - if ($user_note_title_choice != "") { - edit ($note_record | get $user_note_title_choice) - } - } else { - print $"The tag '($tag)' does not exist." - } - } -} - -# Get a table of notes and their properties. -def "main list" [] { - return (list_notes --dir $config.notebook_dir) -} - -# Send a note to the trash. -def "main remove" [ - --by-title (-t) # Filter notes by their title (disables preview) - --by-contents (-c) # Search through the contents of the notebook. - title?: string # The title of the note to send to the trash. -] { - if ($by_title and $by_contents) { - error make {msg: "Only one flag can be used at a time."} - } - if ($title != null) { - if ((title_to_path $title) | path exists) { - return (title_to_path $title) - } else { - if (confirm $"The note ($title) does not exist. Would you like to create it? ") { - create_note $title - } - } - } else if $by_title { - mv (select_note --by-title --dir $config.notebook_dir) - } else if $by_contents { - ^$env.editor (select_note --by-contents --dir $config.notebook_dir) - } else { - ^$env.editor (select_note --dir $config.notebook_dir) - } -} - -# Explains how to configural Spiral. -def "main config" [] { - print "The default options:" - print $config - print "These can be modified by editing the environment variables corresponding to each option. For example, to change the notebook directory, set $env.spiral_notebook_dir='~/custom-dir/notebook'." -} - -# +------------------+ -# | Action Functions | -# +------------------+ - -def create_note [--no-frontmatter, title: string] { - let note_path = title_to_path $title - if ($note_path | path exists) { - if (confirm "This note already exists. Would you like to open it?") { - edit $note_path - } else {exit} - } else { - if $no_frontmatter { - generate_note_text --no-frontmatter --title $title | save $note_path - } else { - generate_note_text --title $title | save $note_path - } - edit $"($note_path):100:100" - } -} - -def create_journal_entry [ - -] { - -} - -def edit [ - file_path: string -] { - if (($file_path | path type) == file) { - ^$env.editor ($file_path | path expand) - } -} - -# +---------------------+ -# | Interface Functions | -# +---------------------+ - -def get_string_input [prompt: string] { - print $prompt - return (input) -} - -def get_confirmation [prompt: string] { - print $"($prompt) \(Y/n)" - let confirmation = (input | str downcase) - if ($confirmation == "n" ) { - return false - } else {return true} -} - -def get_choice_from_list [ --list: list ] { - return (($list | to text) | tv) -} # -> string - -def get_choice_from_dir [ --dir: string ] { - return $"($config.notebook_dir | path expand)/(tv files ($dir | path expand))" -} # -> full path - -def get_choice_from_dir_file_contents [ --dir: string ] { - return $"($config.notebook_dir | path expand)/(tv text ($dir | path expand))" -} # -> full path: line number - -def get_choice_from_note_titles [ --dir: string ] { - let note_table = list_notes --dir $config.notebook_dir - let user_choice = get_choice_from_list --list ($note_table | get title) - let user_choice_path = ( - $note_table - | where title == $user_choice - | get path - | to text - | str trim - ) - if (($user_choice_path | path type) == file) { - return $user_choice_path - } -} # -> full path - -# +-------------------------------+ -# | String Manipulation Functions | -# +-------------------------------+ - -def title_to_path [title: string] { - return ( - $"($config.notebook_dir)/($title | str kebab-case).md" - | path expand - ) -} # -> full path - -def strip_line_number [string: string] { - return ( - $string - | split row ":" - | select 0 - | to text - | str trim - ) -} # -> string - -def generate_note_text [ - --no-frontmatter - --title: string -] { - if $no_frontmatter { - return $"# ($title)\n" - } else { - let frontmatter_info = { - title: $title - date: (date now) - lang: "en-US" - tags: ['note'] - } - return $"---\n($frontmatter_info | to yaml)---\n\n# ($title)" - } -} # -> string - -# +-----------------------------+ -# | File Manipulation Functions | -# +-----------------------------+ - -def list_notes [--dir: string] { - return (( - ls ($dir | path expand) - | where type == file - | get name - ) | par-each { - |note_path| - let frontmatter = parse_frontmatter $note_path - if ($frontmatter != null) { - return { - title: (try {$frontmatter.title}) - path: $note_path - tags: (try {$frontmatter.tags}) - date: (try {$frontmatter.date}) - lang: (try {$frontmatter.lang}) - } - } - }) -} # -> table - -def parse_frontmatter [path: string] { - let frontmatter = try { - open ($path | path expand) - | split row "---" - | get 1 - | from yaml - } - if ($frontmatter == null) { - let title = try { - open ($path | path expand) - | split row "#" - | get 1 - | split row "\n" - | get 0 - | str trim - } - return {title: $title} - } - return $frontmatter -} # -> record diff --git a/home-manager/features/gui/desktops/niri/default.nix b/home-manager/features/gui/desktops/niri/default.nix index 270be51..17b62c7 100755 --- a/home-manager/features/gui/desktops/niri/default.nix +++ b/home-manager/features/gui/desktops/niri/default.nix @@ -10,12 +10,14 @@ in { features.gui.desktops.niri.parts = { niri.enable = true; waybar.enable = true; + swayosd.enable = true; fuzzel.enable = true; selectors.enable = true; swww.enable = true; mako.enable = true; hyprlock.enable = false; quickshell.enable = true; + scrap-maker.enable = true; }; }; } diff --git a/home-manager/features/gui/desktops/niri/parts/fuzzel.nix b/home-manager/features/gui/desktops/niri/parts/fuzzel.nix index 1d44625..ea6253a 100755 --- a/home-manager/features/gui/desktops/niri/parts/fuzzel.nix +++ b/home-manager/features/gui/desktops/niri/parts/fuzzel.nix @@ -8,7 +8,10 @@ in { enable = true; settings = { main = { - width = 20; + width = 24; + horizontal-pad = 16; + vertical-pad = 16; + inner-pad = 8; terminal = config.default-applications.terminal-emulator.runTuiCommand; }; border = { diff --git a/home-manager/features/gui/desktops/niri/parts/niri/keybinds.nix b/home-manager/features/gui/desktops/niri/parts/niri/keybinds.nix index 91ccd30..7a370f3 100644 --- a/home-manager/features/gui/desktops/niri/parts/niri/keybinds.nix +++ b/home-manager/features/gui/desktops/niri/parts/niri/keybinds.nix @@ -16,6 +16,7 @@ "Mod+W".action.spawn = ["librewolf"]; "Mod+E".action.spawn = ["neovide"]; "Mod+Shift+E".action.spawn = ["neovide" "--" "-c" "Calendar"]; + "Mod+N".action.spawn = ["scrap-maker"]; # Reboot to gaming OS "Mod+G".action.spawn = ["${lib.getExe (pkgs.writers.writeNuBin "gameos" "pkexec ${pkgs.efibootmgr}/bin/efibootmgr --bootnext 0000; reboot")}"]; @@ -157,14 +158,35 @@ "Mod+0".action.focus-workspace = 0; # XF86 Keys - "XF86AudioRaiseVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%+"]; - "XF86AudioLowerVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"]; - "XF86AudioMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"]; + # "XF86AudioRaiseVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%+"]; + # "XF86AudioLowerVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"]; + # "XF86AudioMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"]; + # + # "XF86MonBrightnessUp".action.spawn = ["${lib.getExe pkgs.brightnessctl}" "s" "+5%"]; + # "XF86MonBrightnessDown".action.spawn = ["${lib.getExe pkgs.brightnessctl}" "s" "5%-"]; + # + # "XF86LaunchB".action.spawn = ["fuzzel"]; + + # XF86 Keys with SwayOSD + "XF86AudioRaiseVolume".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --output-volume=raise"]; + "XF86AudioLowerVolume".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --output-volume=lower"]; + "XF86AudioMute".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --output-volume=mute-toggle"]; + + "XF86MonBrightnessUp".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --brightness=raise"]; + "XF86MonBrightnessDown".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --brightness=lower"]; + + "XF86LaunchA".action.spawn-sh = "${lib.getExe pkgs.wdisplays}"; + "XF86LaunchB".action.spawn = ["fuzzel"]; - "XF86MonBrightnessUp".action.spawn = ["${lib.getExe pkgs.brightnessctl}" "s" "+5%"]; - "XF86MonBrightnessDown".action.spawn = ["${lib.getExe pkgs.brightnessctl}" "s" "5%-"]; + "XF86Eject".action.spawn-sh = "eject -T"; # Just in case I have a disk reader - "XF86LaunchB".action.spawn = ["fuzzel"]; + "XF86AudioPrev".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --playerctl=prev"]; + "XF86AudioPlay".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --playerctl=play-pause"]; + "XF86AudioNext".action.spawn = ["nu" "-c" "swayosd-client --monitor (niri msg -j focused-output | from json | get name) --playerctl=next"]; + + "Caps_Lock".action.spawn = ["nu" "-c" "sleep 0.2 ; swayosd-client --monitor (niri msg -j focused-output | from json | get name) --caps-lock"]; + "Num_Lock".action.spawn = ["nu" "-c" "sleep 0.2 ; swayosd-client --monitor (niri msg -j focused-output | from json | get name) --num-lock"]; + "Scroll_Lock".action.spawn = ["nu" "-c" "sleep 0.2 ; swayosd-client --monitor (niri msg -j focused-output | from json | get name) --scroll-lock"]; }; }; } diff --git a/home-manager/features/gui/desktops/niri/parts/scrap-maker.nix b/home-manager/features/gui/desktops/niri/parts/scrap-maker.nix new file mode 100644 index 0000000..19cce56 --- /dev/null +++ b/home-manager/features/gui/desktops/niri/parts/scrap-maker.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.features.gui.desktops.niri.parts.scrap-maker; + + scrapDirectory = "~/Sync/vault/scraps"; +in { + options.features.gui.desktops.niri.parts.scrap-maker.enable = lib.mkEnableOption "scrap maker"; + config = lib.mkIf cfg.enable { + home.packages = [ + (pkgs.writers.writeNuBin "scrap-maker" '' + let scrap_text = fuzzel -d -l 0 -p "" -x 8 -y 8 -w 40 + let scrap_name = date now | format date "%s" + let scrap_path = ("${scrapDirectory}" + "/" + $scrap_name + ".md") | path expand + $scrap_text | save $scrap_path + '') + ]; + }; +} diff --git a/home-manager/features/gui/desktops/niri/parts/swayosd.nix b/home-manager/features/gui/desktops/niri/parts/swayosd.nix new file mode 100644 index 0000000..6cba218 --- /dev/null +++ b/home-manager/features/gui/desktops/niri/parts/swayosd.nix @@ -0,0 +1,52 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.features.gui.desktops.niri.parts.swayosd; + aes = config.aesthetics; + + swayosd-patched = pkgs.swayosd.overrideAttrs (old: { + postInstall = '' + mkdir -p $out/share/dbus-1/services + mv $out/share/dbus-1/system-services/org.erikreider.swayosd.service \ + $out/share/dbus-1/services/org.erikreider.swayosd.service + rm -r $out/share/dbus-1/system* + ''; + }); +in { + options.features.gui.desktops.niri.parts.swayosd.enable = lib.mkEnableOption "swayosd"; + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.swayosd ]; + dbus.packages = [ swayosd-patched ]; + services.swayosd = { + enable = true; + topMargin = 0.5; + stylePath = with aes.scheme; (builtins.toFile "style.scss" '' + window#osd { + border-radius: 4px; + border-width: 3px; + border-style: solid; + border-color: #${base0C}; + background-color: #${base00}; + color: #${base05}; + } + window#osd #container { + margin: 6px; + padding: 2px; + background: transparent; + } + window#osd trough { + margin-right: 10px; + } + window#osd image { + -gtk-icon-transform: scale(0.7); + } + * { + opacity: 1; + } + ''); + }; + }; +} diff --git a/home-manager/features/gui/desktops/niri/parts/waybar.nix b/home-manager/features/gui/desktops/niri/parts/waybar.nix index 7535b0c..06ad79e 100755 --- a/home-manager/features/gui/desktops/niri/parts/waybar.nix +++ b/home-manager/features/gui/desktops/niri/parts/waybar.nix @@ -12,14 +12,14 @@ in { layer = "top"; position = "bottom"; height = 32; - modules-left = [ "battery" "network" "backlight" "pulseaudio" ]; + modules-left = [ "battery" "network" "backlight" "pulseaudio" "custom/syncthing" ]; modules-center = [ "niri/workspaces" ]; modules-right = [ "clock#date" "clock#time" ]; "clock#date" = { format = " {:%A, %B %d}"; }; "clock#time" = { - format = " {:%I:%M}"; + format = " {:%I:%M}"; }; pulseaudio = { format = " {volume}%"; @@ -61,6 +61,20 @@ in { */ }; }; + "custom/syncthing" = { + exec = lib.getExe (pkgs.writers.writeNuBin "syncthing-waybar-module" /*nu*/ '' + let status = ${lib.getExe pkgs.stc-cli} events | from json | where type == "StateChanged" | reverse | get 0.data.to + let percent = ${lib.getExe pkgs.stc-cli} json_dump | from json | get folders | get syncPercentDone | math avg | into int + let icon = if ($status == "idle") { "" + } else if ($status == "scanning") { "" + } else if ($status == "syncing") { "" + } else { "" } + let percent_string = if ($percent == 100) { "Synced" } else { ($percent | into string) + "%" } + return ($icon + " " + $percent_string) + ''); + on-click = "${lib.getExe pkgs.stc-cli} rescan all"; + interval = 3; + }; }; }; style = let @@ -78,7 +92,7 @@ in { window#waybar { background-color: transparent; } - #clock.time, #clock.date, #backlight, #pulseaudio, #battery, #network { + #clock.time, #clock.date, #custom-syncthing, #backlight, #pulseaudio, #battery, #network { background-color: @background-color; color: @text-color; border-radius: ${border-radius}px; @@ -86,9 +100,12 @@ in { border-color: @border-color; padding: 0px ${padding}px; } - #backlight, #pulseaudio, #battery, #network { + #backlight, #pulseaudio, #battery, #network, #custom-syncthing { margin: 0px 0px ${padding} ${padding}; } + #clock.date, #clock.time { + margin: 0px ${padding} ${padding} 0px + } #workspaces { background-color: @background-color; color: @background-color; @@ -127,9 +144,6 @@ in { opacity: 0.8; transition: all 0.3s cubic-bezier(.25,.1,.25,1); } - #clock.date, #clock.time { - margin: 0px ${padding} ${padding} 0px - } ''; }; }; diff --git a/home-manager/modules/aesthetics/targets/gtk.nix b/home-manager/modules/aesthetics/targets/gtk.nix index ef783a7..dc3299a 100644 --- a/home-manager/modules/aesthetics/targets/gtk.nix +++ b/home-manager/modules/aesthetics/targets/gtk.nix @@ -7,6 +7,34 @@ cfg = config.aesthetics.targets.gtk; aes = config.aesthetics; + gtk3-nocsd = pkgs.stdenv.mkDerivation { + pname = "gtk3-nocsd"; + version = "3.0.8"; + + src = pkgs.fetchFromGitHub { + owner = "ZaWertun"; + repo = "gtk3-nocsd"; + rev = "v3.0.8"; + sha256 = "sha256-BOsQqxaVdC5O6EnB3KZinKSj0U5mCcX8HSjRmSBUFks="; + }; + + nativeBuildInputs = with pkgs; [ + pkg-config + ]; + + buildInputs = with pkgs; [ + gtk3 + gobject-introspection + ]; + + installPhase = '' + mkdir -p $out/lib + mkdir -p $out/bin + cp libgtk3-nocsd.so.0 $out/lib/ + cp gtk3-nocsd $out/bin/ + ''; + }; + gtkCSS = with aes.scheme; '' @define-color accent_color #${base0D}; @define-color accent_bg_color #${base0D}; @@ -130,5 +158,13 @@ in { "gtk-3.0/gtk.css".text = gtkCSS; "gtk-4.0/gtk.css".text = gtkCSS; }; + + home.sessionVariables = { + GTK_CSD = "0"; + LD_PRELOAD = "${gtk3-nocsd}/lib/libgtk3-nocsd.so.0"; + }; + + # Make the binary available in PATH + home.packages = [ gtk3-nocsd ]; }; } diff --git a/home-manager/users/nzxt-desktop/culsans.nix b/home-manager/users/nzxt-desktop/culsans.nix index 386c58e..c80eb7c 100644 --- a/home-manager/users/nzxt-desktop/culsans.nix +++ b/home-manager/users/nzxt-desktop/culsans.nix @@ -56,9 +56,6 @@ bundles = { go-env.enable = true; }; - scripts = { - spiral.enable = true; - }; }; services = { udiskie.enable = true; diff --git a/home-manager/users/thinkpad-laptop/lucas.nix b/home-manager/users/thinkpad-laptop/lucas.nix index ce2e067..487555d 100644 --- a/home-manager/users/thinkpad-laptop/lucas.nix +++ b/home-manager/users/thinkpad-laptop/lucas.nix @@ -52,9 +52,6 @@ bundles = { go-env.enable = true; }; - scripts = { - spiral.enable = true; - }; }; services = { udiskie.enable = true; -- cgit v1.2.3