Merge branch 'main' into containers

This commit is contained in:
KoenDR06 2026-02-09 14:11:22 +01:00
commit d7812f37c3
22 changed files with 183 additions and 181 deletions

View file

@ -0,0 +1,35 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf mkEnableOption;
cfg = config.horseman.dots.gtk;
username = config.horseman.username;
catppuccin = config.horseman.catppuccin;
in {
options = {
horseman.dots.gtk = {
enable = mkEnableOption "~/.config/gtk-4.0/settings.ini";
};
};
config = let
settings = ''
[Settings]
gtk-theme-name=Adwaita
gtk-icon-theme-name=Adwaita
gtk-font-name=Adwaita Sans 11
gtk-cursor-theme-name=catppuccin-${catppuccin.flavor}-dark-cursors
gtk-cursor-theme-size=24
gtk-application-prefer-dark-theme=0
'';
in
mkIf cfg.enable {
home-manager.users.${username}.home.file = {
".config/gtk-4.0/settings.ini".text = settings;
".config/gtk-3.0/settings.ini".text = settings;
};
};
}

View file

@ -6,5 +6,6 @@
./.config/kitty/kitty.conf.nix ./.config/kitty/kitty.conf.nix
./.config/wofi/style.css.nix ./.config/wofi/style.css.nix
./.config/waybar/style.css.nix ./.config/waybar/style.css.nix
./.config/gtk/settings.ini.nix
]; ];
} }

30
flake.lock generated
View file

@ -10,11 +10,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1762618334, "lastModified": 1770165109,
"narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=", "narHash": "sha256-9VnK6Oqai65puVJ4WYtCTvlJeXxMzAp/69HhQuTdl/I=",
"owner": "ryantm", "owner": "ryantm",
"repo": "agenix", "repo": "agenix",
"rev": "fcdea223397448d35d9b31f798479227e80183f6", "rev": "b027ee29d959fda4b60b57566d64c98a202e0feb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -73,11 +73,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767780135, "lastModified": 1770260404,
"narHash": "sha256-5SbmsLMgxzPd9YMbFR4IHfOXv6bjWs+dfl6IbSq3r7s=", "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "c08430923ed417abc653884328a39e98496cfd0f", "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -97,11 +97,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767801421, "lastModified": 1770641372,
"narHash": "sha256-z6+cVdgkJSz+MLUOChLDUZsiBP/h6tuAZSjVG+66jpo=", "narHash": "sha256-Vwc5X8QZEeVoJSy0i3SrLN/t8v17mCAirhlTVouUjd4=",
"owner": "KoenDR06", "owner": "KoenDR06",
"repo": "nix-hyprland", "repo": "nix-hyprland",
"rev": "4efff468c6435080b0716fd289ab7c06c4bb215f", "rev": "bd4b87ef132fd55dcfb446211bc9c83fef344285",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -112,11 +112,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1767634882, "lastModified": 1770464364,
"narHash": "sha256-2GffSfQxe3sedHzK+sTKlYo/NTIAGzbFCIsNMUPAAnk=", "narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3c9db02515ef1d9b6b709fc60ba9a540957f661c", "rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -136,11 +136,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767662275, "lastModified": 1769956244,
"narHash": "sha256-d5Q1GmQ+sW1Bt8cgDE0vOihzLaswsm8cSdg8124EqXE=", "narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=",
"owner": "pjones", "owner": "pjones",
"repo": "plasma-manager", "repo": "plasma-manager",
"rev": "51816be33a1ff0d4b22427de83222d5bfa96d30e", "rev": "fe54ea85c6e4413fba03b84d50f2b431d2f7c831",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -22,6 +22,7 @@
nix-hyprland = { nix-hyprland = {
url = "github:KoenDR06/nix-hyprland"; url = "github:KoenDR06/nix-hyprland";
# url = "path:/home/horseman/Programming/nix-hyprland";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager"; inputs.home-manager.follows = "home-manager";
}; };
@ -58,7 +59,8 @@
in { in {
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra); formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
nixosConfigurations = nixpkgs.lib.genAttrs hosts (host: nixosConfigurations = nixpkgs.lib.genAttrs hosts (
host:
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
specialArgs = { specialArgs = {
inherit inputs outputs lib; inherit inputs outputs lib;
@ -74,6 +76,7 @@
home-manager.sharedModules = [plasma-manager.homeModules.plasma-manager]; home-manager.sharedModules = [plasma-manager.homeModules.plasma-manager];
} }
]; ];
}); }
);
}; };
} }

View file

