diff --git a/README.md b/README.md index f89a4c9..0af1f4b 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,10 @@ Using [colmena](https://github.com/zhaofengli/colmena) ## Hosts -- `bloodletting`: Main server -- `ritual`: NixOS laptop -- `tears`: NixOS desktop +- `Agathas-Mac-mini`: macOS/nix-darwin desktop +- `bloodletting`: Main server / technogothic.net +- `ritual`: macOS/nix-darwin laptop +- `watchtower`: Home server ### Manual setup on blank system/migrations Bloodletting: @@ -16,6 +17,8 @@ Bloodletting: - `bin_rs` - `fail2ban` - `grafana` + - `headscale` + - `hedgedoc` - `mastodon` - dump and import Postgres and Redis DBs - `matterbridge` @@ -27,18 +30,10 @@ Bloodletting: - `prosody` - `/home/ftp` -Ritual/Tears: -- `colmena apply[-local]` - deploy config -- `mkdir -p ~/.gnupg` - create directory for gnupg -- copy `~/.ssh/id_ed25519` -- manual configuration/login: - - Firefox - - Copy extension data - - Element - - Dino - - Telegram Desktop - - Geary - - Obsidian +Agathas-Mac-mini/Ritual: +- `darwin-rebuild switch --flake .` - deploy config + +[Last commit which includes BSPWM configs](https://git.lain.faith/sorceress/nix-infra/commit/e60bbd7f41bdb4456319637f38a25425b6f5fef7) ### Rsyncd Modules Modded minecraft instance rsync modules can be accessed through `mc-[modpack]@bloodletting::mc-[modpack]` with `--rsh=ssh` diff --git a/common/default.nix b/common/default.nix index 9668f0e..97dd41d 100644 --- a/common/default.nix +++ b/common/default.nix @@ -4,7 +4,7 @@ ## Optimizations # Link identical files - nix.settings.auto-optimise-store = true; + nix.optimise.automatic = true; # Garbage collection nix.gc = { @@ -43,8 +43,6 @@ xclip ]; - services.tailscale.enable = true; - # 🥺 # security.please.enable = true; } diff --git a/common/fragments/graphical/audio.nix b/common/fragments/graphical/audio.nix deleted file mode 100644 index 000a163..0000000 --- a/common/fragments/graphical/audio.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ config, pkgs, lib, ... }: { - # Pipewire - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - - programs.noisetorch.enable = true; - - systemd.user.services."noisetorch" = { - description = - "Virtual microphone device with noise supression for PulseAudio"; - - after = [ "graphical-session-pre.target" ]; - partOf = [ "graphical-session.target" "pipewire.service" ]; - wantedBy = [ "graphical-session.target" ]; - - serviceConfig = { - ExecStart = "${pkgs.noisetorch}/bin/noisetorch -i -s ${ - if config.networking.hostName == "tears" then - "US-4x4HR_ch0" - else - "alsa_input.pci-0000_00_1f.3.analog-stereo" - }"; - ExecStop = "${pkgs.noisetorch}/bin/noisetorch -u"; - Restart = "on-failure"; - RestartSec = 5; - RemainAfterExit = true; - }; - }; - - # User packages - users.users.agatha.packages = with pkgs; [ pamixer pavucontrol playerctl ]; - - home-manager.users.agatha = { - services.easyeffects = { - enable = false; - preset = "DT-770-flat-eq"; - }; - - xdg.configFile."easyeffects/output/DT-770-flat-eq.json".text = let - band = num: freq: gain: '' - "band${toString num}": { - "frequency": ${toString freq}, - "gain": ${toString gain}, - "mode": "RLC (BT)", - "mute": false, - "q": 1.41, - "slope": "x1", - "solo": false, - "type": "Bell" - } - ''; - bands = lib.concatStringsSep '' - , - '' [ - (band 0 31.0 5.8) - (band 1 62.0 8.0) - (band 2 125.0 (-8.03)) - (band 3 250.0 (-2.42)) - (band 4 500.0 0.71) - (band 5 1000.0 1.67) - (band 6 2000.0 (-2.42)) - (band 7 4000.0 7.12) - (band 8 8000.0 (-0.61)) - (band 9 16000.0 (-2.58)) - ]; - in '' - { - "output": { - "blocklist": [], - "equalizer": { - "input-gain": 0.0, - "left": { - ${bands} - }, - "mode": "IIR", - "num-bands": 10, - "output-gain": 0.0, - "right": { - ${bands} - }, - "split-channels": false - }, - "plugins_order": [ - "equalizer" - ] - } - } - ''; - }; -} diff --git a/common/fragments/graphical/barebones.nix b/common/fragments/graphical/barebones.nix deleted file mode 100644 index b4b9b10..0000000 --- a/common/fragments/graphical/barebones.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ pkgs, ... }: -{ - # Config for client devices, but not necessarily a full desktop environment. - - imports = [ - ../restic.nix - ../yubikey.nix - ]; - - # User packages - users.users.agatha.packages = with pkgs; [ - android-tools - broot - colmena - exiftool - ffmpeg - flac - hyperfine - just - magic-wormhole - neofetch - nil - pfetch - pridefetch - rink - sshfs - unstable.rustmission - whois - wireguard-tools - yt-dlp - ]; - - home-manager.users.agatha = { - programs.direnv.enable = true; - home.sessionVariables = { - "DIRENV_LOG_FORMAT" = ""; - }; - - programs.ssh.enable = true; - }; -} diff --git a/common/fragments/graphical/bspwm.nix b/common/fragments/graphical/bspwm.nix deleted file mode 100644 index bc2b268..0000000 --- a/common/fragments/graphical/bspwm.nix +++ /dev/null @@ -1,129 +0,0 @@ -{ lib, pkgs, config, ... }: { - home-manager.users.agatha = { - xsession.windowManager.bspwm = { - enable = true; - extraConfigEarly = lib.strings.concatStringsSep "\n" [ - "xsetroot -cursor_name left_ptr" - "xinput set-prop 'SynPS/2 Synaptics TouchPad' 'libinput Scrolling Pixel Distance' 10" - "setxkbmap" - ]; - extraConfig = let - startOnce = - map (v: "! pgrep ${builtins.head (lib.splitString " " v)} && ${v} &"); - startup = startOnce [ - "firefox" - "element-desktop" - "dino" - "telegram-desktop" - "cider" - "geary" - "bspm -d" - ]; - monitors = builtins.genList (_: _) (builtins.length (builtins.attrValues - config.home-manager.users.agatha.xsession.windowManager.bspwm.monitors)); - nitrogen = map (i: - "nitrogen --head=${toString i} --set-zoom-fill ${ - config.environment.graphical.colorschemes."${config.environment.graphical.theme.name}".image - }") monitors; - in lib.strings.concatStringsSep "\n" (nitrogen ++ startup); - settings = let - color = n: - config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString - n}"; - in { - border_width = 3; - window_gap = 15; - top_padding = 45; - split_ratio = 0.5; - borderless_monocle = false; - gapless_monocle = false; - normal_border_color = color 0; - focused_border_color = color 1; - active_border_color = color 2; - urgent_border_color = color 2; - presel_feedback_color = color 2; - }; - rules = { - "Gimp" = { - state = "tiled"; - follow = true; - }; - "Yubico Authenticator".state = "floating"; - }; - }; - - services.sxhkd = { - enable = true; - keybindings = { - # Disable middle click paste - "~button2" = "echo -n | xclip -in"; - # Terminal - "super + Return" = "kitty"; - "Caps_Lock" = "kitty"; - # File explorer - "super + e" = "nautilus"; - # Program launcher - "super + @space" = "rofi -show drun"; - # Clipboard - "super + v" = "clipcat-menu"; - # Calculator - "super + shift + c" = '' - ROFI_PLUGIN_PATH=${pkgs.rofi-calc}/lib/rofi rofi -show calc -modi calc -calc-command '${pkgs.xdotool}/bin/xdotool type --clearmodifiers "\{result\}' - ''; - "super + shift + e" = '' - rofimoji --action clipboard - ''; - # Media keys - "XF86Audio{Raise,Lower}Volume" = "pamixer {-i,-d} 5"; - "XF86AudioMute" = "pamixer -t"; - "XF86Audio{Prev,Next}" = "playerctl {previous,next}"; - "XF86AudioPlay" = "playerctl play-pause"; - "XF86MonBrightness{Up,Down}" = '' - brightnessctl set 10%{+,-} && dunstify -r 98114 -h int:value:$(( $(brightnessctl get) * 100 / $(brightnessctl max) )) "Brightness set to:" - ''; - # Switch outputs - "super + o" = '' - dunstify -r 112119 "Sound output switched to $(${pkgs.pads}/bin/pads next && ${pkgs.pads}/bin/pads list | rg '^\*' | choose 1:)"''; - # Screenshot - "Print" = "flameshot gui && bspc desktop --focus focused"; - "shift + Print" = - "flameshot gui -d 3000 && bspc desktop --focus focused"; - # Pause notifications - "super + n" = "dunstctl set-paused toggle"; - # Reload WM - "super + shift + {q,r}" = '' - pkill -USR1 -x sxhkd \ - ; for p in picom polybar dunst; killall $p; end \ - ; bspc {quit,wm -r} - ''; - # Close/kill window - "super + {_,shift + }w" = "bspc node -{c,k}"; - # Monocle layout - "super + m" = "bspm monocle --toggle"; - "super + shift + m" = "bspm monocle --next"; - # Toggle hide all windows - "super + d" = - "bspc query -N -n .window | xargs -I node_id bspc node node_id -g hidden"; - # Change window state - "super + {t,shift + t,s,f}" = - "bspc node -t {tiled,pseudo_tiled,floating,fullscreen}"; - # Focus/move window - "super + {_,shift + }{j,k,i,l}" = - "bspc node -{f,s} {west,south,north,east}"; - # Focus the next window in the current desktop - "super + c" = "bspc node -f next.local.!hidden.window"; - # Focus previous/next desktop on current monitor - "super + bracket{left,right}" = "bspc desktop -f {prev,next}.local"; - # Switch desktops / Move window to desktop - "super + {_,shift + }{1-9,0}" = "bspc {desktop -f,node -d} '^{1-9,10}'"; - # Window switcher - "alt + Tab" = "rofi -show window"; - # Move floating window - "super + {Left,Down,Up,Right}" = "bspc node -v {-20 0,0 20,0 -20,20 0}"; - # Lock screen - "super + x" = '' - betterlockscreen --lock dimblur --time-format "%H:%M"; systemctl --user restart gpg-agent''; - }; - }; - }; -} diff --git a/common/fragments/graphical/clipboard.nix b/common/fragments/graphical/clipboard.nix deleted file mode 100644 index 084251a..0000000 --- a/common/fragments/graphical/clipboard.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - # Persistent clipboard - services.clipcat.enable = true; - - home-manager.users.agatha = { - xdg.configFile."clipcat/clipcatd.toml".text = '' - daemonize = true - pid_file = "/run/user/1000/clipcatd.pid" - max_history = 50 - history_file_path = "/home/agatha/.cache/clipcat/clipcatd-history" - snippets = [] - - [log] - emit_journald = true - emit_stdout = false - emit_stderr = false - level = "INFO" - - [watcher] - load_current = true - enable_clipboard = true - enable_primary = false - sensitive_x11_atoms = [] - filter_text_min_length = 1 - denied_text_regex_patterns = [] - capture_image = true - - [grpc] - enable_http = false - enable_local_socket = true - local_socket = "/run/user/1000/clipcat/grpc.sock" - - [desktop_notification] - enable = true - icon = "accessories-clipboard" - timeout_ms = 2000 - long_plaintext_length = 2000 - ''; - - xdg.configFile."clipcat/clipcatctl.toml".text = '' - server_endpoint = "/run/user/1000/clipcat/grpc.sock" - - [log] - emit_journald = true - emit_stdout = false - emit_stderr = false - level = "INFO" - ''; - - xdg.configFile."clipcat/clipcat-menu.toml".text = '' - server_endpoint = "/run/user/1000/clipcat/grpc.sock" - finder = "rofi" - - [rofi] - line_length = 35 - menu_length = 15 - menu_prompt = "Clipboard" - extra_arguments = [] - - [log] - emit_journald = true - emit_stdout = false - emit_stderr = false - level = "INFO" - ''; - }; -} diff --git a/common/fragments/graphical/darwin.nix b/common/fragments/graphical/darwin.nix new file mode 100644 index 0000000..d2bc4c7 --- /dev/null +++ b/common/fragments/graphical/darwin.nix @@ -0,0 +1,45 @@ +{ pkgs, lib, ... }: +{ + imports = [ + ./default.nix + ./iosevka.nix + ../../home_manager/common.nix + ../../remote-builds.nix + ]; + + services.nix-daemon.enable = true; + nix.settings = { + extra-nix-path = "nixpkgs=flake:nixpkgs"; + substituters = [ + "https://cache.nixos.org" + "https://cache.lix.systems" + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" + ]; + trusted-users = [ "@admin" ]; + }; + + # Needed for the nix-darwin environment even if zsh is not used. + programs.zsh.enable = true; + + users.users.agatha = { + name = "agatha"; + home = lib.mkForce "/Users/agatha"; + }; + + fonts.packages = with pkgs; [ + (nerdfonts.override { + fonts = [ + "DaddyTimeMono" + "NerdFontsSymbolsOnly" + ]; + }) + fira-code + fira-code-symbols + font-awesome_5 + iosevka + siji + ]; +} diff --git a/common/fragments/graphical/default.nix b/common/fragments/graphical/default.nix index f2bfa50..8f3afc7 100644 --- a/common/fragments/graphical/default.nix +++ b/common/fragments/graphical/default.nix @@ -1,215 +1,35 @@ +{ pkgs, ... }: { - pkgs, - config, - lib, - ... -}: -{ - imports = [ - ./barebones.nix - ./audio.nix - ./bspwm.nix - ./clipboard.nix - ./dunst.nix - ./element.nix - ./iosevka.nix - ./kitty.nix - ./lockscreen.nix - ./mail.nix - ./picom.nix - ./polybar.nix - ./rofi.nix - ./syncthing.nix - ./theme.nix - ./url-eater.nix - ]; - - nixpkgs.overlays = [ - (final: prev: { - pads = final.callPackage ../../../common/pkgs/pads.nix { }; - bspm = final.callPackage ../../../common/pkgs/bspm.nix { }; - polybar-scripts = final.callPackage ../../../common/pkgs/polybar-scripts.nix { }; - }) - ]; + # Config for client devices, but not necessarily a full desktop environment. # User packages users.users.agatha.packages = with pkgs; [ - blueberry - brightnessctl - bspm - cider - darktable - dino - element-desktop - flameshot - gimp - glib - gnome.eog - gnome.file-roller - gnome.gnome-calendar - gnome.gnome-control-center - gnome.gnome-disk-utility - gnome.gnome-font-viewer - gnome.nautilus - mpv - mumble - nitrogen - obs-studio - obsidian - polybar-scripts - prismlauncher - rofi-calc - rofimoji - speechd - tdesktop - xdg-utils - xdotool - yubioath-flutter + android-tools + broot + colmena + exiftool + ffmpeg + flac + hyperfine + just + magic-wormhole + neofetch + nil + pfetch + pridefetch + rink + sshfs + unstable.rustmission + whois + wireguard-tools + yt-dlp ]; - # blame Obsidian - nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ]; - - # Brightness/volume keys - users.users.agatha.extraGroups = [ "video" ]; - - location = { - latitude = 49.0; - longitude = 8.4; - }; - services.redshift = { - enable = true; - brightness.night = "0.8"; - }; - - services.xserver = { - enable = true; - displayManager = { - gdm.enable = true; - - sessionPackages = [ pkgs.sway ]; - session = [ - { - manage = "window"; - name = "bspwm"; - start = - let - cfg = config.home-manager.users.agatha; - in - '' - ${cfg.services.sxhkd.package}/bin/sxhkd ${toString cfg.services.sxhkd.extraOptions} & - ${cfg.xsession.windowManager.bspwm.package}/bin/bspwm -c ${cfg.xdg.configHome}/bspwm/bspwmrc - ''; - } - ]; - }; - # Layout overrides - layout = lib.mkForce "eu,de(qwerty),ua,ru"; - xkbOptions = "ctrl:nocaps,compose:rctrl"; - - autoRepeatDelay = 200; - autoRepeatInterval = 50; - - libinput.enable = true; - }; - home-manager.users.agatha = { - # Compose key sequences - home.file.".XCompose".text = '' - include "%L" - - : "( ͡° ͜ʖ ͡°)" - : "¯\\_(ツ)_/¯" - : "༼ つ ◕_◕ ༽つ" - : "🅱️" - : "•" - : "◆" - : "✔" - : "✓" - : "​" - <0> : "§" - : "█" - : "☭" - : "√" - : "⚧️ trans rights uwu" - : "òwó" - : "ÒwÓ" -

: "👉👈" -

: "🥺" - : "/html " - ''; - }; - - services.gvfs.enable = true; - security.polkit.enable = true; - programs.dconf.enable = true; - - programs.geary.enable = true; - programs.steam.enable = true; - - programs.firefox = { - enable = true; - autoConfig = '' - pref("privacy.webrtc.legacyGlobalIndicator", false); - pref("privacy.webrtc.hideGlobalIndicator", true); - ''; - }; - - # Screenshare on wlroots - xdg = { - portal = { - enable = true; - config.common.default = "*"; - wlr.enable = true; + programs.direnv.enable = true; + home.sessionVariables = { + "DIRENV_LOG_FORMAT" = ""; }; + }; - - fonts.fontconfig.enable = true; - fonts.fontDir.enable = true; - fonts.packages = with pkgs; [ - (nerdfonts.override { - fonts = [ - "DaddyTimeMono" - "NerdFontsSymbolsOnly" - ]; - }) - cantarell-fonts - cm_unicode - corefonts - crimson - crimson-pro - dejavu_fonts - fira-code - fira-code-symbols - font-awesome_5 - helvetica-neue-lt-std - iosevka - noto-fonts-cjk - siji - twitter-color-emoji - ]; - - services.printing = { - enable = true; - drivers = [ pkgs.hplip ]; - }; - - services.avahi = { - enable = true; - nssmdns = true; - openFirewall = true; - }; - - hardware.bluetooth = { - enable = true; - settings = { - General = { - Disable = "Headset"; - }; - }; - }; - - # Virtual Camera config - boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; - boot.kernelModules = [ "v4l2loopback" ]; } diff --git a/common/fragments/graphical/dunst.nix b/common/fragments/graphical/dunst.nix deleted file mode 100644 index e84ab93..0000000 --- a/common/fragments/graphical/dunst.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ pkgs, config, ... }: -let - color = n: - config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString - n}"; -in { - home-manager.users.agatha = { - services.dunst = { - enable = true; - settings = { - global = { - # Display - monitor = 1; - - follow = "none"; - fullscreen = "pushback"; - - # Geometry - width = 300; - height = 300; - - origin = "top-right"; - offset = "15x63"; - - notification_limit = 5; - - # Progress bar - progress_bar = true; - progress_bar_height = 3; - progress_bar_frame_width = 0; - progress_bar_min_width = 150; - progress_bar_max_width = 300; - - indicate_hidden = true; - separator_height = 0; - padding = 8; - horizontal_padding = 8; - text_icon_padding = 0; - frame_width = 3; - - frame_color = color 1; - highlight = color 3; - - separator_color = "auto"; - sort = true; - - # Text - font = "Siji, DaddyTimeMono Nerd Font 10"; - line_height = 0; - - markup = "full"; - format = '' - %s - %b %p''; - alignment = "left"; - vertical_alignment = "center"; - - show_age_threshold = 60; - ellipsize = "middle"; - ignore_newline = false; - hide_duplicate_coutn = false; - show_indicators = false; - - # Icons - icon_position = "left"; - min_icon_size = 0; - max_icon_size = 32; - - # History - sticky_history = true; - history_length = 20; - - # Misc - browser = "${pkgs.xdg-utils}/bin/xdg-open"; - always_run_script = true; - - title = "Dunst"; - class = "Dunst"; - - mouse_left_click = "do_action, close_curent"; - mouse_right_click = "close_all"; - }; - urgency_low = { - background = color 0; - foreground = color 15; - timeout = 10; - }; - urgency_normal = { - background = color 0; - foreground = color 15; - timeout = 10; - }; - urgency_critical = { - background = color 0; - foreground = color 15; - frame_color = color 3; - - fullscreen = "show"; - timeout = 0; - }; - # Horrible hack to fix alphabetical sorting overriding this - x-calendar = { - summary = " Calendar"; - alignment = "center"; - }; - }; - }; - }; -} diff --git a/common/fragments/graphical/element.nix b/common/fragments/graphical/element.nix deleted file mode 100644 index 91dd25d..0000000 --- a/common/fragments/graphical/element.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ - home-manager.users.agatha = { - xdg.configFile."Element/config.json".text = '' - { - "setting_defaults": { - "custom_themes": [ - { - "name": "Sapphic Lavender", - "is_dark": true, - "fonts": { - "general": "Allust, Twemoji, Twitter Color Emoji, sans", - "monospace": "'Iosevka Medium Extended', 'Fira Code'" - }, - "colors": { - "accent": "#D2ADC6", - "accent-color": "#D2ADC6", - "primary-color": "#D2ADC6", - "warning-color": "#BF80A6", - "alert": "#BF80A6", - "sidebar-color": "#231724", - "primary-content": "#180F19", - "secondary-content": "#E5D9E6", - "tertiary-content": "#D2ADC6", - "quaternary-content": "#E5D9E6", - "quinary-content": "#251926", - "system": "#180F19", - "background": "#00f", - "roomlist-background-color": "#231724", - "roomlist-text-color": "#E5D9E6", - "roomlist-text-secondary-color": "#ffd1dc", - "roomlist-highlights-color": "#180F19", - "roomlist-separator-color": "#180F19", - "timeline-background-color": "#180F19", - "timeline-text-color": "#E5D9E6", - "timeline-text-secondary-color": "#D2ADC6", - "timeline-highlights-color": "#231724", - "eventbubble-self-bg": "#231724", - "eventbubble-others-bg": "#231724", - "eventbubble-bg-hover": "#231724", - "eventbubble-reply-color": "#231724", - "username-colors": [ - "#D8BFD8", - "#ffd1dc", - "#DDA0DD", - "#DA70D6", - "#BA55D3", - "#9932CC", - "#800060", - "#8B008B" - ], - "avatar-background-colors": ["#896bad", "#b09cc8", "#bdacd1"], - "reaction-row-button-selected-bg-color": "#bd93f9" - } - }, - { - "name": "Transgender Vampirism", - "is_dark": true, - "fonts": { - "general": "Crimson, Noto Color Emoji, Twemoji, Twitter Color Emoji, sans", - "monospace": "'Iosevka Gothic', 'Fira Code'" - }, - "colors": { - "accent": "#747E9D", - "accent-color": "#747E9D", - "primary-color": "#747E9D", - "warning-color": "#110E18", - "sidebar-color": "#16121F", - "primary-content": "#110E18", - "secondary-content": "#D5D6E8", - "tertiary-content": "#747E9D", - "quaternary-content": "#D5D6E8", - "quinary-content": "#16121F", - "system": "#16121F", - "background": "#00f", - "roomlist-background-color": "#16121F", - "roomlist-text-color": "#D5D6E8", - "roomlist-text-secondary-color": "#747E9D", - "roomlist-highlights-color": "#110E18", - "roomlist-separator-color": "#110E18", - "timeline-background-color": "#110E18", - "timeline-text-color": "#D5D6E8", - "timeline-text-secondary-color": "#747E9D", - "timeline-highlights-color": "#16121F", - "eventbubble-self-bg": "#16121F", - "eventbubble-others-bg": "#16121F", - "eventbubble-bg-hover": "#16121F", - "eventbubble-reply-color": "#16121F", - "username-colors": [ - "#D8BFD8", - "#AA9AB6", - "#DDA0DD", - "#DA70D6", - "#7A5286", - "#9932CC", - "#800060", - "#8B008B" - ], - "avatar-background-colors": ["#896bad", "#b09cc8", "#bdacd1"], - "reaction-row-button-selected-bg-color": "#bd93f9" - } - } - ] - }, - "show_labs_settings": true, - "features": ["feature_latex_maths"] - } - ''; - }; -} diff --git a/common/fragments/graphical/kitty.nix b/common/fragments/graphical/kitty.nix deleted file mode 100644 index b60c0e3..0000000 --- a/common/fragments/graphical/kitty.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ pkgs, config, ... }: -let - color = n: - config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString - n}"; -in { - home-manager.users.agatha = { - home.sessionVariables.TERMINAL = "kitty"; - - programs.kitty = { - enable = true; - font = { - package = pkgs.iosevka; - name = "Iosevka Gothic"; - size = 11.5; - }; - - keybindings = { "f5" = "load_config_file"; }; - - settings = { - disable_ligatures = "never"; - - draw_minimal_borders = false; - active_tab_font_style = "italic"; - inactive_tab_font_style = "normal"; - - scrollback_lines = -10000; - url_style = "single"; - - strip_trailing_spaces = "smart"; - enable_audio_bell = false; - - window_margin_width = 10; - window_padding_width = 10; - inactive_text_alpha = "0.8"; - enabled_layouts = "vertical, grid, stack"; - - tab_bar_edge = "top"; - tab_bar_style = "fade"; - tab_bar_margin_width = 5; - tab_separator = "•"; - tab_title_template = "☾ {index}"; - - foreground = color 15; - background = color 0; - cursor = color 15; - - color0 = color 0; - color8 = color 8; - color1 = color 1; - color9 = color 9; - color2 = color 2; - color10 = color 10; - color3 = color 3; - color11 = color 11; - color4 = color 4; - color12 = color 12; - color5 = color 5; - color13 = color 13; - color6 = color 6; - color14 = color 14; - color7 = color 7; - color15 = color 15; - - selection_foreground = color 1; - selection_background = color 15; - - url_color = color 1; - - active_border_color = color 1; - inactive_border_color = color 2; - bell_border_color = color 6; - - active_tab_foreground = color 15; - active_tab_background = color 1; - inactive_tab_foreground = color 8; - inactive_tab_background = color 2; - }; - }; - }; -} diff --git a/common/fragments/graphical/lockscreen.nix b/common/fragments/graphical/lockscreen.nix deleted file mode 100644 index b98e020..0000000 --- a/common/fragments/graphical/lockscreen.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, pkgs, ... }: { - home-manager.users.agatha = { - # Lockscreen - services.betterlockscreen = { - enable = true; - arguments = [ "dimblur" ]; - }; - - # Update lockscreen wallpaper after locking - home.file.".config/betterlockscreen/custom-post.sh".text = - "betterlockscreen -u ${ - config.environment.graphical.colorschemes."${config.environment.graphical.theme.name}".image - }"; - - home.file.".config/betterlockscreen/custom-post.sh".executable = true; - - # Send a notification 10 seconds before locking - services.screen-locker.xautolock.extraOptions = [ - "-notify 10" - "-notifier '${pkgs.dunst}/bin/dunstify -t 10000 -u 2 \"Screen will lock in 10 seconds\"'" - ]; - }; -} diff --git a/common/fragments/graphical/mail.nix b/common/fragments/graphical/mail.nix deleted file mode 100644 index 6e8d4a8..0000000 --- a/common/fragments/graphical/mail.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: { - systemd.user.services.protonmail-bridge = { - description = "Protonmail Bridge"; - enable = true; - script = - "${pkgs.protonmail-bridge}/bin/protonmail-bridge --noninteractive --log-level info"; - - path = [ pkgs.gnome3.gnome-keyring ]; - wantedBy = [ "graphical-session.target" ]; - partOf = [ "graphical-session.target" ]; - }; - users.users.agatha.packages = [ pkgs.protonmail-bridge-gui ]; -} diff --git a/common/fragments/graphical/picom.nix b/common/fragments/graphical/picom.nix deleted file mode 100644 index cd62346..0000000 --- a/common/fragments/graphical/picom.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ pkgs, ... }: { - home-manager.users.agatha = { - services.picom = { - enable = true; - package = pkgs.picom-next; - - # General - backend = "glx"; - vSync = true; - settings = { - mark-wmwin-focused = true; - detect = { - rounded-corners = true; - client-opacity = true; - transient = true; - client-leader = true; - }; - use-damage = true; - - wintypes = { - tooltip = { - fade = true; - shadow = true; - opacity = 0.75; - focus = true; - full-shadow = false; - }; - dock = { shadow = false; }; - dnd = { shadow = false; }; - popup_menu = { opacity = 0.8; }; - dropdown_menu = { opacity = 0.8; }; - }; - }; - - # Shadows - shadow = true; - shadowOpacity = 1.0; - shadowOffsets = [ (-7) (-7) ]; - shadowExclude = [ - "name = 'Notification'" - "class_g ?= 'Notify-osd'" - "class_g = 'Cairo-clock'" - "class_g = 'firefox-nightly' && argb" - "class_g = 'firefox' && argb" - "_GTK_FRAME_EXTENTS@:c" - "_NET_FRAME_EXTENTS@:c && WM_WINDOW_ROLE@:s = 'Popup'" - "override_redirect = true" - ]; - - # Fade - fade = true; - fadeSteps = [ 5.0e-2 5.0e-2 ]; - - # Opacity - settings.frame-opacity = 0.7; - settings.inactive-opacity-override = false; - settings.inactive-dim = 0.2; - settings.focus-exclude = [ - "class_g = 'firefox-nightly'" - "class_g = 'firefox'" - "class_g = 'Dunst'" - ]; - opacityRules = [ - "100:_NET_WM_STATE@[0]:32a = '_NET_WM_STATE_FULLSCREEN'" - "100:_NET_WM_STATE@[1]:32a = '_NET_WM_STATE_FULLSCREEN'" - "100:_NET_WM_STATE@[2]:32a = '_NET_WM_STATE_FULLSCREEN'" - "100:_NET_WM_STATE@[3]:32a = '_NET_WM_STATE_FULLSCREEN'" - "100:_NET_WM_STATE@[4]:32a = '_NET_WM_STATE_FULLSCREEN'" - "0:_COMPTON_MONOCLE@:32c = 0" - "70:class_g = 'kitty'" - "80:class_g = 'Dunst'" - "20:class_g = 'Bspwm' && class_i = 'presel_feedback'" - ]; - - # Blur - settings.blur = { - method = "dual_kawase"; - strength = 3; - background = true; - kern = "3x3box"; - background-exclude = [ - "window_type = 'dock'" - "window_type = 'desktop'" - "window_type = 'dropdown_menu'" - "window_type = 'popup_menu'" - "window_type = 'tooltip'" - "_GTK_FRAME_EXTENTS@:c" - "_NET_FRAME_EXTENTS@:c && WM_WINDOW_ROLE@:s = 'Popup'" - "class_g = 'firefox-nightly' && argb" - "class_g = 'firefox' && argb" - "override_redirect = true" - ]; - }; - }; - }; -} diff --git a/common/fragments/graphical/polybar.nix b/common/fragments/graphical/polybar.nix deleted file mode 100644 index e29015f..0000000 --- a/common/fragments/graphical/polybar.nix +++ /dev/null @@ -1,340 +0,0 @@ -{ lib, pkgs, config, ... }: { - home-manager.users.agatha = { - - systemd.user.services.polybar = { - Service = { - Environment = lib.mkForce (lib.concatStringsSep ":" [ - "PATH=${config.home-manager.users.agatha.services.polybar.package}/bin" - "/run/wrappers/bin" - "${pkgs.dbus}/bin" - "${pkgs.dunst}/bin" - "${pkgs.systemd}/bin" - "${pkgs.util-linux}/bin" - "${pkgs.gnused}/bin" - "${pkgs.kitty}/bin" - ]); - }; - Install = { WantedBy = [ "graphical-session.target" ]; }; - }; - - xdg.configFile."polybar/config.ini".onChange = - "${pkgs.systemd}/bin/systemctl --user restart polybar.service"; - - services.polybar = { - enable = true; - package = pkgs.polybarFull; - - settings = let - color = n: - config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString - n}"; - in { - "colors" = { - background = color 0; - foreground = color 7; - foreground-alt = color 7; - primary = color 1; - secondary = color 2; - alert = color 3; - red = color 4; - }; - - "bar/left" = { - width = "100%:-30"; - height = 30; - offset-x = 15; - offset-y = 12; - radius = 0; - fixed-center = true; - - background = "\${colors.background}"; - foreground = "\${colors.foreground}"; - - line = { - size = 0; - color = color 3; - }; - border = { - size = 3; - color = color 1; - }; - padding = { - left = 2; - right = 2; - }; - module.margin = { - left = 1; - right = 1; - }; - - font = { - "0" = "Iosevka Gothic:pixelsize=10;3"; - "1" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;2"; - "2" = "Siji:pixelsize=11;2"; - "3" = "Symbols Nerd Font:pixelsize=10;2"; - "4" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;1"; - }; - - modules = { - left = "bspwm"; - center = "date"; - right = "mpris wireguard notification-status"; - }; - - wm-restack = "bspwm"; - cursor-click = "pointer"; - locale = "de_DE.UTF-8"; - }; - - "bar/right" = { - width = "100%:-30"; - height = 30; - offset-x = 15; - offset-y = 12; - radius = 0; - fixed-center = true; - - background = "\${colors.background}"; - foreground = "\${colors.foreground}"; - - line = { - size = 0; - color = color 3; - }; - border = { - size = 3; - color = color 1; - }; - padding = { - left = 2; - right = 2; - }; - module.margin = { - left = 1; - right = 1; - }; - - font = { - "0" = "Iosevka Gothic:pixelsize=10;3"; - "1" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;2"; - "2" = "Siji:pixelsize=11;2"; - "3" = "Symbols Nerd Font:pixelsize=10;2"; - "4" = "DejaVuSans:fontformat=truetype:size=8:antialias=false;1"; - }; - - modules = { - left = "bspwm"; - center = "date"; - right = lib.mkDefault - "filesystem battery pulseaudio xkeyboard memory cpu notification-status powermenu"; - }; - - wm-restack = "bspwm"; - cursor-click = "pointer"; - locale = "de_DE.UTF-8"; - }; - - "module/xkeyboard" = { - type = "internal/xkeyboard"; - blacklist-0 = "num lock"; - - format-prefix = " "; - format-prefix-foreground = "\${colors.foreground-alt}"; - - label = { - layout = "%layout%"; - - indicator = { - padding = 2; - margin = 1; - background = "\${colors.secondary}"; - underline = "\${colors.secondary}"; - }; - }; - }; - - "module/bspwm" = { - type = "internal/bspwm"; - - label = { - focused = "%name%"; - focused-foreground = "\${colors.primary}"; - focused-padding = 1; - - occupied = "%name%"; - occupied-padding = 1; - - urgent = "%name%!"; - urgent-background = "\${xrdb:color1:#222}"; - urgent-padding = 1; - - empty = "%name%"; - empty-foreground = "\${colors.foreground-alt}"; - empty-padding = 1; - }; - }; - - "module/date" = { - type = "internal/date"; - interval = 5; - - date = ""; - date-alt = " %a, %d %b %Y"; - - time = "%H:%M"; - time-alt = "%H:%M:%S"; - - format-prefix = ""; - format-prefix-foreground = "\${colors.foreground-alt}"; - - label = '' - %{A3:${pkgs.dunst}/bin/dunstify ' Calendar' "$(${pkgs.util-linux}/bin/cal --color=always | ${pkgs.sd}/bin/sd '\\x1b\[7m' '' | ${pkgs.sd}/bin/sd '\\x1b\[0m' '')":}%date%%{A} %time% - ''; - }; - - "module/filesystem" = { - type = "internal/fs"; - interval = 25; - - mount-0 = "/"; - - label-mounted = "%mountpoint%: %percentage_used%%"; - label-unmounted = "%mountpoint% not mounted"; - label-unmounted-foreground = "\${colors.foreground-alt}"; - }; - - "module/cpu" = { - type = "internal/cpu"; - interval = 2; - format-prefix = " "; - format-prefix-foreground = "\${colors.foreground-alt}"; - label = "%{A1:kitty btop:}%percentage:2%%%{A}"; - }; - - "module/memory" = { - type = "internal/memory"; - interval = 2; - format-prefix = " "; - format-prefix-foreground = "\${colors.foreground-alt}"; - label = "%{A1:kitty btop:}%percentage_used%%%{A}"; - }; - - "module/pulseaudio" = { - type = "internal/pulseaudio"; - - format-volume = "%{A3:pavucontrol:} %{A}"; - label-volume = " %percentage%%"; - label-volume-foreground = "\${root.foreground}"; - - label-muted = " muted"; - label-muted-foreground = "\${colors.primary}"; - - bar.volume = { - width = 14; - foreground-0 = "\${colors.secondary}"; - foreground-1 = "\${colors.secondary}"; - foreground-2 = "\${colors.primary}"; - foreground-3 = "\${colors.primary}"; - foreground-4 = "\${colors.primary}"; - foreground-5 = "\${colors.alert}"; - foreground-6 = "\${colors.red}"; - gradient = false; - indicator = "|"; - indicator-font = 5; - fill = "─"; - fill-font = 2; - empty = "─"; - empty-font = 2; - empty-foreground = "\${colors.foreground-alt}"; - }; - }; - - "module/powermenu" = { - type = "custom/menu"; - - expand-right = true; - format-spacing = 1; - - label = { - open = ""; - open-foreground = "\${colors.secondary}"; - close = " cancel"; - close-foreground = "\${colors.secondary}"; - separator = "|"; - separator-foreground = "\${colors.foreground-alt}"; - }; - - menu = { - "0-0" = "reboot"; - "0-0-exec" = "${pkgs.systemd}/bin/reboot"; - "0-1" = "power off"; - "0-1-exec" = "${pkgs.systemd}/bin/shutdown now"; - }; - }; - - "module/battery" = { - type = "internal/battery"; - full-at = 99; - low-at = 10; - battery = "BAT0"; - adapter = "AC"; - poll-interval = 3; - - content-font = 3; - - format-charging = " "; - format-discharging = " "; - label = { - charging = "%percentage_raw%%"; - discharging = "%percentage_raw%%"; - full = ""; - }; - - ramp = { - capacity-0 = ""; - capacity-1 = ""; - capacity-2 = ""; - capacity-3 = ""; - capacity-4 = ""; - }; - - animation = { - charging-0 = ""; - charging-1 = ""; - charging-2 = ""; - charging-3 = ""; - charging-4 = ""; - - charging-framerate = 750; - }; - }; - - "module/notification-status" = { - type = "custom/script"; - exec = '' - if $(dunstctl is-paused); then echo "Notifications paused"; else echo ""; fi''; - interval = 2; - format-prefix = " "; - }; - - "module/wireguard" = { - type = "custom/script"; - exec = '' - ${pkgs.networkmanager}/bin/nmcli conn show --active | ${pkgs.ripgrep}/bin/rg -q wireguard && echo "VPN Connected" || echo ""''; - click-left = "kitty nmtui"; - interval = 5; - format-prefix = " "; - }; - - "module/mpris" = { - type = "custom/script"; - tail = true; - exec = - "${pkgs.polybar-scripts}/bin/player-mpris-tail/player-mpris-tail.py -f ' {artist}: {:t64:{title}:}' -w mpv -w cider"; - click-left = - "${pkgs.playerctl}/bin/playerctl --player=cider play-pause"; - }; - }; - }; - }; -} diff --git a/common/fragments/graphical/rofi.nix b/common/fragments/graphical/rofi.nix deleted file mode 100644 index a9ecced..0000000 --- a/common/fragments/graphical/rofi.nix +++ /dev/null @@ -1,186 +0,0 @@ -{ lib, pkgs, config, ... }: -let - color = n: - config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString - n}"; -in { - home-manager.users.agatha = { - programs.rofi = { - enable = true; - font = "DaddyTimeMono Nerd Font 10"; - terminal = "${pkgs.kitty}/bin/kitty"; - - theme = let - inherit (config.home-manager.users.agatha.lib.formats.rasi) mkLiteral; - in { - "*" = { - background = mkLiteral (color 0); - foreground = mkLiteral (color 15); - - active-background = mkLiteral (color 2); - active-foreground = mkLiteral "@foreground"; - alternate-active-background = mkLiteral "@background"; - alternate-active-foreground = mkLiteral "@foreground"; - alternate-normal-background = mkLiteral "@background"; - alternate-normal-foreground = mkLiteral "@foreground"; - alternate-urgent-background = mkLiteral "@background"; - alternate-urgent-foreground = mkLiteral "@foreground"; - background-color = mkLiteral "@background"; - border-color = mkLiteral "@background"; - border-radius = mkLiteral "0px"; - lightfg = mkLiteral "#333b5c"; - normal-background = mkLiteral "@background"; - normal-foreground = mkLiteral "@foreground"; - selected-active-background = mkLiteral (color 1); - selected-active-foreground = mkLiteral "@foreground"; - selected-normal-background = mkLiteral (color 2); - selected-normal-foreground = mkLiteral "@foreground"; - selected-urgent-background = mkLiteral (color 3); - selected-urgent-foreground = mkLiteral "@foreground"; - separatorcolor = mkLiteral "@foreground"; - urgent-background = mkLiteral (color 1); - urgent-foreground = mkLiteral "@foreground"; - - spacing = 4; - }; - - "#window" = { - background-color = mkLiteral "var(background)"; - border-color = mkLiteral "var(urgent-background)"; - - width = mkLiteral "30em"; - padding = 5; - border = 3; - }; - - "#message" = { - border-color = mkLiteral "@border-color"; - padding = mkLiteral "1px"; - }; - - "#textbox" = { text-color = mkLiteral "@foreground"; }; - - "#textbox-prompt-colon" = { - text-color = mkLiteral "@normal-foreground"; - }; - - "#listview" = { - border-color = mkLiteral "@border-color"; - padding = mkLiteral "2px 0px 0px"; - scrollbar = true; - spacing = mkLiteral "2px"; - fixed-height = 0; - lines = 10; - }; - - "element" = { - padding = mkLiteral "5px"; - cursor = mkLiteral "pointer"; - }; - - "#element-text, element-icon" = { - background-color = mkLiteral "transparent"; - text-color = mkLiteral "inherit"; - }; - - "#element.normal.normal" = { - background-color = mkLiteral "@normal-background"; - text-color = mkLiteral "@normal-foreground"; - }; - - "#element.normal.urgent" = { - background-color = mkLiteral "@urgent-background"; - text-color = mkLiteral "@urgent-foreground"; - }; - - "#element.normal.active" = { - background-color = mkLiteral "@active-background"; - text-color = mkLiteral "@active-foreground"; - }; - - "#element.selected.normal" = { - background-color = mkLiteral "@selected-normal-background"; - text-color = mkLiteral "@selected-normal-foreground"; - }; - - "#element.selected.urgent" = { - background-color = mkLiteral "@selected-urgent-background"; - text-color = mkLiteral "@selected-urgent-foreground"; - }; - - "#element.selected.active" = { - background-color = mkLiteral "@selected-active-background"; - text-color = mkLiteral "@selected-active-foreground"; - }; - - "#element.alternate.normal" = { - background-color = mkLiteral "@alternate-normal-background"; - text-color = mkLiteral "@alternate-normal-foreground"; - }; - - "#element.alternate.urgent" = { - background-color = mkLiteral "@alternate-urgent-background"; - text-color = mkLiteral "@alternate-urgent-foreground"; - }; - - "#element.alternate.active" = { - background-color = mkLiteral "@alternate-active-background"; - text-color = mkLiteral "@alternate-active-foreground"; - }; - - "#sidebar" = { border-color = mkLiteral "@border-color"; }; - - "#button" = { text-color = mkLiteral "@normal-foreground"; }; - - "#button.selected" = { - background-color = mkLiteral "@selected-normal-background"; - text-color = mkLiteral "@selected-normal-foreground"; - }; - - "#inputbar" = { - text-color = mkLiteral "@normal-foreground"; - padding = mkLiteral "1px"; - spacing = mkLiteral "0px"; - children = mkLiteral - "[ prompt,textbox-prompt-colon,entry,num-filtered-rows,textbox-num-sep,num-rows,case-indicator ]"; - }; - - "#case-indicator" = { text-color = mkLiteral "@normal-foreground"; }; - - "#entry" = { text-color = mkLiteral "@normal-foreground"; }; - - "#prompt" = { text-color = mkLiteral "@normal-foreground"; }; - - "num-filtered-rows" = { - expand = false; - text-color = mkLiteral (color 8); - }; - - "num-rows" = { - expand = false; - text-color = mkLiteral (color 8); - }; - - "textbox-num-sep" = { - expand = false; - str = "/"; - text-color = mkLiteral (color 8); - }; - - "textbox-prompt-colon" = { - margin = mkLiteral "0 0.3em 0 0"; - expand = false; - str = ":"; - }; - - "entry" = { - text-color = mkLiteral "var(normal-foreground)"; - cursor = mkLiteral "text"; - spacing = 0; - placeholder-color = mkLiteral (color 8); - placeholder = "Type to filter"; - }; - }; - }; - }; -} diff --git a/common/fragments/graphical/sway.nix b/common/fragments/graphical/sway.nix deleted file mode 100644 index eaa4507..0000000 --- a/common/fragments/graphical/sway.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ pkgs, config, ... }: { - - # User packages - users.users.agatha.packages = with pkgs; [ grim rofi-wayland waybar ydotool ]; - - home-manager.users.agatha = { - wayland.windowManager.sway = let - cfg = config.home-manager.users.agatha.wayland.windowManager.sway.config; - in { - enable = true; - config = { - up = "i"; - left = "j"; - down = "k"; - right = "l"; - - modifier = "Mod4"; - terminal = "kitty"; - - fonts = { - names = [ "Font Awesome 5 Free" "Iosevka Gothic" ]; - size = 11.0; - }; - - workspaceAutoBackAndForth = true; - window = { - titlebar = true; - hideEdgeBorders = "both"; - border = 0; - }; - - gaps.inner = 15; - - output."*" = { bg = "/home/agatha/Pictures/wallpaper.png fill"; }; - - input."type:keyboard" = { - xkb_layout = config.services.xserver.layout; - xkb_options = config.services.xserver.xkbOptions; - }; - - input."type:touchpad" = { tap = "enabled"; }; - - keybindings = let mod = cfg.modifier; - in { - "${mod}+Return" = "exec ${cfg.terminal}"; - "Caps_Lock" = "exec ${cfg.terminal}"; - "${mod}+e" = "exec nautilus"; - "${mod}+space" = "exec rofi -show drun"; - "${mod}+shift+e" = "exec rofimoji --action clipboard"; - "${mod}+c" = '' - exec rofi -show calc -modi calc -calc-command 'xdotool type --clearmodifiers "\{result\}"' - ''; - XF86AudioRaiseVolume = "exec pamixer -i 5"; - XF86AudioLowerVolume = "exec pamixer -d 5"; - XF86AudioMute = "exec pamixer -t"; - XF86AudioPrev = "exec playerctl previous"; - XF86AudioNext = "exec playerctl next"; - XF86AudioPlay = "exec playerctl play-pause"; - Print = "exec flameshot gui"; - "shift+Print" = "exec flameshot gui -d 3000"; - "${mod}+n" = "exec dunstctl set-paused toggle"; - # "${mod}+o" = "TODO: port audio switcher"; - "${mod}+shift+r" = - "reload; exec 'for p in waybar dunst; do; killall $p; done'"; - "${mod}+w" = "kill"; - "${mod}+m" = "layout tabbed"; - "${mod}+t" = "layout toggle split"; - "${mod}+s" = "floating toggle"; - "${mod}+f" = "fullscreen toggle"; - - "alt+Tab" = "exec rofi -show window"; - - # "${mod}+x" = "TODO: lockscreen"; - - "${mod}+Shift+${cfg.left}" = "move left"; - "${mod}+Shift+${cfg.down}" = "move down"; - "${mod}+Shift+${cfg.up}" = "move up"; - "${mod}+Shift+${cfg.right}" = "move right"; - - "${mod}+1" = "workspace number 1"; - "${mod}+2" = "workspace number 2"; - "${mod}+3" = "workspace number 3"; - "${mod}+4" = "workspace number 4"; - "${mod}+5" = "workspace number 5"; - "${mod}+6" = "workspace number 6"; - "${mod}+7" = "workspace number 7"; - "${mod}+8" = "workspace number 8"; - "${mod}+9" = "workspace number 9"; - - "${mod}+Shift+1" = "move container to workspace number 1"; - "${mod}+Shift+2" = "move container to workspace number 2"; - "${mod}+Shift+3" = "move container to workspace number 3"; - "${mod}+Shift+4" = "move container to workspace number 4"; - "${mod}+Shift+5" = "move container to workspace number 5"; - "${mod}+Shift+6" = "move container to workspace number 6"; - "${mod}+Shift+7" = "move container to workspace number 7"; - "${mod}+Shift+8" = "move container to workspace number 8"; - "${mod}+Shift+9" = "move container to workspace number 9"; - }; - }; - }; - }; -} diff --git a/common/fragments/graphical/syncthing.nix b/common/fragments/graphical/syncthing.nix deleted file mode 100644 index bf6c3e0..0000000 --- a/common/fragments/graphical/syncthing.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - services.syncthing = { - enable = true; - user = "agatha"; - openDefaultPorts = true; - overrideFolders = false; - overrideDevices = false; - }; -} diff --git a/common/fragments/graphical/theme.nix b/common/fragments/graphical/theme.nix deleted file mode 100644 index 0211b6c..0000000 --- a/common/fragments/graphical/theme.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ config, pkgs, ... }: { - environment.graphical.colorschemes = { - purple = { - image = ../../../external/the_reliquary.png; - params = [ "--lighten" "0.05" "--bold-delta" "0.1" ]; - }; - purple-light = { - image = ../../../external/the_reliquary.png; - params = [ "--light" "--bold-delta" "0.2" "--saturate" "0.1" ]; - }; - blue = { image = ../../../external/blue.jpg; }; - dark = { - image = ../../../external/the_falls_by_night.jpg; - params = [ "--lighten" "0.5" ]; - }; - bridge = { - image = ../../../external/the_bridge.png; - params = [ "--saturate" "0.05" ]; - }; - }; - - home-manager.users.agatha = { - # Cursor theme - home.pointerCursor = { - name = "Adwaita"; - package = pkgs.gnome.adwaita-icon-theme; - size = 24; - x11 = { - enable = true; - defaultCursor = "Adwaita"; - }; - }; - - # GTK theme - home.file.".themes" = { - recursive = true; - source = pkgs.fetchgit { - url = "https://github.com/ZorinOS/zorin-desktop-themes.git"; - rev = "05ab7360d33ab6e510cebceccc4d2b3e1baa7276"; - sha256 = "sha256-nU2V6PZepi5c7zorF6dZYNSF8jliE8+VObzbzrU+ADo="; - sparseCheckout = [ "ZorinPurple-Dark" "ZorinPurple-Light" ]; - }; - }; - - gtk = { - enable = true; - font.name = "Cantarell"; - font.size = 12; - theme.name = if config.environment.graphical.theme.light then - "ZorinPurple-Light" - else - "ZorinPurple-Dark"; - }; - - dconf.settings."org/gnome/desktop/interface".color-scheme = - if config.environment.graphical.theme.light then - "prefer-light" - else - "prefer-dark"; - - programs.helix.settings.theme = - if config.environment.graphical.theme.light then - "paramount-light" - else - "paramount-dark"; - }; -} diff --git a/common/fragments/graphical/url-eater.nix b/common/fragments/graphical/url-eater.nix index 3713392..a0f464d 100644 --- a/common/fragments/graphical/url-eater.nix +++ b/common/fragments/graphical/url-eater.nix @@ -132,7 +132,8 @@ let params "wt_mc" "wt_zmc" } ''; -in { +in +{ services.url-eater = { enable = true; inherit filters; diff --git a/common/home_manager/common.nix b/common/home_manager/common.nix index 783c8a3..9503fd5 100644 --- a/common/home_manager/common.nix +++ b/common/home_manager/common.nix @@ -1,4 +1,10 @@ -{ pkgs, config, lib, ... }: { +{ + pkgs, + config, + lib, + ... +}: +{ imports = [ ../../common/home_manager/helix.nix ]; home-manager.useGlobalPkgs = true; @@ -29,16 +35,19 @@ signing.key = "33185E0D62AD7294379947D4C37ABADDB597BCA1"; signing.signByDefault = true; aliases = { - plog = - "log --graph --pretty=format:'%h -%d %s -%an %n' --abbrev-commit --date=relative --branches"; + plog = "log --graph --pretty=format:'%h -%d %s -%an %n' --abbrev-commit --date=relative --branches"; pfusch = "push --force-with-lease"; stat = "diff --compact-summary"; undo = "reset --soft HEAD~"; unstage = "restore --staged"; }; extraConfig = { - init = { defaultBranch = "mistress"; }; - core = { editor = "hx"; }; + init = { + defaultBranch = "mistress"; + }; + core = { + editor = "hx"; + }; merge.conflictStyle = "zdiff3"; rebase.autosquash = true; pull.rebase = true; @@ -67,8 +76,11 @@ "$character" "$directory" ]; - right_format = - lib.concatStrings [ "$git_branch" " " "$cmd_duration" ]; + right_format = lib.concatStrings [ + "$git_branch" + " " + "$cmd_duration" + ]; character = { success_symbol = ""; error_symbol = "[ ⇣](purple)"; @@ -80,7 +92,9 @@ style = "cyan"; read_only_style = "cyan"; }; - cmd_duration = { min_time = 10000; }; + cmd_duration = { + min_time = 10000; + }; git_branch = { format = "$symbol $branch"; symbol = "󰘬"; @@ -118,10 +132,12 @@ ls = "eza -lhT --classify=always --group-directories-first --level 1"; cat = "bat"; ip = "ip -color=always"; - youtube-dl-audio = '' - yt-dlp --ignore-errors --output "%(title)s.%(ext)s" --extract-audio --audio-format best''; + youtube-dl-audio = ''yt-dlp --ignore-errors --output "%(title)s.%(ext)s" --extract-audio --audio-format best''; rsync = "rsync -az --partial --info=progress2"; }; + shellAliases.tailscale = lib.mkIf ( + !pkgs.stdenv.isLinux + ) "/Applications/Tailscale.app/Contents/MacOS/Tailscale"; functions = { expand-dot-to-parent-directory-path = '' # expand ... to ../.. etc @@ -176,7 +192,9 @@ tealdeer = { enable = true; - settings = { updates.auto_update = true; }; + settings = { + updates.auto_update = true; + }; }; zoxide = { @@ -198,4 +216,3 @@ ''; }; } - diff --git a/common/home_manager/helix.nix b/common/home_manager/helix.nix index 2367efe..258fa2c 100644 --- a/common/home_manager/helix.nix +++ b/common/home_manager/helix.nix @@ -1,4 +1,5 @@ -{ pkgs, lib, ... }: { +{ pkgs, lib, ... }: +{ # Set editor environment.variables.EDITOR = "hx"; @@ -11,22 +12,33 @@ enable = true; package = pkgs.helix; languages = { - language = [{ - name = "nix"; - auto-format = true; - formatter = { command = "nixfmt"; }; - }]; + language = [ + { + name = "nix"; + auto-format = true; + formatter = { + command = "nixfmt"; + }; + } + ]; }; settings = { theme = lib.mkDefault "paramount-dark"; editor = { middle-click-paste = false; scroll-lines = 4; - shell = [ "fish" "-c" ]; + shell = [ + "fish" + "-c" + ]; bufferline = "multiple"; statusline = { - left = [ "mode" "spinner" "file-name" ]; + left = [ + "mode" + "spinner" + "file-name" + ]; right = [ "workspace-diagnostics" "position" @@ -39,7 +51,9 @@ separator = " "; }; - cursor-shape = { insert = "bar"; }; + cursor-shape = { + insert = "bar"; + }; whitespace.render = { tab = "all"; @@ -61,13 +75,25 @@ keys = { insert = { - "C-left" = [ "move_prev_word_start" "collapse_selection" ]; - "C-right" = [ "move_next_word_start" "collapse_selection" ]; + "C-left" = [ + "move_prev_word_start" + "collapse_selection" + ]; + "C-right" = [ + "move_next_word_start" + "collapse_selection" + ]; }; normal = { - "C-left" = [ "move_prev_word_start" "collapse_selection" ]; - "C-right" = [ "move_next_word_start" "collapse_selection" ]; + "C-left" = [ + "move_prev_word_start" + "collapse_selection" + ]; + "C-right" = [ + "move_next_word_start" + "collapse_selection" + ]; "A-d" = "delete_selection"; "d" = "delete_selection_noyank"; }; @@ -75,210 +101,244 @@ }; themes = { - paramount-dark = let - medium_gray = "#767676"; - lighter_black = "#4E4E4E"; - lighter_gray = "#C6C6C6"; - light_red = "#E32791"; - orange = "#D75F5F"; - light_green = "#5FD7A7"; - dark_purple = "#af5fd7"; - light_purple = "#a790d5"; - dark_yellow = "#A89C14"; - in { - inherits = "hex_lavender"; + paramount-dark = + let + medium_gray = "#767676"; + lighter_black = "#4E4E4E"; + lighter_gray = "#C6C6C6"; + light_red = "#E32791"; + orange = "#D75F5F"; + light_green = "#5FD7A7"; + dark_purple = "#af5fd7"; + light_purple = "#a790d5"; + dark_yellow = "#A89C14"; + in + { + "ui.background" = { + bg = "black"; + }; + "ui.gutter" = { + bg = "black"; + }; + "ui.menu.selected" = { + fg = lighter_gray; + bg = light_purple; + }; + "comment" = { + fg = lighter_black; + modifiers = [ "italic" ]; + }; + "constant" = light_purple; + "string" = light_purple; + "variable" = lighter_gray; + "function" = lighter_gray; + "keyword.function" = lighter_gray; + "keyword.control" = medium_gray; + "keyword.control.import" = medium_gray; + "operator" = { + fg = lighter_gray; + modifiers = [ "bold" ]; + }; + "function.special" = medium_gray; + "type" = lighter_gray; + "tag" = { + fg = medium_gray; + modifiers = [ "italic" ]; + }; + "punctuation" = { + fg = medium_gray; + }; + "ui.linenr" = medium_gray; + "ui.linenr.selected" = { + fg = light_purple; + }; + "ui.window" = medium_gray; + "ui.text" = lighter_gray; + "ui.text.focus" = light_purple; + "ui.virtual.whitespace" = lighter_black; + "string.special.url" = { + fg = lighter_gray; + underline = { + color = lighter_gray; + style = "line"; + }; + modifiers = [ "underlined" ]; + }; + "markup.link" = { + fg = lighter_gray; + underline = { + color = lighter_gray; + style = "line"; + }; + modifiers = [ "underlined" ]; + }; + "diagnostic.error" = { + underline = { + color = light_red; + style = "curl"; + }; + }; + "error" = light_red; + "diagnostic.hint" = { + underline = { + color = lighter_gray; + style = "curl"; + }; + }; + "hint" = lighter_gray; + "ui.selection" = { + fg = lighter_gray; + bg = light_purple; + }; + "ui.selection.primary" = { + fg = lighter_gray; + bg = light_purple; + }; + "warning" = orange; + "diagnostic.warning" = { + underline = { + color = orange; + style = "curl"; + }; + }; + "diff.plus" = light_green; + "diff.minus" = light_red; + "diff.delta" = dark_yellow; + "ui.cursor" = { + bg = lighter_gray; + }; + "ui.cursor.insert" = { + bg = light_purple; + }; + "ui.cursor.select" = { + bg = dark_purple; + }; + "ui.cursor.match" = { + fg = lighter_gray; + bg = medium_gray; + }; + "namespace" = medium_gray; + }; + paramount-light = + let + medium_gray = "#767676"; + actual_white = "#FFFFFF"; + light_black = "#262626"; + dark_red = "#C30771"; + orange = "#D75F5F"; + dark_green = "#10A778"; + dark_purple = "#af5fd7"; + dark_yellow = "#A89C14"; + in + { + inherits = "spacebones_light"; - "ui.background" = { bg = "black"; }; - "ui.gutter" = { bg = "black"; }; - "ui.menu.selected" = { - fg = lighter_gray; - bg = light_purple; - }; - "comment" = { - fg = lighter_black; - modifiers = [ "italic" ]; - }; - "constant" = light_purple; - "string" = light_purple; - "variable" = lighter_gray; - "function" = lighter_gray; - "keyword.function" = lighter_gray; - "keyword.control" = medium_gray; - "keyword.control.import" = medium_gray; - "operator" = { - fg = lighter_gray; - modifiers = [ "bold" ]; - }; - "function.special" = medium_gray; - "type" = lighter_gray; - "tag" = { - fg = medium_gray; - modifiers = [ "italic" ]; - }; - "punctuation" = { fg = medium_gray; }; - "ui.linenr" = medium_gray; - "ui.linenr.selected" = { fg = light_purple; }; - "string.special.url" = { - fg = lighter_gray; - underline = { - color = lighter_gray; - style = "line"; + "ui.background" = { + bg = actual_white; }; - modifiers = [ "underlined" ]; - }; - "markup.link" = { - fg = lighter_gray; - underline = { - color = lighter_gray; - style = "line"; + "ui.gutter" = { + bg = actual_white; }; - modifiers = [ "underlined" ]; - }; - "diagnostic.error" = { - underline = { - color = light_red; - style = "curl"; + "ui.menu.selected" = { + fg = light_black; + bg = dark_purple; }; - }; - "error" = light_red; - "diagnostic.hint" = { - underline = { - color = lighter_gray; - style = "curl"; + "comment" = { + fg = "dark_gray"; + modifiers = [ "italic" ]; }; - }; - "hint" = lighter_gray; - "ui.selection" = { - fg = lighter_gray; - bg = light_purple; - }; - "ui.selection.primary" = { - fg = lighter_gray; - bg = light_purple; - }; - "warning" = orange; - "diagnostic.warning" = { - underline = { - color = orange; - style = "curl"; + "constant" = dark_purple; + "string" = dark_purple; + "variable" = light_black; + "variable.parameter" = light_black; + "function" = light_black; + "keyword" = medium_gray; + "keyword.function" = light_black; + "keyword.control" = medium_gray; + "keyword.control.import" = medium_gray; + "operator" = { + fg = light_black; + modifiers = [ "bold" ]; }; - }; - "diff.plus" = light_green; - "diff.minus" = light_red; - "diff.delta" = dark_yellow; - "ui.cursor" = { bg = lighter_gray; }; - "ui.cursor.insert" = { bg = light_purple; }; - "ui.cursor.select" = { bg = dark_purple; }; - "ui.cursor.match" = { - fg = lighter_gray; - bg = medium_gray; - }; - "namespace" = medium_gray; - }; - paramount-light = let - medium_gray = "#767676"; - actual_white = "#FFFFFF"; - light_black = "#262626"; - dark_red = "#C30771"; - orange = "#D75F5F"; - dark_green = "#10A778"; - dark_purple = "#af5fd7"; - dark_yellow = "#A89C14"; - in { - inherits = "spacebones_light"; - - "ui.background" = { bg = actual_white; }; - "ui.gutter" = { bg = actual_white; }; - "ui.menu.selected" = { - fg = light_black; - bg = dark_purple; - }; - "comment" = { - fg = "dark_gray"; - modifiers = [ "italic" ]; - }; - "constant" = dark_purple; - "string" = dark_purple; - "variable" = light_black; - "variable.parameter" = light_black; - "function" = light_black; - "keyword" = medium_gray; - "keyword.function" = light_black; - "keyword.control" = medium_gray; - "keyword.control.import" = medium_gray; - "operator" = { - fg = light_black; - modifiers = [ "bold" ]; - }; - "function.special" = medium_gray; - "function.macro" = medium_gray; - "type" = light_black; - "type.builtin" = light_black; - "tag" = { - fg = medium_gray; - modifiers = [ "italic" ]; - }; - "punctuation" = { fg = medium_gray; }; - "ui.linenr" = medium_gray; - "ui.linenr.selected" = { fg = dark_purple; }; - "string.special.url" = { - fg = light_black; - underline = { - color = light_black; - style = "line"; + "function.special" = medium_gray; + "function.macro" = medium_gray; + "type" = light_black; + "type.builtin" = light_black; + "tag" = { + fg = medium_gray; + modifiers = [ "italic" ]; }; - modifiers = [ "underlined" ]; - }; - "markup.link" = { - fg = light_black; - underline = { - color = light_black; - style = "line"; + "punctuation" = { + fg = medium_gray; }; - modifiers = [ "underlined" ]; - }; - "diagnostic.error" = { - underline = { - color = dark_red; - style = "curl"; + "ui.linenr" = medium_gray; + "ui.linenr.selected" = { + fg = dark_purple; }; - }; - "error" = dark_red; - "diagnostic.hint" = { - underline = { - color = light_black; - style = "curl"; + "string.special.url" = { + fg = light_black; + underline = { + color = light_black; + style = "line"; + }; + modifiers = [ "underlined" ]; }; - }; - "hint" = light_black; - "ui.selection" = { - fg = light_black; - bg = dark_purple; - }; - "ui.selection.primary" = { - fg = light_black; - bg = dark_purple; - }; - "warning" = orange; - "diagnostic.warning" = { - underline = { - color = orange; - style = "curl"; + "markup.link" = { + fg = light_black; + underline = { + color = light_black; + style = "line"; + }; + modifiers = [ "underlined" ]; }; + "diagnostic.error" = { + underline = { + color = dark_red; + style = "curl"; + }; + }; + "error" = dark_red; + "diagnostic.hint" = { + underline = { + color = light_black; + style = "curl"; + }; + }; + "hint" = light_black; + "ui.selection" = { + fg = light_black; + bg = dark_purple; + }; + "ui.selection.primary" = { + fg = light_black; + bg = dark_purple; + }; + "warning" = orange; + "diagnostic.warning" = { + underline = { + color = orange; + style = "curl"; + }; + }; + "diff.plus" = dark_green; + "diff.minus" = dark_red; + "diff.delta" = dark_yellow; + "ui.cursor" = { + bg = light_black; + }; + "ui.cursor.insert" = { + bg = dark_purple; + }; + "ui.cursor.select" = { + bg = dark_purple; + }; + "ui.cursor.match" = { + fg = light_black; + bg = medium_gray; + }; + "namespace" = medium_gray; + "special" = medium_gray; }; - "diff.plus" = dark_green; - "diff.minus" = dark_red; - "diff.delta" = dark_yellow; - "ui.cursor" = { bg = light_black; }; - "ui.cursor.insert" = { bg = dark_purple; }; - "ui.cursor.select" = { bg = dark_purple; }; - "ui.cursor.match" = { - fg = light_black; - bg = medium_gray; - }; - "namespace" = medium_gray; - "special" = medium_gray; - }; }; }; }; diff --git a/common/linux-specific.nix b/common/linux-specific.nix index 1bb0df6..c30ef26 100644 --- a/common/linux-specific.nix +++ b/common/linux-specific.nix @@ -67,4 +67,5 @@ trustedInterfaces = [ "tailscale0" ]; allowedUDPPorts = [ config.services.tailscale.port ]; }; + services.tailscale.enable = true; } diff --git a/common/options.nix b/common/options.nix deleted file mode 100644 index 6c2eb51..0000000 --- a/common/options.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ lib, config, ... }: { - options = { - environment.graphical.theme = with lib; { - name = mkOption { type = types.str; }; - light = mkOption { - default = false; - type = types.bool; - }; - }; - }; - - config = let - theme = - config.environment.graphical.colorschemes."${config.environment.graphical.theme.name}"; - in { - environment.graphical.theme.light = builtins.elem "--light" theme.params - || builtins.elem "-l" theme.params; - }; -} diff --git a/common/pkgs/bspm.nix b/common/pkgs/bspm.nix deleted file mode 100644 index d65d390..0000000 --- a/common/pkgs/bspm.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ pkgs }: -pkgs.buildGoModule rec { - pname = "bspm"; - version = "v0.0.9"; - - src = pkgs.fetchFromGitHub { - owner = "diogox"; - repo = pname; - rev = version; - sha256 = "sha256-ocnvTUANmJ6186Dktr5GaotbkZKZymKiIHICgTIRtjc="; - }; - - vendorHash = "sha256-Oj6i4/K0LAubu2aSoXcC6bZtTp8/N0cbvG+KWjA5/nw="; - - doCheck = false; - - meta = { - description = "The bspwm manager"; - homepage = "https://github.com/diogox/bspm"; - }; -} diff --git a/common/pkgs/pads.nix b/common/pkgs/pads.nix deleted file mode 100644 index 0d3a3ca..0000000 --- a/common/pkgs/pads.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ pkgs }: -pkgs.rustPlatform.buildRustPackage rec { - pname = "pads"; - version = "89d69d4b9b199e08671c947120d5b2e1b6295d68"; - - src = pkgs.fetchFromGitHub { - owner = "dogue"; - repo = pname; - rev = version; - sha256 = "sha256-vVmEKvRSBiHv4skh2/B6cl17jVsgRI0IJeSgpSpPPTE="; - }; - - cargoLock = { lockFile = "${src}/Cargo.lock"; }; - - nativeBuildInputs = [ pkgs.pkg-config ]; - buildInputs = [ pkgs.libpulseaudio ]; - - meta = { - description = - "A simple CLI tool for swtiching the default/active output device for PulseAudio."; - homepage = "https://github.com/dogue/pads"; - }; -} diff --git a/common/pkgs/polybar-scripts.nix b/common/pkgs/polybar-scripts.nix deleted file mode 100644 index aede71e..0000000 --- a/common/pkgs/polybar-scripts.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ pkgs }: -pkgs.stdenv.mkDerivation rec { - pname = "polybar-scripts"; - version = "8a6a2c7fc6beb281515f81ccf5b9fafc830a3230"; - - src = pkgs.fetchFromGitHub { - owner = "polybar"; - repo = pname; - rev = version; - sha256 = "sha256-4f12SSidJGElPbHs94WyoKj9kJH4dWsZSqMGOyzSJII="; - }; - - nativeBuildInputs = with pkgs; [ gobject-introspection wrapGAppsHook3 ]; - - propagatedBuildInputs = with pkgs; [ - (python39.withPackages (pyPkgs: with pyPkgs; [ dbus-python pygobject3 ])) - glib - ]; - - installPhase = '' - mkdir -p $out/bin - find . -type f ! -name "*.py" ! -name "*.sh" -exec rm {} \; - cp -r polybar-scripts/* $out/bin/ - chmod -R +x $out/bin - ''; -} diff --git a/external/blue.jpg b/external/blue.jpg deleted file mode 100644 index 7b8b23d..0000000 Binary files a/external/blue.jpg and /dev/null differ diff --git a/external/credits.txt b/external/credits.txt deleted file mode 100644 index 1e4396e..0000000 --- a/external/credits.txt +++ /dev/null @@ -1,4 +0,0 @@ -the_reliquary.png: The Reliquary by Pete Amachree -blue.jpg: ??? -the_falls_by_night.jpg: Jungle Waterfall by Mark J. Ferrari -the_bridge.png: The Bridge by ReFiend diff --git a/external/the_bridge.png b/external/the_bridge.png deleted file mode 100644 index ce1fe5e..0000000 Binary files a/external/the_bridge.png and /dev/null differ diff --git a/external/the_falls_by_night.jpg b/external/the_falls_by_night.jpg deleted file mode 100644 index cca8cf1..0000000 Binary files a/external/the_falls_by_night.jpg and /dev/null differ diff --git a/external/the_reliquary.png b/external/the_reliquary.png deleted file mode 100644 index 2d5e95c..0000000 Binary files a/external/the_reliquary.png and /dev/null differ diff --git a/flake.lock b/flake.lock index 6f3183a..c96f427 100644 --- a/flake.lock +++ b/flake.lock @@ -44,28 +44,6 @@ "type": "github" } }, - "colorpickle": { - "inputs": { - "naersk": "naersk", - "nixpkgs": [ - "nixpkgs-unstable" - ], - "utils": "utils_2" - }, - "locked": { - "lastModified": 1700940986, - "narHash": "sha256-+7eo8Y0YkuQeGDIHtEGPpoJQNGSxpzkg4UPR63xJiss=", - "owner": "AgathaSorceress", - "repo": "colorpickle", - "rev": "61c77e71b5586412b6deecc2389fc39072e4b60f", - "type": "github" - }, - "original": { - "owner": "AgathaSorceress", - "repo": "colorpickle", - "type": "github" - } - }, "crane": { "locked": { "lastModified": 1727974419, @@ -130,7 +108,7 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_4" + "systems": "systems_3" }, "locked": { "lastModified": 1726560853, @@ -148,7 +126,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_5" + "systems": "systems_4" }, "locked": { "lastModified": 1710146030, @@ -196,11 +174,11 @@ }, "frq-friend": { "inputs": { - "naersk": "naersk_2", + "naersk": "naersk", "nixpkgs": [ "nixpkgs" ], - "utils": "utils_3" + "utils": "utils_2" }, "locked": { "lastModified": 1704635792, @@ -226,11 +204,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1729690460, - "narHash": "sha256-x8qkGujBPuOefXPyjcaB8Ot0IYkQBy6O2ZYb8NrnB3k=", + "lastModified": 1732579614, + "narHash": "sha256-LREXerN4a4DHG38a2KZPum7E/OKNhYgrBtU6AsD5SnQ=", "owner": "helix-editor", "repo": "helix", - "rev": "101a74bf6edbbfdf9b0628a0bdbbc307ebe10ff2", + "rev": "80709cee610f1758af1e62d53bde2eb8aa706a0c", "type": "github" }, "original": { @@ -313,11 +291,11 @@ }, "matrix-ril100": { "inputs": { - "naersk": "naersk_3", + "naersk": "naersk_2", "nixpkgs": [ "nixpkgs-unstable" ], - "utils": "utils_4" + "utils": "utils_3" }, "locked": { "lastModified": 1688054487, @@ -360,25 +338,6 @@ "inputs": { "nixpkgs": "nixpkgs" }, - "locked": { - "lastModified": 1694081375, - "narHash": "sha256-vzJXOUnmkMCm3xw8yfPP5m8kypQ3BhAIRe4RRCWpzy8=", - "owner": "nix-community", - "repo": "naersk", - "rev": "3f976d822b7b37fc6fb8e6f157c2dd05e7e94e89", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "master", - "repo": "naersk", - "type": "github" - } - }, - "naersk_2": { - "inputs": { - "nixpkgs": "nixpkgs_2" - }, "locked": { "lastModified": 1679567394, "narHash": "sha256-ZvLuzPeARDLiQUt6zSZFGOs+HZmE+3g4QURc8mkBsfM=", @@ -394,9 +353,9 @@ "type": "github" } }, - "naersk_3": { + "naersk_2": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1687852486, @@ -413,7 +372,7 @@ "type": "github" } }, - "naersk_4": { + "naersk_3": { "inputs": { "nixpkgs": [ "url-eater", @@ -438,7 +397,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -462,11 +421,11 @@ ] }, "locked": { - "lastModified": 1730070491, - "narHash": "sha256-+RYCbdU6l4E4pr40++lrdhdE3gNC/BR54AL7xWG/YRU=", + "lastModified": 1732420287, + "narHash": "sha256-CzvYF4x6jUh/+NEEIFrIY5t1W/N3IA2bNZJiMXu9GTo=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "5c0c6aaa797d6ccbb6cdab14de0248135735709d", + "rev": "3c52583b99666a349a6219dc1f0dd07d75c82d6a", "type": "github" }, "original": { @@ -477,11 +436,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1696234590, - "narHash": "sha256-mgOzQYTvaTT4bFopVOadlndy2RPwLy60rDjIWOGujwo=", + "lastModified": 1681272286, + "narHash": "sha256-9X5p+gwYrowgbsRgkf14HFI0fkr6UikuwRIQAMlF1yI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f902cb49892d300ff15cb237e48aa1cad79d68c3", + "rev": "6b70761ea8c896aff8994eb367d9526686501860", "type": "github" }, "original": { @@ -491,11 +450,11 @@ }, "nixpkgs-darwin": { "locked": { - "lastModified": 1730091932, - "narHash": "sha256-Xg1O6tAHBK8EVHMLylYFlpRmqtG/deKqTfI9atLRLE0=", + "lastModified": 1730891215, + "narHash": "sha256-i85DPrhDuvzgvIWCpJlbfM2UFtNYbapo20MtQXsvay4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b9516e15a60ce6633efccb02d703f6eca973228", + "rev": "c128e44a249d6180740d0a979b6480d5b795c013", "type": "github" }, "original": { @@ -523,11 +482,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1729980323, - "narHash": "sha256-eWPRZAlhf446bKSmzw6x7RWEE4IuZgAp8NW3eXZwRAY=", + "lastModified": 1732238832, + "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "86e78d3d2084ff87688da662cf78c2af085d8e73", + "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d", "type": "github" }, "original": { @@ -538,20 +497,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1681272286, - "narHash": "sha256-9X5p+gwYrowgbsRgkf14HFI0fkr6UikuwRIQAMlF1yI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6b70761ea8c896aff8994eb367d9526686501860", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1687946342, "narHash": "sha256-vRxti8pOuXS0rJmqjbD8ueEEFXWSK22ISHoCWkhgzzg=", @@ -565,7 +510,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -581,13 +526,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { - "lastModified": 1729973466, - "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", + "lastModified": 1731797254, + "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950", + "rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59", "type": "github" }, "original": { @@ -597,7 +542,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_5": { "locked": { "lastModified": 1682092588, "narHash": "sha256-NjKBPnScpbGiH/YOx74DIFOVkr5AKJOVZoy0l7J58gk=", @@ -617,7 +562,6 @@ "inputs": { "ccase": "ccase", "colmena": "colmena", - "colorpickle": "colorpickle", "frq-friend": "frq-friend", "helix": "helix", "home-manager": "home-manager", @@ -625,7 +569,7 @@ "matrix-ril100": "matrix-ril100", "mms": "mms", "nix-darwin": "nix-darwin", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "nixpkgs-darwin": "nixpkgs-darwin", "nixpkgs-unstable": "nixpkgs-unstable", "url-eater": "url-eater", @@ -774,28 +718,13 @@ "type": "github" } }, - "systems_8": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "url-eater": { "inputs": { - "naersk": "naersk_4", + "naersk": "naersk_3", "nixpkgs": [ "nixpkgs-unstable" ], - "utils": "utils_5" + "utils": "utils_4" }, "locked": { "lastModified": 1710529176, @@ -833,24 +762,6 @@ "inputs": { "systems": "systems_2" }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_3": { - "inputs": { - "systems": "systems_3" - }, "locked": { "lastModified": 1681202837, "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", @@ -865,9 +776,9 @@ "type": "github" } }, - "utils_4": { + "utils_3": { "inputs": { - "systems": "systems_6" + "systems": "systems_5" }, "locked": { "lastModified": 1687709756, @@ -883,9 +794,9 @@ "type": "github" } }, - "utils_5": { + "utils_4": { "inputs": { - "systems": "systems_7" + "systems": "systems_6" }, "locked": { "lastModified": 1701680307, @@ -901,9 +812,9 @@ "type": "github" } }, - "utils_6": { + "utils_5": { "inputs": { - "systems": "systems_8" + "systems": "systems_7" }, "locked": { "lastModified": 1681202837, @@ -921,8 +832,8 @@ }, "vampysite": { "inputs": { - "nixpkgs": "nixpkgs_6", - "utils": "utils_6" + "nixpkgs": "nixpkgs_5", + "utils": "utils_5" }, "locked": { "lastModified": 1717180338, diff --git a/flake.nix b/flake.nix index 6524886..9539683 100644 --- a/flake.nix +++ b/flake.nix @@ -31,11 +31,6 @@ inputs.nixpkgs.follows = "nixpkgs-unstable"; }; - colorpickle = { - url = "github:AgathaSorceress/colorpickle"; - inputs.nixpkgs.follows = "nixpkgs-unstable"; - }; - matrix-ril100 = { url = "git+https://git.lain.faith/sorceress/matrix-ril100"; inputs.nixpkgs.follows = "nixpkgs-unstable"; @@ -73,7 +68,6 @@ mms, helix, url-eater, - colorpickle, matrix-ril100, frq-friend, colmena, @@ -97,7 +91,6 @@ ''; } ); - colorpickle = colorpickle.packages.${final.system}.default; frq-friend = frq-friend.packages.${final.system}.default; vampysite = vampysite.packages.${final.system}.default; matrix-ril100 = matrix-ril100.packages.${final.system}.default; @@ -109,43 +102,6 @@ colmena.overlay lix-module.overlays.default ]; - mkDesktop = hostname: { - imports = [ - ./common - ./common/linux-specific.nix - ./hosts/${hostname}/configuration.nix - ./common/options.nix - (import "${home-manager}/nixos") - url-eater.nixosModules.default - colorpickle.nixosModules.default - ]; - - deployment = { - targetUser = "root"; - targetHost = hostname; - - tags = [ "home" ]; - - allowLocalDeployment = true; - - keys = { - "restic-password" = { - keyCommand = [ - "cat" - "./secrets/restic-password" - ]; - destDir = "/var/lib/secrets/"; - }; - "restic-env" = { - keyCommand = [ - "cat" - "./secrets/restic-env" - ]; - destDir = "/var/lib/secrets/"; - }; - }; - }; - }; in { colmena = { @@ -248,8 +204,42 @@ }; }; - ritual = mkDesktop "ritual"; - tears = mkDesktop "tears"; + tears = { + imports = [ + ./common + ./common/linux-specific.nix + ./hosts/tears/configuration.nix + ./common/options.nix + (import "${home-manager}/nixos") + url-eater.nixosModules.default + ]; + + deployment = { + targetUser = "root"; + targetHost = "tears"; + + tags = [ "home" ]; + + allowLocalDeployment = true; + + keys = { + "restic-password" = { + keyCommand = [ + "cat" + "./secrets/restic-password" + ]; + destDir = "/var/lib/secrets/"; + }; + "restic-env" = { + keyCommand = [ + "cat" + "./secrets/restic-env" + ]; + destDir = "/var/lib/secrets/"; + }; + }; + }; + }; }; darwinConfigurations."Agathas-Mac-mini" = nix-darwin.lib.darwinSystem { pkgs = import nixpkgs-darwin rec { @@ -263,6 +253,18 @@ (import "${home-manager}/nix-darwin") ]; }; + darwinConfigurations."ritual" = nix-darwin.lib.darwinSystem { + pkgs = import nixpkgs-darwin rec { + system = "x86_64-darwin"; + config.allowUnfree = true; + overlays = mkOverlays system config; + }; + modules = [ + ./common + ./hosts/ritual/configuration.nix + (import "${home-manager}/nix-darwin") + ]; + }; devShells = let patchedColmena = @@ -281,6 +283,7 @@ { "x86_64-linux".default = patchedColmena "x86_64-linux"; "aarch64-darwin".default = patchedColmena "aarch64-darwin"; + "x86_64-darwin".default = patchedColmena "x86_64-darwin"; }; }; } diff --git a/hosts/Agathas-Mac-mini/configuration.nix b/hosts/Agathas-Mac-mini/configuration.nix index f593ab9..bd818e5 100644 --- a/hosts/Agathas-Mac-mini/configuration.nix +++ b/hosts/Agathas-Mac-mini/configuration.nix @@ -1,48 +1,7 @@ -{ pkgs, lib, ... }: { - imports = [ - ../../common/home_manager/common.nix - ../../common/remote-builds.nix - ../../common/fragments/graphical/barebones.nix - ../../common/fragments/graphical/iosevka.nix - ]; + imports = [ ../../common/fragments/graphical/darwin.nix ]; nixpkgs.hostPlatform = "aarch64-darwin"; - services.nix-daemon.enable = true; - nix.settings = { - extra-nix-path = "nixpkgs=flake:nixpkgs"; - substituters = [ - "https://cache.nixos.org" - "https://cache.lix.systems" - ]; - trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" - ]; - trusted-users = [ "@admin" ]; - }; - - # Needed for the nix-darwin environment even if zsh is not used. - programs.zsh.enable = true; - - users.users.agatha = { - name = "agatha"; - home = lib.mkForce "/Users/agatha"; - }; - - fonts.packages = with pkgs; [ - (nerdfonts.override { - fonts = [ - "DaddyTimeMono" - "NerdFontsSymbolsOnly" - ]; - }) - fira-code - fira-code-symbols - font-awesome_5 - iosevka - siji - ]; system.stateVersion = 1; } diff --git a/hosts/ritual/configuration.nix b/hosts/ritual/configuration.nix index cefbd0c..6d3e130 100644 --- a/hosts/ritual/configuration.nix +++ b/hosts/ritual/configuration.nix @@ -1,83 +1,7 @@ { - imports = [ - ./hardware-configuration.nix - ../../common/fragments/graphical - ../../common/remote-builds.nix - ../../common/home_manager/common.nix - ]; + imports = [ ../../common/fragments/graphical/darwin.nix ]; - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.efi.efiSysMountPoint = "/boot/efi"; + nixpkgs.hostPlatform = "x86_64-darwin"; - boot.loader.systemd-boot.configurationLimit = 5; - - # Setup keyfile - boot.initrd.secrets = { - "/crypto_keyfile.bin" = null; - }; - - networking.hostName = "ritual"; - - # Enable networking - networking.networkmanager.enable = true; - - virtualisation = { - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - oci-containers.backend = "podman"; - }; - - # Don't suspend when closed and plugged into power - services.logind.lidSwitchExternalPower = "lock"; - - home-manager.users.agatha = { - xsession.windowManager.bspwm = { - monitors = { - eDP-1 = [ - "I" - "II" - "III" - "IV" - "V" - "VI" - "VII" - "VIII" - ]; - }; - rules = { - "Element".desktop = "II"; - "TelegramDesktop".desktop = "III"; - "dino".desktop = "III"; - "Cider".desktop = "IV"; - "Geary".desktop = "V"; - "firefox" = { - desktop = "I"; - state = "tiled"; - follow = false; - }; - }; - }; - - services.polybar = { - script = "polybar right &"; - settings."bar/right".monitor = "\${env:MONITOR:eDP-1}"; - }; - }; - - environment.graphical.theme.name = "blue"; - - services.syncthing.dataDir = "/home/agatha/syncthing"; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "22.11"; # Did you read the comment? + system.stateVersion = 1; } diff --git a/hosts/ritual/hardware-configuration.nix b/hosts/ritual/hardware-configuration.nix index 821d8f5..9bbe319 100644 --- a/hosts/ritual/hardware-configuration.nix +++ b/hosts/ritual/hardware-configuration.nix @@ -1,21 +1,33 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, modulesPath, ... }: +{ + config, + lib, + modulesPath, + ... +}: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = - [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "usb_storage" + "sd_mod" + "sdhci_pci" + ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.kernelModules = [ + "kvm-intel" + "wl" + ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ broadcom_sta ]; boot.initrd.systemd = { enable = true; - emergencyAccess = - "$2b$05$eOIXFST5/9G6vAFIZDLGfuJV7CV1B26YmRMAFRstyRHwvBNFSN6Im"; + emergencyAccess = "$2b$05$eOIXFST5/9G6vAFIZDLGfuJV7CV1B26YmRMAFRstyRHwvBNFSN6Im"; }; boot.supportedFilesystems = [ "ntfs" ]; @@ -26,22 +38,18 @@ options = [ "subvol=@" ]; }; - boot.initrd.luks.devices."luks-8807caf4-ae17-4b39-93bd-ddfa1f994a47".device = - "/dev/disk/by-uuid/8807caf4-ae17-4b39-93bd-ddfa1f994a47"; + boot.initrd.luks.devices."luks-8807caf4-ae17-4b39-93bd-ddfa1f994a47".device = "/dev/disk/by-uuid/8807caf4-ae17-4b39-93bd-ddfa1f994a47"; # Enable swap on luks - boot.initrd.luks.devices."luks-c503653d-47de-4914-9e41-d13d14a6cc22".device = - "/dev/disk/by-uuid/c503653d-47de-4914-9e41-d13d14a6cc22"; - boot.initrd.luks.devices."luks-c503653d-47de-4914-9e41-d13d14a6cc22".keyFile = - "/crypto_keyfile.bin"; + boot.initrd.luks.devices."luks-c503653d-47de-4914-9e41-d13d14a6cc22".device = "/dev/disk/by-uuid/c503653d-47de-4914-9e41-d13d14a6cc22"; + boot.initrd.luks.devices."luks-c503653d-47de-4914-9e41-d13d14a6cc22".keyFile = "/crypto_keyfile.bin"; fileSystems."/boot/efi" = { device = "/dev/disk/by-uuid/9A5C-CE17"; fsType = "vfat"; }; - swapDevices = - [{ device = "/dev/disk/by-uuid/e20a4e05-44a6-4895-84ef-e3d176931b25"; }]; + swapDevices = [ { device = "/dev/disk/by-uuid/e20a4e05-44a6-4895-84ef-e3d176931b25"; } ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's @@ -51,8 +59,9 @@ # networking.interfaces.enp4s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true; + # environment.systemPackages = with pkgs; [ b43Firmware_5_1_138 ]; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; - hardware.cpu.intel.updateMicrocode = - lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hosts/tears/configuration.nix b/hosts/tears/configuration.nix index b3cbcfb..e8595dc 100644 --- a/hosts/tears/configuration.nix +++ b/hosts/tears/configuration.nix @@ -1,7 +1,7 @@ { imports = [ ./hardware-configuration.nix - ../../common/fragments/graphical/barebones.nix + ../../common/fragments/graphical ../../common/fragments/virt.nix ../../common/home_manager/common.nix ];