summaryrefslogtreecommitdiff
path: root/home-manager
diff options
context:
space:
mode:
authortriethyl <triethylammonium@pm.me>2025-10-27 14:23:32 -0400
committertriethyl <triethylammonium@pm.me>2025-10-27 14:23:32 -0400
commit939d761c32904c408290d6764930d31e0cc890ab (patch)
treeb25b0a73d76228f910ebfcb2979b0afa8dc20bd2 /home-manager
parentfe7c52513cb49b7e56968bb1d759c7428d1e97f6 (diff)
home manager: cleaned up and edited desktop
Diffstat (limited to 'home-manager')
-rw-r--r--home-manager/features/cli/apps/iamb.nix0
-rw-r--r--home-manager/features/cli/scripts/spiral/default.nix10
-rw-r--r--home-manager/features/cli/scripts/spiral/plan.md47
-rwxr-xr-xhome-manager/features/cli/scripts/spiral/spiral.nu329
-rwxr-xr-xhome-manager/features/gui/desktops/niri/default.nix2
-rwxr-xr-xhome-manager/features/gui/desktops/niri/parts/fuzzel.nix5
-rw-r--r--home-manager/features/gui/desktops/niri/parts/niri/keybinds.nix34
-rw-r--r--home-manager/features/gui/desktops/niri/parts/scrap-maker.nix22
-rw-r--r--home-manager/features/gui/desktops/niri/parts/swayosd.nix52
-rwxr-xr-xhome-manager/features/gui/desktops/niri/parts/waybar.nix28
-rw-r--r--home-manager/modules/aesthetics/targets/gtk.nix36
-rw-r--r--home-manager/users/nzxt-desktop/culsans.nix3
-rw-r--r--home-manager/users/thinkpad-laptop/lucas.nix3
13 files changed, 165 insertions, 406 deletions
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
--- /dev/null
+++ b/home-manager/features/cli/apps/iamb.nix
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: <string>)`
-- `main open (--by-title (-t)) (--by-contents (-c)) (title: <string>)`
-- `main tags (tag: <string>)`
-- `main remove (--by-title (-t)) (--by-contents (-c)) (title: <string>)`
-- `main list`
-- `main restore (--by-title (-t)) (--by-contents (-c)) (title: <string>)`
-- `main journal (date: <string>)`
-
-## Action Functions
-
-Accept parameters and perform an action.
-
-- `create_note (--no-frontmatter) --title <string>`
-- `create_journal_entry --title <string>`
-- `open_file_in_editor --dir <dir>`
-
-## Interface Functions
-
-Accept a prompt and other data and return a value from the user.
-
-- `get_confirmation --prompt <string> -> bool`
-- `get_string_input --prompt <string> -> string`
-- `get_choice_from_list --list <list> -> string`
-- `get_choice_from_dir --dir <dir> -> path`
-- `get_choice_from_dir_file_contents --dir <dir> -> path: line number`
-- `get_choice_from_note_titles --dir <dir> -> path`
-
-## String Manipulation Functions
-
-Accept, modify, and return strings.
-
-- `title_to_path title: <string> -> path`
-- `strip_line_number string: <string> -> string`
-- `generate_note_text (--no-frontmatter) --title <string> -> string`
-
-## File Manipulation Functions
-
-Read, write, or otherwise manipulate files.
-
-- `parse_note_frontmatter path: <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;