@ -13,6 +13,7 @@
y = 0; y = 0;
bar = "top"; bar = "top";
scale = 1.175; # Idk why hyprland doesn't think 1.25 is invalid but whatever. scale = 1.175; # Idk why hyprland doesn't think 1.25 is invalid but whatever.
wallpaper = ../../misc/wallpaper.png;
} }
]; ];
}; };

View file

@ -32,7 +32,7 @@
timers = { timers = {
backup.enable = true; backup.enable = true;
rooms.enable = false; rooms.enable = true;
}; };
}; };
} }

View file

@ -11,6 +11,8 @@
x = 0; x = 0;
y = 0; y = 0;
wallpaper = ../../misc/landscape.png; wallpaper = ../../misc/landscape.png;
refreshRate = "165";
resolution = "2560x1440";
} }
{ {
output = "DP-3"; output = "DP-3";
@ -19,6 +21,8 @@
transform = 1; transform = 1;
wallpaper = ../../misc/portrait.png; wallpaper = ../../misc/portrait.png;
bar = "top"; bar = "top";
refreshRate = "165";
resolution = "2560x1440";
} }
]; ];
bindWorkspaces = "interlaced"; bindWorkspaces = "interlaced";

View file

@ -1,15 +1,17 @@
#!/run/current-system/sw/bin/zsh #!/run/current-system/sw/bin/zsh
now=$(date +'%Y-%m-%d')
# Documents # Documents
cd /home/horseman cd /home/horseman
tar -cf backups/documents.tar Documents tar -cf backups/documents-$now.tar Documents
# Vaultwarden # Vaultwarden
cd /home/horseman cd /home/horseman
tar -cf backups/vaultwarden.tar docker/vaultwarden/data tar -cf backups/vaultwarden-$now.tar docker/vaultwarden/data
# Forgejo # Forgejo
cd /home/horseman cd /home/horseman
tar -cf backups/git.tar docker/git/data tar -cf backups/git-$now.tar docker/git/data
exit 0 exit 0

View file

Before

Width:  |  Height:  |  Size: 2 MiB

After

Width:  |  Height:  |  Size: 2 MiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2 MiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

Before After
Before After

View file

