ritual: Nix-darwin hackintosh init

This commit is contained in:
Agatha Lovelace 2024-11-29 17:07:02 +01:00
parent e60bbd7f41
commit efa8532935
Signed by: sorceress
GPG Key ID: 01D0B3AB10CED4F8
38 changed files with 500 additions and 2318 deletions

View File

@ -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`

View File

@ -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;
}

View File

@ -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"
]
}
}
'';
};
}

View File

@ -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;
};
}

View File

@ -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'';
};
};
};
}

View File

@ -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"
'';
};
}

View File

@ -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
];
}

View File

@ -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"
<Multi_key> <l> <f> : "( ͡° ͜ʖ ͡°)"
<Multi_key> <s> <f> : "¯\\_()_/¯"
<Multi_key> <g> <f> : " _ "
<Multi_key> <B> <B> : "🅱"
<Multi_key> <o> <asterisk> : ""
<Multi_key> <h> <r> : ""
<Multi_key> <v> <v> : ""
<Multi_key> <v> <period> <v> : ""
<Multi_key> <space> <space> : ""
<Multi_key> <s> <0> : "§"
<Multi_key> <b><l> : ""
<Multi_key> <h><s> : ""
<Multi_key> <s><r> : ""
<Multi_key> <t><r> : " trans rights uwu"
<Multi_key> <w><apostrophe> : "òwó"
<Multi_key> <W><apostrophe> : "ÒwÓ"
<Multi_key> <p><t> : "👉👈"
<Multi_key> <p><l> : "🥺"
<Multi_key> <m><s> : "/html <span data-mx-spoiler=\"\"></span>"
'';
};
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" ];
}

View File

@ -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 = ''
<b>%s</b>
%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";
};
};
};
};
}

View File

@ -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"]
}
'';
};
}

View File

@ -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;
};
};
};
}

View File

@ -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\"'"
];
};
}

View File

@ -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 ];
}

View File

@ -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"
];
};
};
};
}

View File

@ -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' '<b>' | ${pkgs.sd}/bin/sd '\\x1b\[0m' '</b>')":}%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:}<label-volume> <bar-volume>%{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 = "<animation-charging> <label-charging>";
format-discharging = "<ramp-capacity> <label-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";
};
};
};
};
}

View File

@ -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";
};
};
};
};
}

View File

@ -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";
};
};
};
};
}

View File

@ -1,9 +0,0 @@
{
services.syncthing = {
enable = true;
user = "agatha";
openDefaultPorts = true;
overrideFolders = false;
overrideDevices = false;
};
}

View File

@ -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";
};
}

View File

@ -132,7 +132,8 @@ let
params "wt_mc" "wt_zmc"
}
'';
in {
in
{
services.url-eater = {
enable = true;
inherit filters;

View File

@ -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 @@
'';
};
}

View File

@ -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;
};
};
};
};

View File

@ -67,4 +67,5 @@
trustedInterfaces = [ "tailscale0" ];
allowedUDPPorts = [ config.services.tailscale.port ];
};
services.tailscale.enable = true;
}

View File

@ -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;
};
}

View File

@ -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";
};
}

View File

@ -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";
};
}

View File

@ -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
'';
}

BIN
external/blue.jpg vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 MiB

View File

@ -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,

View File

@ -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";
};
};
}

View File

@ -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;
}

View File

@ -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. Its 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;
}

View File

@ -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;
}

View File

@ -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
];