diff options
Diffstat (limited to 'home')
-rw-r--r-- | home/configs/delta/remirin.nix | 24 | ||||
-rw-r--r-- | home/configs/haruka/sefidel.nix | 2 | ||||
-rw-r--r-- | home/default.nix | 45 | ||||
-rw-r--r-- | home/profiles/base/default.nix | 24 | ||||
-rw-r--r-- | home/profiles/browsing/default.nix | 1 | ||||
-rw-r--r-- | home/profiles/communication/default.nix | 13 | ||||
-rw-r--r-- | home/profiles/darwin/default.nix | 17 | ||||
-rw-r--r-- | home/profiles/development/default.nix | 9 | ||||
-rw-r--r-- | home/profiles/fonts/default.nix | 5 | ||||
-rw-r--r-- | home/profiles/gui/config/dunst.nix | 50 | ||||
-rw-r--r-- | home/profiles/gui/config/mako.nix | 45 | ||||
-rw-r--r-- | home/profiles/gui/config/sway.nix | 16 | ||||
-rw-r--r-- | home/profiles/gui/config/waybar/settings.nix | 14 | ||||
-rw-r--r-- | home/profiles/gui/config/waybar/style.nix | 19 | ||||
-rw-r--r-- | home/profiles/gui/default.nix | 105 | ||||
-rw-r--r-- | home/profiles/gui/scripts/aeroplane-mode.nix | 12 | ||||
-rw-r--r-- | home/profiles/gui/scripts/scratchpad-indicator.nix | 18 | ||||
-rw-r--r-- | home/profiles/research/default.nix | 12 | ||||
-rw-r--r-- | home/profiles/security/default.nix | 27 |
19 files changed, 303 insertions, 155 deletions
diff --git a/home/configs/delta/remirin.nix b/home/configs/delta/remirin.nix new file mode 100644 index 0000000..aa6eac3 --- /dev/null +++ b/home/configs/delta/remirin.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: + +{ + config = { + activeProfiles = [ + "base" + "darwin" +# "gui" +# "browsing" + "development" + "communication" +# "multimedia" +# "creative" + "research" +# "security" +# "gaming" + ]; + + programs.htop.settings.detailed_cpu_time = true; + + sops.defaultSopsFile = ../../secrets/secrets.yaml; + sops.gnupg.home = "/Users/remirin/.gnupg"; + }; +} diff --git a/home/configs/haruka/sefidel.nix b/home/configs/haruka/sefidel.nix index 22e53e9..9782020 100644 --- a/home/configs/haruka/sefidel.nix +++ b/home/configs/haruka/sefidel.nix @@ -17,7 +17,7 @@ profiles.gui = { laptop.enable = true; font = { - name = "ProFont"; + name = "Iosevka Term NF"; pixelSize = 14; }; }; diff --git a/home/default.nix b/home/default.nix index 0d414f3..2bb23a1 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,4 +1,4 @@ -{ self, unstable, ... } @ inputs: +{ self, unstable, nixpkgs-2311, ... } @ inputs: { "sefidel@alpha" = self.lib.mkHome { @@ -9,7 +9,7 @@ overlays = with inputs; [ rust.overlays.default neovim-nightly.overlays.default - nur.overlay + nur.overlays.default nixpkgs-wayland.overlay ]; }; @@ -42,15 +42,8 @@ overlays = with inputs; [ rust.overlays.default neovim-nightly.overlays.default - nur.overlay + nur.overlays.default nixpkgs-wayland.overlay - # TODO: fractional scaling is broken on 1.8+ - (final: prev: - let - nixpkgs2311 = import nixpkgs-2311 { system = "x86_64-linux"; }; - in { - sway-unwrapped = nixpkgs2311.pkgs.sway-unwrapped; - }) ]; }; @@ -73,6 +66,38 @@ version = "23.11"; }; + "remirin@delta" = self.lib.mkHome { + username = "remirin"; + hostname = "delta"; + homeDirectory = "/Users/remirin"; + pkgs = import unstable { + system = "aarch64-apple-darwin"; + overlays = with inputs; [ + rust.overlays.default + neovim-nightly.overlays.default + nur.overlays.default + ]; + }; + + extraModules = [ + ./profiles/populate.nix + ./profiles/base + ./profiles/darwin + ./profiles/browsing + ./profiles/development + ./profiles/communication + ./profiles/multimedia + ./profiles/creative + ./profiles/research + ./profiles/security + + inputs.mac-app-util.homeManagerModules.default + inputs.sops-nix.homeManagerModules.sops + ]; + + version = "25.05"; + }; + "sefidel@cobalt" = self.lib.mkHome { username = "sefidel"; hostname = "cobalt"; diff --git a/home/profiles/base/default.nix b/home/profiles/base/default.nix index 5e01ca0..a2e44c9 100644 --- a/home/profiles/base/default.nix +++ b/home/profiles/base/default.nix @@ -23,14 +23,17 @@ in # Airport AIRPORT_USER = "20963"; AIRPORT_HOST = "hk-s020.rsync.net"; + + # TODO: https://github.com/nix-community/home-manager/pull/5901 + SSH_AUTH_SOCK = lib.mkIf (config.services.gpg-agent.enable && pkgs.stdenv.isDarwin) "$(${config.programs.gpg.package}/bin/gpgconf --list-dirs agent-ssh-socket)"; }; home.keyboard.layout = "us"; home.packages = [ # Nix Tools + pkgs.nh pkgs.nix-index pkgs.nix-tree - pkgs.nix-top pkgs.nix-update pkgs.hydra-check @@ -48,6 +51,7 @@ in pkgs.procs pkgs.sops pkgs.tree + pkgs.units pkgs.neovim # Common build tools @@ -158,7 +162,7 @@ in }; } - { + (lib.mkIf pkgs.stdenv.isLinux { name = "doas-zsh-plugin"; src = pkgs.fetchFromGitHub { owner = "anatolykopyl"; @@ -167,6 +171,18 @@ in sha256 = "sha256-10rcF9cho9GuZCFQVIdFjvHCAlTLHNaLY4twxjT2jcE="; }; file = "doas.plugin.zsh"; + }) + + (lib.mkIf pkgs.stdenv.isDarwin { + name = "sudo-zsh-plugin"; + src = pkgs.oh-my-zsh.src; + file = "plugins/sudo/sudo.plugin.zsh"; + }) + + { + name = "zsh-vi-mode"; + src = pkgs.zsh-vi-mode; + file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh"; } ]; @@ -244,9 +260,9 @@ in ''; services = { - gpg-agent = lib.mkIf pkgs.stdenv.isLinux { + gpg-agent = { enable = true; - pinentryPackage = pkgs.pinentry-gnome3; + pinentryPackage = lib.mkIf pkgs.stdenv.isLinux pkgs.pinentry-gnome3; defaultCacheTtl = 3600; defaultCacheTtlSsh = 3600; maxCacheTtl = 86400; diff --git a/home/profiles/browsing/default.nix b/home/profiles/browsing/default.nix index e2baa0a..5634b34 100644 --- a/home/profiles/browsing/default.nix +++ b/home/profiles/browsing/default.nix @@ -98,6 +98,7 @@ in extensions = with pkgs.nur.repos.rycee.firefox-addons; [ bitwarden + consent-o-matic kagi-search tridactyl ]; diff --git a/home/profiles/communication/default.nix b/home/profiles/communication/default.nix index 4a287ee..38d14b1 100644 --- a/home/profiles/communication/default.nix +++ b/home/profiles/communication/default.nix @@ -25,7 +25,7 @@ in }; config = lib.mkIf cfg.enable (lib.mkMerge [ - # TODO: is this needed? + # TODO: also configure mail in Darwin (lib.mkIf pkgs.stdenv.isLinux { sops.secrets.sef-email-password = { }; @@ -407,10 +407,8 @@ in ispell urlscan - discord-canary + discord element-desktop - kiwitalk - nheko slack (weechat.override { configure = { availablePlugins, ... }: { @@ -426,9 +424,14 @@ in }) ]; - nixpkgs.allowedUnfree = [ "slack" "discord-canary" ]; + nixpkgs.allowedUnfree = [ "slack" "discord" ]; xdg.configFile."Element/config.json".text = builtins.toJSON (import ./element-config.nix); } + (lib.mkIf pkgs.stdenv.isDarwin { + home.packages = with pkgs; [ + thunderbird-latest-unwrapped + ]; + }) ]); } diff --git a/home/profiles/darwin/default.nix b/home/profiles/darwin/default.nix new file mode 100644 index 0000000..989beb1 --- /dev/null +++ b/home/profiles/darwin/default.nix @@ -0,0 +1,17 @@ +{ config, lib, pkgs, ... }: +let cfg = config.profiles.darwin; +in +{ + options.profiles.darwin = { + enable = lib.mkEnableOption + "Profile for darwin-related packages"; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ + pkgs.iterm2 + # pkgs.karabiner-elements # Package 'damaged', even with trampoline + ]; + + }; +} diff --git a/home/profiles/development/default.nix b/home/profiles/development/default.nix index 15cec65..dbc3767 100644 --- a/home/profiles/development/default.nix +++ b/home/profiles/development/default.nix @@ -41,7 +41,7 @@ in init.defaultBranch = "main"; pull.rebase = true; - merge.conflictStyle = "diff3"; + merge.conflictStyle = "zdiff3"; mergetool.fugitive = { cmd = ''nvim -f -c "Gvdiffsplit!" "$MERGED"''; @@ -222,7 +222,6 @@ in pkgs.du-dust pkgs.deploy-rs pkgs.dnsutils - pkgs.gdb # TODO: https://github.com/cli/cli/issues/4955 pkgs.gh pkgs.git-annex @@ -233,7 +232,6 @@ in pkgs.ouch pkgs.tcpdump pkgs.tokei - pkgs.valgrind pkgs.mtr pkgs.nil pkgs.nixpkgs-fmt @@ -244,6 +242,7 @@ in pkgs.rust-analyzer pkgs.sd pkgs.tig + pkgs.wireshark pkgs.xh pkgs.cargo-play pkgs.cargo-edit @@ -262,6 +261,10 @@ in pkgs.pkg-config (pkgs.python3.withPackages (ps: with ps; [ pynvim ])) pkgs.gopls + ] ++ lib.optionals (pkgs.stdenv.isLinux) [ + pkgs.gdb + pkgs.kicad # Marked as broken on Darwin + pkgs.valgrind # Marked as broken on Darwin ]; }; } diff --git a/home/profiles/fonts/default.nix b/home/profiles/fonts/default.nix index 3f4edab..b886d78 100644 --- a/home/profiles/fonts/default.nix +++ b/home/profiles/fonts/default.nix @@ -10,12 +10,15 @@ in config = lib.mkIf cfg.enable { home.packages = with pkgs; [ dina-font + iosevka sarasa-gothic #siji # TODO: bitmap font conflict jetbrains-mono twemoji-color-font emacs-all-the-icons-fonts - (nerdfonts.override { fonts = [ "Iosevka" "JetBrainsMono" ]; }) + nerd-fonts.iosevka + nerd-fonts.iosevka-term + nerd-fonts.jetbrains-mono ]; fonts.fontconfig.enable = true; diff --git a/home/profiles/gui/config/dunst.nix b/home/profiles/gui/config/dunst.nix deleted file mode 100644 index f6e80b3..0000000 --- a/home/profiles/gui/config/dunst.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config, neotheme }: - -with neotheme.colors; - -let - guiCfg = config.profiles.gui; -in -{ - global = { - padding = 8; - width = "330"; - origin = "top-right"; - offset = "8x25"; - notification_limit = 5; - frame_width = 2; - vertical_alignment = "center"; - horizontal_padding = 8; - icon_position = "left"; - corner_radius = 10; - - markup = "full"; - word_wrap = true; - show_indicators = false; - format = "<b>%s</b>\\n\\n%b"; - font = "${guiCfg.font.name} ${toString guiCfg.font.size}"; - frame_color = "#${color3}"; - separator_color = "auto"; - max_icon_size = 80; - }; - - urgency_low = { - foreground = "#${foreground}"; - background = "#${background}"; - frame_color = "#${color4}"; - timeout = 4; - }; - - urgency_normal = { - foreground = "#${foreground}"; - background = "#${background}"; - frame_color = "#${color3}"; - timeout = 8; - }; - - urgency_critical = { - foreground = "#${foreground}"; - background = "#${background}"; - frame_color = "#${color1}"; - }; -} diff --git a/home/profiles/gui/config/mako.nix b/home/profiles/gui/config/mako.nix new file mode 100644 index 0000000..a471a6a --- /dev/null +++ b/home/profiles/gui/config/mako.nix @@ -0,0 +1,45 @@ +{ config, neotheme }: + +with neotheme.colors; + +let + guiCfg = config.profiles.gui; +in +{ + anchor = "top-right"; + width = 330; + padding = "8"; + margin = "16,8"; + borderRadius = 10; + borderSize = 2; + + borderColor = "#${color3}"; + backgroundColor = "#${background}"; + textColor = "#${foreground}"; + progressColor = "over #${color5}"; + + markup = true; + font = "${guiCfg.font.name} ${toString guiCfg.font.size}"; + + maxVisible = 5; + + extraConfig = '' + [urgency=low] + border-color=#${color4} + default-timeout=4000 + + [urgency=normal] + border-color=#${color3} + default-timeout=8000 + + [urgency=critical] + border-color=#${color1} + default-timeout=0 + + [app-name=yubikey-touch-detector] + anchor=bottom-center + text-alignment=center + padding=32 + + ''; +} diff --git a/home/profiles/gui/config/sway.nix b/home/profiles/gui/config/sway.nix index 36b1b95..162be7d 100644 --- a/home/profiles/gui/config/sway.nix +++ b/home/profiles/gui/config/sway.nix @@ -70,6 +70,11 @@ in # floating bindsym $mod+f floating toggle + bindsym $mod+Shift+f move position center + + # scratchpad + bindsym $mod+grave scratchpad show; focus + bindsym $mod+shift+grave move scratchpad # kill focused bindsym $mod+w kill @@ -84,6 +89,7 @@ in for_window [window_type="dialog"] floating enable for_window [window_type="menu"] floating enable for_window [class="mpv"] floating enable + for_window [app_id="kicad"] floating enable for_window [class=".*"] inhibit_idle fullscreen for_window [app_id=".*"] title_format "" for_window [class=".*"] title_format "" @@ -200,6 +206,8 @@ in default_border pixel 3 hide_edge_borders --i3 smart gaps inner 8 + # TODO: https://github.com/swaywm/sway/issues/8102 + gaps right 2 smart_borders on set $color0 #${color0} @@ -250,9 +258,11 @@ in tap_button_map lmr #1Finger > Left Click , 2Finger > Right Click, 3Fingers > MiddleClick } - input "1149:8264:Primax_Kensington_Eagle_Trackball" { - accel_profile flat - pointer_accel 0 + # Kensington Slimblade Pro + # TODO: directly handle device? + input "4012:6878:keyd_virtual_pointer" { + accel_profile adaptive + pointer_accel -0.7 } input type:keyboard { diff --git a/home/profiles/gui/config/waybar/settings.nix b/home/profiles/gui/config/waybar/settings.nix index 9470824..341a1b3 100644 --- a/home/profiles/gui/config/waybar/settings.nix +++ b/home/profiles/gui/config/waybar/settings.nix @@ -1,4 +1,4 @@ -{ config, lib, neotheme }: +{ config, lib, pkgs, neotheme }: with neotheme.colors; @@ -10,7 +10,7 @@ in position = "top"; height = 22; modules-left = [ "wireplumber" "custom/separator" "cpu" "custom/separator" "memory" "custom/separator" "idle_inhibitor" ]; - modules-center = [ "sway/workspaces" ]; + modules-center = [ "sway/workspaces" "custom/scratchpad-indicator" ]; modules-right = [ "group/tray" "custom/separator" "network" "custom/separator" ] ++ lib.optionals (guiCfg.laptop.enable) [ "battery" "custom/separator" ] ++ [ "clock" ]; @@ -96,6 +96,16 @@ in tooltip = false; }; + "custom/scratchpad-indicator" = { + format = "(+{})"; + interval = 3; + return-type = "json"; + hide-empty-text = true; + exec = "${pkgs.writeShellScript "scratchpad-indicator" (import ../../scripts/scratchpad-indicator.nix)}"; + on-click = "exec swaymsg scratchpad show"; + on-click-right = "exec swaymsg move scratchpad"; + }; + "custom/separator" = { format = "|"; interval = "once"; diff --git a/home/profiles/gui/config/waybar/style.nix b/home/profiles/gui/config/waybar/style.nix index 92eb772..1f5327e 100644 --- a/home/profiles/gui/config/waybar/style.nix +++ b/home/profiles/gui/config/waybar/style.nix @@ -73,6 +73,21 @@ in border-bottom: 1px solid #${bright0}; } + @keyframes blinkBattery { + to { + border-color: #${color3}; + } + } + + #battery.charging { + border-bottom: 1px solid transparent; + animation-name: blinkBattery; + animation-duration: 1s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; + } + #tray { /* TODO: https://github.com/Alexays/Waybar/issues/2906 */ margin: 0; @@ -92,6 +107,10 @@ in padding-right: 0.2rem; } + #custom-scratchpad-indicator { + color: #f0a0c0; + } + #custom-separator { color: #${alt1}; background-color: #${background}; diff --git a/home/profiles/gui/default.nix b/home/profiles/gui/default.nix index 838d2ab..966f2ba 100644 --- a/home/profiles/gui/default.nix +++ b/home/profiles/gui/default.nix @@ -66,8 +66,8 @@ in }; gtk = { - theme.dark = "Orchis-Dark-Compact"; - theme.light = "Orchis-Light-Compact"; + theme.dark = "Adwaita-dark"; + theme.light = "Adwaita"; iconTheme.dark = "Papirus-Dark"; iconTheme.light = "Papirus-Light"; }; @@ -76,7 +76,7 @@ in gtk.enable = true; gtk.iconTheme.package = pkgs.papirus-icon-theme; gtk.iconTheme.name = neotheme.gtk.iconTheme.dark; - gtk.theme.package = (pkgs.orchis-theme.override { tweaks = [ "primary" "compact" ]; }); + gtk.theme.package = pkgs.gnome-themes-extra; gtk.theme.name = neotheme.gtk.theme.dark; gtk.font.name = "${cfg.font.name} ${toString cfg.font.size}"; @@ -84,6 +84,7 @@ in home.packages = [ # Sway + pkgs.alsa-utils pkgs.autotiling pkgs.brightnessctl pkgs.blueberry @@ -105,26 +106,17 @@ in ]; home.sessionVariables = { - # Disabled as Element/Discord currently uses an old version of Electron - # that doesn't support IM. - # NIXOS_OZONE_WL = 1; # NOTE: might cause problems with old electron + NIXOS_OZONE_WL = 1; # NOTE: might cause problems with old electron _JAVA_AWT_WM_NONREPARENTING = 1; # Fix 'grey screen' issue on java apps SDL_VIDEODRIVER = "wayland"; + # TODO: https://github.com/qutebrowser/qutebrowser/discussions/7938 + QT_SCALE_FACTOR_ROUNDING_POLICY = "RoundPreferFloor"; }; wayland.windowManager.sway = { enable = true; - package = - if cfg.laptop.enable then - options.wayland.windowManager.sway.package.default.override - (prev: { - sway-unwrapped = prev.sway-unwrapped.override (s-prev: { - wlroots = s-prev.wlroots.overrideAttrs { - patches = [ ../../../overlays/patches/wlroots-displaylink/DisplayLink_v2.patch ]; - }; - }); - }) else options.wayland.windowManager.sway.package.default; + package = options.wayland.windowManager.sway.package.default; wrapperFeatures = { base = true; @@ -164,16 +156,45 @@ in waybar = { enable = config.wayland.windowManager.sway.enable; - settings = [ (import ./config/waybar/settings.nix { inherit config lib neotheme; }) ]; + settings = [ (import ./config/waybar/settings.nix { inherit config lib pkgs neotheme; }) ]; style = import ./config/waybar/style.nix { inherit config neotheme; }; }; }; services = { - dunst = { + darkman = { enable = true; - settings = import ./config/dunst.nix { inherit config neotheme; }; + settings = { + lat = 36.5; + lng = 127.2; + usegeoclue = true; + }; + + darkModeScripts = { + gtk-theme = '' + ${pkgs.dconf}/bin/dconf write \ + /org/gnome/desktop/interface/color-scheme "'prefer-dark'" + + ${pkgs.dconf}/bin/dconf write \ + /org/gnome/desktop/interface/gtk-theme "'${neotheme.gtk.theme.dark}'" + + ${pkgs.dconf}/bin/dconf write \ + /org/gnome/desktop/interface/icon-theme "'${neotheme.gtk.iconTheme.dark}'" + ''; + }; + lightModeScripts = { + gtk-theme = '' + ${pkgs.dconf}/bin/dconf write \ + /org/gnome/desktop/interface/color-scheme "'prefer-light'" + + ${pkgs.dconf}/bin/dconf write \ + /org/gnome/desktop/interface/gtk-theme "'${neotheme.gtk.theme.light}'" + + ${pkgs.dconf}/bin/dconf write \ + /org/gnome/desktop/interface/icon-theme "'${neotheme.gtk.iconTheme.light}'" + ''; + }; }; kanshi = { @@ -206,6 +227,10 @@ in ]; }; + mako = { + enable = true; + } // import ./config/mako.nix { inherit config neotheme; }; + swayidle = let # TODO: remove when >1.6.11 @@ -247,13 +272,7 @@ in { timeout = 270; command = "${pkgs.libnotify}/bin/notify-send -t 30000 'Locking screen in 30 seconds'"; } # 5m { timeout = 300; command = lockCommand; } - ] ++ lib.optionals (!cfg.laptop.enable) - [{ - # 10m (desktop only) - timeout = 600; - command = "${config.wayland.windowManager.sway.package}/bin/swaymsg 'output * dpms off'"; - resumeCommand = "${config.wayland.windowManager.sway.package}/bin/swaymsg 'output * dpms on'"; - }] ++ [ + ] ++ [ { # 10m on laptops, 15m on desktop timeout = if cfg.laptop.enable then 600 else 900; @@ -267,40 +286,6 @@ in latitude = "36.5"; longitude = "127.2"; }; - - darkman = { - enable = true; - settings = { - lat = 36.5; - lng = 127.2; - usegeoclue = true; - }; - - darkModeScripts = { - gtk-theme = '' - ${pkgs.dconf}/bin/dconf write \ - /org/gnome/desktop/interface/color-scheme "'prefer-dark'" - - ${pkgs.dconf}/bin/dconf write \ - /org/gnome/desktop/interface/gtk-theme "'${neotheme.gtk.theme.dark}'" - - ${pkgs.dconf}/bin/dconf write \ - /org/gnome/desktop/interface/icon-theme "'${neotheme.gtk.iconTheme.dark}'" - ''; - }; - lightModeScripts = { - gtk-theme = '' - ${pkgs.dconf}/bin/dconf write \ - /org/gnome/desktop/interface/color-scheme "'prefer-light'" - - ${pkgs.dconf}/bin/dconf write \ - /org/gnome/desktop/interface/gtk-theme "'${neotheme.gtk.theme.light}'" - - ${pkgs.dconf}/bin/dconf write \ - /org/gnome/desktop/interface/icon-theme "'${neotheme.gtk.iconTheme.light}'" - ''; - }; - }; }; }; } diff --git a/home/profiles/gui/scripts/aeroplane-mode.nix b/home/profiles/gui/scripts/aeroplane-mode.nix index 9f09c05..0b1ecf3 100644 --- a/home/profiles/gui/scripts/aeroplane-mode.nix +++ b/home/profiles/gui/scripts/aeroplane-mode.nix @@ -1,15 +1,13 @@ '' set -euo pipefail -rfkill_soft=$(rfkill -ro soft | tail -n +2 | sort -u) +radio_status=$(nmcli radio | tail -n +2 | awk 'OFS="\n" {print $2,$4}' | sort -u) -rfkill toggle all - -if [[ $rfkill_soft == "unblocked" ]]; then +if [[ $radio_status == "enabled" ]]; then + nmcli radio all off notify-send --urgency=critical "Aeroplane mode ACTIVATED" -elif [[ $rfkill_soft == "blocked" ]]; then - notify-send --urgency=critical "Aeroplane mode DEACTIVATED" else - notify-send --urgency=critical "WARN: RFKill was in inconsistent state. Aeroplane mode ACTIVATED" + nmcli radio all on + notify-send --urgency=low "Aeroplane mode DEACTIVATED" fi '' diff --git a/home/profiles/gui/scripts/scratchpad-indicator.nix b/home/profiles/gui/scripts/scratchpad-indicator.nix new file mode 100644 index 0000000..7ee66c3 --- /dev/null +++ b/home/profiles/gui/scripts/scratchpad-indicator.nix @@ -0,0 +1,18 @@ +'' +output="$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]?)|recurse(.floating_nodes[]?)|select(.name == "__i3_scratch").floating_nodes[]|"`<b>"+.name+"`</b> - "+.app_id+" "+(.id|tostring)')" +number="$(swaymsg -r -t get_tree | jq -r 'recurse(.nodes[]) | first(select(.name=="__i3_scratch")) | .floating_nodes | length')" + +if [ "$number" -gt 0 ]; then + text="$number" +else + text="" +fi + +output="$(echo "$output" | sed -r 's/[&]+/and/g')" # Replace unprintable & character with the word 'and' +tooltip="Scratchpad\n\n" +tooltip+="$(echo "$output" | sed -z 's/\n/\\n/g')" +tooltip=''${tooltip::-2} + +echo "{\"text\":\"$text\", \"tooltip\":\"$tooltip\"}" +exit 0 +'' diff --git a/home/profiles/research/default.nix b/home/profiles/research/default.nix index 2d98905..fd85282 100644 --- a/home/profiles/research/default.nix +++ b/home/profiles/research/default.nix @@ -31,8 +31,8 @@ in index-active-bg = "#dbd3c4"; index-active-fg = "#4f5058"; - highlight-color = "#d4ae80"; - highlight-active-color = "#8197bf"; + highlight-color = "#rgba(212,174,128,0.5)"; + highlight-active-color = "rgba(129,151,191,0.5)"; notification-bg = "#dbd3c4"; notification-fg = "#151515"; @@ -51,16 +51,12 @@ in }; home.packages = [ - pkgs.kicad pkgs.ltex-ls - pkgs.libreoffice pkgs.obsidian pkgs.pandoc - pkgs.tana pkgs.texlive.combined.scheme-small + pkgs.tinymist pkgs.typst - pkgs.typst-lsp - pkgs.typst-preview pkgs.websocat pkgs.nanum @@ -69,6 +65,6 @@ in # Let HM manage installed fonts fonts.fontconfig.enable = true; - nixpkgs.allowedUnfree = [ "obsidian" "tana" ]; + nixpkgs.allowedUnfree = [ "obsidian" ]; }; } diff --git a/home/profiles/security/default.nix b/home/profiles/security/default.nix index b64de22..2201f3e 100644 --- a/home/profiles/security/default.nix +++ b/home/profiles/security/default.nix @@ -12,7 +12,6 @@ in pkgs.yubikey-manager pkgs.age-plugin-yubikey - pkgs.keepassxc pkgs.bitwarden pkgs.bitwarden-cli @@ -20,5 +19,31 @@ in pkgs.protonvpn-gui ]; + + systemd.user = lib.mkIf pkgs.stdenv.isLinux { + sockets.yubikey-touch-detector = { + Unit.Description = "Unix socket activation for YubiKey touch detector service"; + Socket = { + ListenStream = "%t/yubikey-touch-detector.socket"; + RemoveOnStop = true; + }; + Install.WantedBy = [ "sockets.target" ]; + }; + + services.yubikey-touch-detector = { + Unit = { + Description = "Detects when your YubiKey is waiting for a touch"; + Requires = "yubikey-touch-detector.socket"; + }; + Service = { + ExecStart = "${lib.getExe pkgs.yubikey-touch-detector} --libnotify -v"; + EnvironmentFile = "-%E/yubikey-touch-detector/service.conf"; + }; + Install = { + Also = "yubikey-touch-detector.socket"; + WantedBy = [ "default.target" ]; + }; + }; + }; }; } |