From 23ac64bf87ba271e848ad281dd4cf15e371a1c1a Mon Sep 17 00:00:00 2001 From: iiogama Date: Sun, 14 Jan 2024 19:09:07 -0800 Subject: [PATCH] Switch from stylix which auto-generates themes to nix-colors which allows manual color assignment. Added gtk-nix flake to assist with nix-colors and gtk. --- flake.lock | 143 ++++++++++++++++++++++- flake.nix | 4 +- home-manager/{ => dots}/firefox.nix | 0 home-manager/dots/foot.nix | 32 ++++++ home-manager/dots/gtk.nix | 95 ++++++++++++++++ home-manager/dots/mako.nix | 28 +++++ home-manager/dots/river.nix | 168 ++++++++++++++++++++++++++++ home-manager/dots/special.nix | 26 +++++ home-manager/dots/swappy.nix | 15 +++ home-manager/dots/swaylock.nix | 30 +++++ home-manager/dots/way-displays.nix | 89 +++++++++++++++ home-manager/gui.nix | 14 --- home-manager/wayland.nix | 43 ++----- hosts/default.nix | 2 +- todo.md | 2 - 15 files changed, 640 insertions(+), 51 deletions(-) rename home-manager/{ => dots}/firefox.nix (100%) create mode 100644 home-manager/dots/foot.nix create mode 100644 home-manager/dots/gtk.nix create mode 100644 home-manager/dots/mako.nix create mode 100644 home-manager/dots/river.nix create mode 100644 home-manager/dots/special.nix create mode 100644 home-manager/dots/swappy.nix create mode 100644 home-manager/dots/swaylock.nix create mode 100644 home-manager/dots/way-displays.nix diff --git a/flake.lock b/flake.lock index 72e2204..7d49532 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,80 @@ { "nodes": { + "banner": { + "inputs": { + "nixpkgs": [ + "gtk-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669224926, + "narHash": "sha256-UK19yx8jNqbPfBZNUeJr2Sms7BhbDAUyJBF5w2CT6Hc=", + "owner": "the-argus", + "repo": "banner.nix", + "rev": "253556f4068f5cb9728e49ac42d630cdc0ccfd58", + "type": "github" + }, + "original": { + "owner": "the-argus", + "repo": "banner.nix", + "type": "github" + } + }, + "base16-schemes": { + "flake": false, + "locked": { + "lastModified": 1689473676, + "narHash": "sha256-L0RhUr9+W5EPWBpLcmkKpUeCEWRs/kLzVMF3Vao2ZU0=", + "owner": "tinted-theming", + "repo": "base16-schemes", + "rev": "d95123ca6377cd849cfdce92c0a24406b0c6a789", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-schemes", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gtk-nix": { + "inputs": { + "banner": "banner", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1692384535, + "narHash": "sha256-lFOEsDLV7kuEAcHS7HfyGewTcdSkzTxM+l3XwGhzLgU=", + "owner": "the-argus", + "repo": "gtk-nix", + "rev": "e77b9e68aa818b87389c682b4fd018ad451a85d3", + "type": "github" + }, + "original": { + "owner": "the-argus", + "repo": "gtk-nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -20,7 +95,56 @@ "type": "github" } }, + "nix-colors": { + "inputs": { + "base16-schemes": "base16-schemes", + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1695388192, + "narHash": "sha256-2jelpE7xK+4M7jZNyWL7QYOYegQLYBDQS5bvdo8XRUQ=", + "owner": "misterio77", + "repo": "nix-colors", + "rev": "37227f274b34a3b51649166deb94ce7fec2c6a4c", + "type": "github" + }, + "original": { + "owner": "misterio77", + "repo": "nix-colors", + "type": "github" + } + }, "nixpkgs": { + "locked": { + "lastModified": 1692264070, + "narHash": "sha256-WepAkIL2UcHOj7JJiaFS/vxrA9lklQHv8p+xGL+7oQ0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "42c25608aa2ad4e5d3716d8d63c606063513ba33", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1694911725, + "narHash": "sha256-8YqI+YU1DGclEjHsnrrGfqsQg3Wyga1DfTbJrN3Ud0c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "819180647f428a3826bfc917a54449da1e532ce0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1703013332, "narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=", @@ -38,8 +162,25 @@ }, "root": { "inputs": { + "gtk-nix": "gtk-nix", "home-manager": "home-manager", - "nixpkgs": "nixpkgs" + "nix-colors": "nix-colors", + "nixpkgs": "nixpkgs_2" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 819b0c0..508fd6a 100644 --- a/flake.nix +++ b/flake.nix @@ -9,8 +9,10 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + nix-colors.url = "github:misterio77/nix-colors"; + gtk-nix.url = "github:the-argus/gtk-nix"; }; - outputs = inputs @ { self, nixpkgs, home-manager }: + outputs = { nixpkgs, home-manager, ... }@inputs: let system = "x86_64-linux"; user = { diff --git a/home-manager/firefox.nix b/home-manager/dots/firefox.nix similarity index 100% rename from home-manager/firefox.nix rename to home-manager/dots/firefox.nix diff --git a/home-manager/dots/foot.nix b/home-manager/dots/foot.nix new file mode 100644 index 0000000..16b999f --- /dev/null +++ b/home-manager/dots/foot.nix @@ -0,0 +1,32 @@ +{ pkgs, config, ... }: +{ + programs.foot = { + enable = true; + settings = { + main = { + font = "Comic Mono:size=11"; + }; + colors = { + alpha = 1.0; + foreground = "${config.colorScheme.colors.base0F}"; + background = "${config.colorScheme.colors.base00}"; + regular0 = "${config.colorScheme.colors.base00}"; + regular1 = "${config.colorScheme.colors.base01}"; + regular2 = "${config.colorScheme.colors.base02}"; + regular3 = "${config.colorScheme.colors.base03}"; + regular4 = "${config.colorScheme.colors.base04}"; + regular5 = "${config.colorScheme.colors.base05}"; + regular6 = "${config.colorScheme.colors.base06}"; + regular7 = "${config.colorScheme.colors.base07}"; + bright0 = "${config.colorScheme.colors.base08}"; + bright1 = "${config.colorScheme.colors.base09}"; + bright2 = "${config.colorScheme.colors.base0A}"; + bright3 = "${config.colorScheme.colors.base0B}"; + bright4 = "${config.colorScheme.colors.base0C}"; + bright5 = "${config.colorScheme.colors.base0D}"; + bright6 = "${config.colorScheme.colors.base0E}"; + bright7 = "${config.colorScheme.colors.base0F}"; + }; + }; + }; +} diff --git a/home-manager/dots/gtk.nix b/home-manager/dots/gtk.nix new file mode 100644 index 0000000..86939ad --- /dev/null +++ b/home-manager/dots/gtk.nix @@ -0,0 +1,95 @@ +{ pkgs, config, ... }: +{ + gtk = { + enable = true; + font = { + name = "Comic Mono"; + }; + }; + gtkNix = { + enable = true; + configuration = { + spacing-small = "0.3em"; + spacing-medium = "0.6em"; + spacing-large = "0.9em"; + tint-weak = 0.3; + tint-medium = 0.6; + tint-strong = 0.9; + border-size = "0.2em"; + radius = "0.5em"; + disabled-opacity = 0.3; + }; + + defaultTransparency = 255; + + # neither of these options are very useful. They're just so that if + # I forgot to make something configurable, you can override previous + # variable definitions. + extraConfigSCSS = ''''; + extraColorSCSS = ''''; + + whites = let + mkWhite = alpha: "f0f0f3${alpha}"; + in { + strongest = mkWhite "FF"; + strong = mkWhite "DE"; + moderate = mkWhite "57"; + weak = mkWhite "24"; + weakest = mkWhite "0F"; + }; + blacks = let + mkBlack = alpha: "191724${alpha}"; + in { + strongest = mkBlack "FF"; + strong = mkBlack "DE"; + moderate = mkBlack "6B"; + weak = mkBlack "26"; + weakest = mkBlack "0F"; + }; + + palette = rec { + # the banner palette format. can also be a path to a yaml file + # instead of attrs. this example is rose pine. + base00 = "${config.colorScheme.colors.base00}"; + base01 = "${config.colorScheme.colors.base01}"; + base02 = "${config.colorScheme.colors.base02}"; + base03 = "${config.colorScheme.colors.base03}"; + base04 = "${config.colorScheme.colors.base04}"; + base05 = "${config.colorScheme.colors.base05}"; + base06 = "${config.colorScheme.colors.base06}"; + base07 = "${config.colorScheme.colors.base07}"; + base08 = "${config.colorScheme.colors.base08}"; + base09 = "${config.colorScheme.colors.base09}"; + base10 = "${config.colorScheme.colors.base0A}"; + base11 = "${config.colorScheme.colors.base0B}"; + base12 = "${config.colorScheme.colors.base0C}"; + base13 = "${config.colorScheme.colors.base0D}"; + base14 = "${config.colorScheme.colors.base0E}"; + base15 = "${config.colorScheme.colors.base0F}"; + highlight = "${config.colorScheme.colors.base0E}"; + hialt0 = "${config.colorScheme.colors.base0A}"; + hialt1 = "${config.colorScheme.colors.base0E}"; + hialt2 = "${config.colorScheme.colors.base0B}"; + urgent = "${config.colorScheme.colors.base09}"; + warn = "${config.colorScheme.colors.base0A}"; + confirm = "${config.colorScheme.colors.base0D}"; + link = "${config.colorScheme.colors.base0E}"; + pfg-highlight = "${config.colorScheme.colors.base00}"; + pfg-hialt0 = "${config.colorScheme.colors.base00}"; + pfg-hialt1 = "${config.colorScheme.colors.base00}"; + pfg-hialt2 = "${config.colorScheme.colors.base05}"; + pfg-urgent = "${config.colorScheme.colors.base00}"; + pfg-warn = "${config.colorScheme.colors.base00}"; + pfg-confirm = "${config.colorScheme.colors.base00}"; + pfg-link = "${config.colorScheme.colors.base00}"; + ansi00 = "${config.colorScheme.colors.base03}"; + ansi01 = "${config.colorScheme.colors.base09}"; + ansi02 = "${config.colorScheme.colors.base0D}"; + ansi03 = "${config.colorScheme.colors.base0A}"; + ansi04 = "${config.colorScheme.colors.base0C}"; + ansi05 = "${config.colorScheme.colors.base0E}"; + ansi06 = "${config.colorScheme.colors.base0B}"; + ansi07 = "${config.colorScheme.colors.base05}"; + }; + }; +} diff --git a/home-manager/dots/mako.nix b/home-manager/dots/mako.nix new file mode 100644 index 0000000..4ac2a37 --- /dev/null +++ b/home-manager/dots/mako.nix @@ -0,0 +1,28 @@ +{ pkgs, config, ... }: +{ + services.mako = { + enable = true; + backgroundColor = "#${config.colorScheme.colors.base01}"; + borderColor = "#${config.colorScheme.colors.base0E}"; + borderRadius = 5; + borderSize = 2; + textColor = "#${config.colorScheme.colors.base04}"; + anchor = "top-right"; + layer = "overlay"; + maxVisible = 5; + font = "Comic Mono 12"; + defaultTimeout = 10000; + extraConfig = '' + [urgency=low] + border-color=#${config.colorScheme.colors.base01} + text-color=#${config.colorScheme.colors.base07} + [urgency=normal] + border-color=#${config.colorScheme.colors.base0D} + text-color=#${config.colorScheme.colors.base04} + [urgency=high] + background-color=#${config.colorScheme.colors.base0E} + border-color=#${config.colorScheme.colors.base0E} + text-color=#${config.colorScheme.colors.base04} + ''; + }; +} diff --git a/home-manager/dots/river.nix b/home-manager/dots/river.nix new file mode 100644 index 0000000..ece1c63 --- /dev/null +++ b/home-manager/dots/river.nix @@ -0,0 +1,168 @@ +{ pkgs, config, ... }: +{ + xdg.configFile = { + "init" = { + enable = true; + executable = true; + target = "river/init"; + text = '' + #!/usr/bin/env sh + # See the river(1), riverctl(1), and rivertile(1) man pages for complete + # documentation. + + # Variables + TERMINAL="foot" + LOCKSCREEN="swaylock" + + # Autostart + riverctl spawn "way-displays -c $HOME/.config/way-displays/cfg.yaml" + riverctl spawn "swww init" + riverctl spawn "swww img $HOME/Pictures/wallpapers/bliss-night.png --transition-type simple" + riverctl spawn "wl-paste --type text --watch cliphist store" + riverctl spawn "wl-paste --type image --watch cliphist store" + riverctl spawn "mako" + riverctl spawn "mullvad-gui" + + # Theme + riverctl background-color 0x${config.colorScheme.colors.base00} + riverctl border-color-focused 0x${config.colorScheme.colors.base0A} + riverctl border-color-unfocused 0x${config.colorScheme.colors.base00} + + # Launch Shortcuts + riverctl map normal Super Return spawn "$TERMINAL tmux.sh" + riverctl map normal Super+Shift Return spawn "$TERMINAL" + riverctl map normal Super Space spawn "wmenu.sh" + + # Focus Controls + riverctl map normal Super H send-layout-cmd rivertile "main-count +1" + riverctl map normal Super J focus-view next + riverctl map normal Super K focus-view previous + riverctl map normal Super L send-layout-cmd rivertile "main-count -1" + riverctl map normal Alt Tab focus-view next + riverctl map normal Alt+Shift Tab focus-view previous + riverctl map normal Super Tab focus-output next + riverctl map normal Super Bracketright focus-output next + riverctl map normal Super Bracketleft focus-output previous + + # Move Controls + riverctl map normal Super+Shift H zoom + riverctl map normal Super+Shift J swap next + riverctl map normal Super+Shift K swap previous + riverctl map normal Super+Shift L spawn $LOCKSCREEN + riverctl map normal Super+Shift Tab send-to-output next + riverctl map normal Super+Shift Bracketright send-to-output next + riverctl map normal Super+Shift Bracketleft send-to-output previous + + # Layout Controls + riverctl map normal Super+Alt H send-layout-cmd rivertile "main-ratio -0.05" + riverctl map normal Super+Alt L send-layout-cmd rivertile "main-ratio +0.05" + riverctl map normal Super I send-layout-cmd rivertile "main-count +1" + riverctl map normal Super D send-layout-cmd rivertile "main-count -1" + riverctl map normal Super Up send-layout-cmd rivertile "main-location top" + riverctl map normal Super Right send-layout-cmd rivertile "main-location right" + riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom" + riverctl map normal Super Left send-layout-cmd rivertile "main-location left" + + # Floating Controls + riverctl map normal Super F toggle-float + riverctl map normal Super+Control H move left 100 + riverctl map normal Super+Control J move down 100 + riverctl map normal Super+Control K move up 100 + riverctl map normal Super+Control L move right 100 + riverctl map normal Super+Shift+Control H snap left + riverctl map normal Super+Shift+Control J snap down + riverctl map normal Super+Shift+Control K snap up + riverctl map normal Super+Shift+Control L snap right + riverctl map normal Super+Alt+Shift H resize horizontal -100 + riverctl map normal Super+Alt+Shift J resize vertical 100 + riverctl map normal Super+Alt+Shift K resize vertical -100 + riverctl map normal Super+Alt+Shift L resize horizontal 100 + riverctl map-pointer normal Super BTN_LEFT move-view + riverctl map-pointer normal Super BTN_RIGHT resize-view + + # Close focused view + riverctl map normal Super W close + riverctl map normal Super Q close + # Exit River + riverctl map normal Super+Shift Q exit + + for i in $(seq 1 9) + do + tags=$((1 << ($i - 1))) + + # Super+[1-9] to focus tag [0-8] + riverctl map normal Super $i spawn "riverctl set-focused-tags $tags; notify-send 'Tag $tags focus toggle';" + + # Super+Shift+[1-9] to tag focused view with tag [0-8] + riverctl map normal Super+Shift $i spawn "riverctl set-view-tags $tags; riverctl set-focused-tags $tags; notify-send 'Tag $tags swap toggle';" + + # Super+Control+[1-9] to toggle focus of tag [0-8] + riverctl map normal Super+Control $i spawn "riverctl toggle-focused-tags $tags; notify-send 'Tag $tags focus toggle';" + + # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view + riverctl map normal Super+Shift+Control $i spawn "riverctl toggle-view-tags $tags; notiy-send 'Tag $tags assignment toggle';" + done + + # Super+0 to focus all tags + # Super+Shift+0 to tag focused view with all tags + all_tags=$(((1 << 32) - 1)) + riverctl map normal Super 0 spawn "riverctl set-focused-tags $all_tags; notify-send 'All tags focus toggle';" + riverctl map normal Super+Shift 0 spawn "riverctl set-view-tags $all_tags; notify-send 'All tags assignment toggle';" + + # Toggle fullscreen + riverctl map normal None F11 toggle-fullscreen + riverctl map normal Super Z toggle-fullscreen + + # Declare a passthrough mode. This mode has only a single mapping to return to + # normal mode. This makes it useful for testing a nested wayland compositor + riverctl declare-mode passthrough + + # Super+F11 to enter passthrough mode + riverctl map normal Super F11 enter-mode passthrough + + # Super+F11 to return to normal mode + riverctl map passthrough Super F11 enter-mode normal + + # Various media key mapping examples for both normal and locked mode which do + # not have a modifier + for mode in normal locked + do + riverctl map $mode None XF86Eject spawn 'eject -T' + + # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) + riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5' + riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5' + riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute' + + # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) + riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPrev spawn 'playerctl previous' + riverctl map $mode None XF86AudioNext spawn 'playerctl next' + + # Control screen backlight brightness with light (https://github.com/haikarainen/light) + riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5' + riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5' + done + + # Set keyboard repeat rate + riverctl set-repeat 50 300 + + # Make all views with an app-id that starts with "float" and title "foo" start floating. + riverctl rule-add -app-id 'float*' -title 'foo' float + + # Make all views with app-id "bar" and any title use client-side decorations + riverctl rule-add -app-id "bar" csd + + # Global Configuration Settings + riverctl default-layout rivertile + rivertile -view-padding 10 -outer-padding 10 & + riverctl attach-mode bottom + riverctl hide-cursor timeout 10000 + riverctl hide-cursor when-typing enabled + riverctl set-cursor-warp on-focus-change + riverctl focus-follows-cursor always + ''; + }; + }; +} diff --git a/home-manager/dots/special.nix b/home-manager/dots/special.nix new file mode 100644 index 0000000..aab0995 --- /dev/null +++ b/home-manager/dots/special.nix @@ -0,0 +1,26 @@ +{ pkgs, config, ... }: +{ + xdg.configFile = { + "current_theme.xml" = { + enable = true; + text = '' + ${config.colorScheme.colors.base00} + ${config.colorScheme.colors.base01} + ${config.colorScheme.colors.base02} + ${config.colorScheme.colors.base03} + ${config.colorScheme.colors.base04} + ${config.colorScheme.colors.base05} + ${config.colorScheme.colors.base06} + ${config.colorScheme.colors.base07} + ${config.colorScheme.colors.base08} + ${config.colorScheme.colors.base09} + ${config.colorScheme.colors.base0A} + ${config.colorScheme.colors.base0B} + ${config.colorScheme.colors.base0C} + ${config.colorScheme.colors.base0D} + ${config.colorScheme.colors.base0E} + ${config.colorScheme.colors.base0F} + ''; + }; + }; +} diff --git a/home-manager/dots/swappy.nix b/home-manager/dots/swappy.nix new file mode 100644 index 0000000..6b1cad9 --- /dev/null +++ b/home-manager/dots/swappy.nix @@ -0,0 +1,15 @@ +{ pkgs, config, ... }: +{ + xdg.configFile = { + "swappy/config" = { + enable = true; + text = '' + [Default] + save_dir=$HOME/Pictures/screenshots + line_size=5 + text_size=20 + text_font=Comic Mono + ''; + }; + }; +} diff --git a/home-manager/dots/swaylock.nix b/home-manager/dots/swaylock.nix new file mode 100644 index 0000000..9e7e632 --- /dev/null +++ b/home-manager/dots/swaylock.nix @@ -0,0 +1,30 @@ +{ pkgs, config, ... }: +{ + programs.swaylock = { + enable = true; + settings = { + color = "${config.colorScheme.colors.base00}"; + inside-color = "${config.colorScheme.colors.base01}"; + line-color = "${config.colorScheme.colors.base01}"; + ring-color = "${config.colorScheme.colors.base09}"; + text-color = "${config.colorScheme.colors.base05}"; + layout-bg-color = "${config.colorScheme.colors.base01}"; + layout-text-color = "${config.colorScheme.colors.base05}"; + inside-clear-color = "${config.colorScheme.colors.base04}"; + line-clear-color = "${config.colorScheme.colors.base01}"; + ring-clear-color = "${config.colorScheme.colors.base04}"; + text-clear-color = "${config.colorScheme.colors.base01}"; + inside-ver-color = "${config.colorScheme.colors.base09}"; + line-ver-color = "${config.colorScheme.colors.base01}"; + ring-ver-color = "${config.colorScheme.colors.base09}"; + text-ver-color = "${config.colorScheme.colors.base01}"; + inside-wrong-color = "${config.colorScheme.colors.base0B}"; + line-wrong-color = "${config.colorScheme.colors.base01}"; + ring-wrong-color = "${config.colorScheme.colors.base0B}"; + text-wrong-color = "${config.colorScheme.colors.base01}"; + bs-hl-color = "${config.colorScheme.colors.base0B}"; + key-hl-color = "${config.colorScheme.colors.base02}"; + text-caps-lock-color = "${config.colorScheme.colors.base05}"; + }; + }; +} diff --git a/home-manager/dots/way-displays.nix b/home-manager/dots/way-displays.nix new file mode 100644 index 0000000..16ffb1b --- /dev/null +++ b/home-manager/dots/way-displays.nix @@ -0,0 +1,89 @@ +{ pkgs, config, ... }: +{ + xdg.configFile = { + "way-displays/cfg.yml" = { + enable = true; + text = '' + # Default cfg.yaml for way-displays. + # Copy this to ~/.config/way-displays/cfg.yaml and edit it to your liking. + # + # See https://github.com/alex-courtis/way-displays/blob/master/doc/CONFIGURATION.md + + + # Arrange displays in a ROW (default, left to right) or a COLUMN (top to bottom) + ARRANGE: ROW + + # Align ROWs at the TOP (default), MIDDLE or BOTTOM + # Align COLUMNs at the LEFT (default), MIDDLE or RIGHT + ALIGN: TOP + + + # The default ORDER is simply the order in which the displays are discovered. + # Define your own. + ORDER: + - 'DP-1' + - 'DP-2' + + + # Enable scaling, overrides AUTO_SCALE and SCALE + SCALING: TRUE + + # The default is to scale each display by DPI. + # This may be disabled and scale 1 will be used, unless a SCALE has been specified. + AUTO_SCALE: TRUE + + + # Auto scale may be overridden for each display. + SCALE: + #- NAME_DESC: 'monitor description' + # SCALE: 1.75 + + # Override the preferred mode. + # WARNING: this may result in an unusable display. See https://github.com/alex-courtis/way-displays#known-issues-with-workarounds + # for a possible workaround. + MODE: + # Resolution and refresh + #- NAME_DESC: HDMI-A-1 + # WIDTH: 1920 + # HEIGHT: 1080 + # HZ: 60 + + # Resolution with highest refresh + #- NAME_DESC: 'monitor description' + # WIDTH: 2560 + # HEIGHT: 1440 + + # Highest available + - NAME_DESC: DP-1 + MAX: TRUE + - NAME_DESC: DP-2 + MAX: TRUE + + # Rotate or translate the display. + # 90, 180, 270, FLIPPED, FLIPPED-90, FLIPPED-180, FLIPPED-270 + TRANSFORM: + # - NAME_DESC: 'monitor description' + # TRANSFORM: 270 + + # VRR / adaptive sync is enabled by default. Disable it per display. + VRR_OFF: + # - DP-2 + # - '!.*my monitor.*' + + + # Laptop displays usually start with eDP e.g. eDP-1. This may be overridden if + # your laptop is different. + #LAPTOP_DISPLAY_PREFIX: 'eDP' + + + # One of: ERROR, WARNING, INFO (default), DEBUG + LOG_THRESHOLD: INFO + + + # Disable the specified displays. + DISABLED: + #- "eDP-1" + ''; + }; + }; +} diff --git a/home-manager/gui.nix b/home-manager/gui.nix index 0c3d6f5..28797f5 100644 --- a/home-manager/gui.nix +++ b/home-manager/gui.nix @@ -10,18 +10,4 @@ "${config.xdg.dataHome}/flatpak/exports/share" ]; }; - gtk = { - enable = true; - theme = { - name = "Dracula"; - package = pkgs.dracula-theme; - }; - iconTheme = { - name = "Dracula-Icon-Theme"; - package = pkgs.dracula-icon-theme; - }; - font = { - name = "Comic Mono"; - }; - }; } diff --git a/home-manager/wayland.nix b/home-manager/wayland.nix index 446ac2d..5e331e4 100644 --- a/home-manager/wayland.nix +++ b/home-manager/wayland.nix @@ -2,38 +2,17 @@ { config, lib, pkgs, inputs, user, ... }: { imports = [ + inputs.nix-colors.homeManagerModules.default + inputs.gtk-nix.homeManagerModule ./gui.nix + ./dots/foot.nix + ./dots/mako.nix + ./dots/river.nix + ./dots/special.nix + ./dots/swappy.nix + ./dots/swaylock.nix + ./dots/way-displays.nix ]; - xdg.configFile = { - "foot" = { - source = ./dots/foot; - target = "foot"; - recursive = true; - }; - "mako" = { - source = ./dots/mako; - target = "mako"; - recursive = true; - }; - "river" = { - source = ./dots/river; - target = "river"; - recursive = true; - }; - "swappy" = { - source = ./dots/swappy; - target = "swappy"; - recursive = true; - }; - "swaylock" = { - source = ./dots/swaylock; - target = "swaylock"; - recursive = true; - }; - "way-displays" = { - source = ./dots/way-displays; - target = "way-displays"; - recursive = true; - }; - }; + colorScheme = inputs.nix-colors.colorSchemes.nord; + gtkNix.enable = true; } diff --git a/hosts/default.nix b/hosts/default.nix index f8f238d..a90abe3 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -12,7 +12,7 @@ home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { inherit user; }; + home-manager.extraSpecialArgs = { inherit user inputs; }; home-manager.users.${user.name} = { imports = [ ../home-manager/wayland.nix diff --git a/todo.md b/todo.md index a2a8dc3..e9d773b 100644 --- a/todo.md +++ b/todo.md @@ -9,10 +9,8 @@ - [Homeage Git Repo](https://github.com/jordanisaacs/homeage) - [Handling Secrets in NixOS](https://lgug2z.com/articles/handling-secrets-in-nixos-an-overview/) - [NixOS Secrets Management](https://onion.tube/watch?v=G5f6GC7SnhU) -- [ ] Implement [Stylix](https://danth.github.io/stylix/) - [ ] Implement [MicroVM.nix](https://github.com/astro/microvm.nix) - [ ] Figure out urlview and yank conflict with tmux plugins -- [ ] Implement [Nix-Colors](https://youtube.com/watch?v=jO2o0IN0LPE) - [ ] Fix autoupdate with remote flake repo - [ ] Wayland monitors swap positions after turning off and turning back on - [ ] GPG unlock prompt not happening on Wayland anymore