@ -1,11 +1,8 @@
cmds=('shutdown now' 'reboot' 'hyprlock' 'hyprctl dispatch exit') cmds=('shutdown now' 'reboot' 'hyprlock' 'hyprctl dispatch exit')
count=${#cmds[@]} count=${#cmds[@]}
default=15
lines=$((count > default ? default : count)) a=$(printf ' Shut down\n Reboot\n Lock\n Log out' | fuzzel --cache /dev/null --dmenu --index --minimal-lines -l $count --placeholder "Power action: " -I)
a=$(printf ' Shut down\n Reboot\n Lock\n Log out' | fuzzel --cache /dev/null --dmenu --index --lines $lines --placeholder "Power action: " -I)
if [ -n "$a" ]; then if [ -n "$a" ]; then
${cmds[a]} ${cmds[a]}

View file

@ -3,11 +3,8 @@ mapfile -t ids < <(wpctl status | sed -n '/Audio/,/Video/p' | sed -n '/├─ Si
mapfile -t sinks < <(wpctl status | sed -n '/Audio/,/Video/p' | sed -n '/├─ Sinks:/,/├─ Sources:/p' | tail -n +2 | head -n -2 | sed -r 's/^........//' | sed -r 's/[0-9]+\. //') mapfile -t sinks < <(wpctl status | sed -n '/Audio/,/Video/p' | sed -n '/├─ Sinks:/,/├─ Sources:/p' | tail -n +2 | head -n -2 | sed -r 's/^........//' | sed -r 's/[0-9]+\. //')
count=${#ids[@]} count=${#ids[@]}
default=15
lines=$((count > default ? default : count)) a=$(printf '%s\n' "${sinks[@]}" | fuzzel --cache /dev/null --dmenu --index --minimal-lines -l $count --placeholder "Switch audio source: " -I)
a=$(printf '%s\n' "${sinks[@]}" | fuzzel --cache /dev/null --dmenu --index --lines $lines --placeholder "Switch audio source: " -I)
if [ -n "$a" ]; then if [ -n "$a" ]; then
wpctl set-default ${ids[a]} wpctl set-default ${ids[a]}

BIN
misc/wallpaper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View file

@ -27,6 +27,7 @@ in {
jetbrains.rider jetbrains.rider
jetbrains.rust-rover jetbrains.rust-rover
jetbrains.webstorm jetbrains.webstorm
libqalculate
mermaid-cli mermaid-cli
mono mono
nodejs_22 nodejs_22
@ -35,8 +36,10 @@ in {
quickemu quickemu
sqlite sqlite
sqlitebrowser sqlitebrowser
typst
xclip xclip
uv uv
zed-editor
haskellPackages.ghc haskellPackages.ghc
haskellPackages.cabal-install haskellPackages.cabal-install
@ -53,5 +56,10 @@ in {
# QuickEMU USB Support # QuickEMU USB Support
virtualisation.spiceUSBRedirection.enable = true; virtualisation.spiceUSBRedirection.enable = true;
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
dotnetCorePackages.sdk_9_0
];
}; };
} }

View file

@ -53,7 +53,6 @@ in {
sops sops
sxiv sxiv
termdown termdown
texliveTeTeX
tmux tmux
unzip unzip
wakeonlan wakeonlan

View file

@ -7,6 +7,7 @@ in {
settings = { settings = {
theme = "catppuccin_${flavor}"; theme = "catppuccin_${flavor}";
editor = { editor = {
completion-timeout = 5;
clipboard-provider = "wayland"; clipboard-provider = "wayland";
cursor-shape = { cursor-shape = {
normal = "block"; normal = "block";

View file

@ -2,7 +2,6 @@
inputs, inputs,
lib, lib,
config, config,
pkgs,
... ...
}: let }: let
inherit (lib) mkEnableOption mkIf; inherit (lib) mkEnableOption mkIf;
@ -22,11 +21,6 @@ in {
nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs); nix.registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
dotnetCorePackages.sdk_9_0
];
nix.nixPath = ["/etc/nix/path"]; nix.nixPath = ["/etc/nix/path"];
environment.etc = environment.etc =
lib.mapAttrs' lib.mapAttrs'

View file

@ -46,6 +46,10 @@ in {
pskRaw = "ext:psk_sticky"; pskRaw = "ext:psk_sticky";
}; };
"Woestgaafsecure" = {
pskRaw = "ext:psk_sticky";
};
"Utrecht University" = { "Utrecht University" = {
authProtocols = ["WPA-EAP"]; authProtocols = ["WPA-EAP"];
auth = '' auth = ''

View file

@ -5,138 +5,84 @@
}: let }: let
inherit (lib) mkIf; inherit (lib) mkIf;
cfg = config.horseman.wm.hyprland; cfg = config.horseman.wm.hyprland;
easeOut = {
startX = 0.23;
startY = 1.0;
endX = 0.32;
endY = 1.0;
};
easeInOut = {
startX = 0.65;
startY = 0.05;
endX = 0.36;
endY = 1.0;
};
linear = {
startX = 0.0;
startY = 0.0;
endX = 1.0;
endY = 1.0;
};
slowFade = {
startX = 0.4;
startY = 1.0;
endX = 0.4;
endY = 1.0;
};
in { in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
nix-hyprland = { nix-hyprland = {
animations = { animations = {
enabled = true; enabled = true;
beziers = [ animations = {
{ global = {
name = "easeOutQuint"; enabled = false;
startX = 0.23; };
startY = 1.0;
endX = 0.32;
endY = 1.0;
}
{
name = "easeInOutCubic";
startX = 0.65;
startY = 0.05;
endX = 0.36;
endY = 1.0;
}
{
name = "linear";
startX = 0.0;
startY = 0.0;
endX = 1.0;
endY = 1.0;
}
{
name = "almostLinear";
startX = 0.5;
startY = 0.5;
endX = 0.75;
endY = 1.0;
}
{
name = "quick";
startX = 0.15;
startY = 0.0;
endX = 0.1;
endY = 1.0;
}
];
animations = [ border = {
{ speed = 3;
name = "global"; curve = easeOut;
speed = 10.0; };
curve = "default";
} workspaces = {
{ speed = 3;
name = "border"; curve = easeInOut;
speed = 5.39; style = "slidefade 5%";
curve = "easeOutQuint"; };
}
{ specialWorkspace = {
name = "windows"; speed = 3;
speed = 4.79; curve = easeInOut;
curve = "easeOutQuint"; style = "slidefadevert 10%";
} };
{
name = "windowsIn"; fadeDpms = {
speed = 4.1; speed = 20;
curve = "easeOutQuint"; curve = slowFade;
style = "popin 87%"; };
}
{ windows = {
name = "windowsOut"; speed = 3;
speed = 1.49; curve = easeOut;
curve = "linear"; style = "gnomed";
style = "popin 87%"; };
}
{ layers = {
name = "fadeIn";
speed = 1.73;
curve = "almostLinear";
}
{
name = "fadeOut";
speed = 1.46;
curve = "almostLinear";
}
{
name = "fade";
speed = 3.03;
curve = "quick";
}
{
name = "layers";
speed = 3.81;
curve = "easeOutQuint";
}
{
name = "layersIn";
speed = 4.0;
curve = "easeOutQuint";
style = "fade";
}
{
name = "layersOut";
speed = 1.5; speed = 1.5;
curve = "linear"; curve = slowFade;
style = "fade"; style = "popin";
} };
{
name = "fadeLayersIn"; fadeLayers = {
speed = 1.79; speed = 1.5;
curve = "almostLinear"; curve = linear;
} };
{ fadeOut = {
name = "fadeLayersOut"; speed = 10;
speed = 1.39; curve = linear;
curve = "almostLinear"; };
} };
{
name = "workspaces";
speed = 1.94;
curve = "almostLinear";
style = "fade";
}
{
name = "workspacesIn";
speed = 1.21;
curve = "almostLinear";
style = "fade";
}
{
name = "workspacesOut";
speed = 1.94;
curve = "almostLinear";
style = "fade";
}
];
}; };
}; };
}; };

View file

@ -8,6 +8,9 @@
cfg = config.horseman.wm.hyprland; cfg = config.horseman.wm.hyprland;
colors = config.horseman.catppuccin.colors; colors = config.horseman.catppuccin.colors;
flavor = config.horseman.catppuccin.flavor;
cursorSize = 24;
in { in {
imports = [ imports = [
./options.nix ./options.nix
@ -40,9 +43,11 @@ in {
wl-clipboard # Clipboard wl-clipboard # Clipboard
fuzzel # Launcher fuzzel # Launcher
xdg-desktop-portal-hyprland # XDG Portal (needed but idk why) xdg-desktop-portal-hyprland # XDG Portal (needed but idk why)
catppuccin-cursors."${flavor}Dark" # Cursors
]; ];
horseman.hardware.keyd.enable = true; horseman.hardware.keyd.enable = true;
horseman.dots.gtk.enable = true;
nix-hyprland = { nix-hyprland = {
enable = true; enable = true;
@ -53,16 +58,17 @@ in {
"hyprpaper" "hyprpaper"
"systemctl --user start hyprpolkitagent" "systemctl --user start hyprpolkitagent"
"waybar" "waybar"
"hyprctl setcursor catppuccin-${flavor}-dark-cursors 24"
]; ];
env = [ env = [
{ {
name = "XCURSOR_SIZE"; name = "XCURSOR_SIZE";
value = "24"; value = toString cursorSize;
} }
{ {
name = "HYPRCURSOR_SIZE"; name = "HYPRCURSOR_SIZE";
value = "24"; value = toString cursorSize;
} }
]; ];
@ -72,7 +78,8 @@ in {
"float, initialTitle:^Picture-in-Picture$" "float, initialTitle:^Picture-in-Picture$"
"center, initialTitle:^Picture-in-Picture$" "center, initialTitle:^Picture-in-Picture$"
"size 33% 33%, initialTitle:^Picture-in-Picture$" "size 1280 720, initialTitle:^Picture-in-Picture$"
"opacity 1.0 override, initialTitle:^Picture-in-Picture$"
"float, initialClass:CImg" "float, initialClass:CImg"
"float, initialTitle:GLFW" "float, initialTitle:GLFW"
@ -141,6 +148,8 @@ in {
sensitivity = 0.0; sensitivity = 0.0;
touchpad.naturalScroll = true; touchpad.naturalScroll = true;
numlockByDefault = true; numlockByDefault = true;
touchpad.disableWhileTyping = true;
}; };
group = { group = {
@ -173,6 +182,7 @@ in {
monitors = { monitors = {
addDefault = true; addDefault = true;
defaultWallpaper = ../../../misc/default-wallpaper.jpg;
}; };
sleep = { sleep = {

View file

@ -136,7 +136,7 @@ in {
mods = ["SUPER" "SHIFT"]; mods = ["SUPER" "SHIFT"];
key = "S"; key = "S";
dispatcher = "exec"; dispatcher = "exec";
params = "hyprshot -m region --clipboard-only"; params = "pkill hyprshot || hyprshot -m region --clipboard-only";
} }
{ {
@ -474,7 +474,7 @@ in {
mods = []; mods = [];
key = "XF86AudioMute"; key = "XF86AudioMute";
dispatcher = "exec"; dispatcher = "exec";
params = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; params = "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0%";
} }
{ {
flags = ["e" "l"]; flags = ["e" "l"];