all repos — flake @ cad91f0d129f2bdedad0f4e49c0b5ce89d4078e1

got my cool flake

uhhh
vi did:web:vt3e.cat
Tue, 05 May 2026 17:27:35 +0100
commit

cad91f0d129f2bdedad0f4e49c0b5ce89d4078e1

parent

1acd902be2a85cadf6d517b2fe5afc1ab7593053

M .zed/settings.json.zed/settings.json

@@ -3,7 +3,8 @@ "languages": {

"Nix": { "formatter": { "external": { - "command": "nixfmt", + "command": "nix", + "arguments": ["fmt"], }, }, },
M flake.lockflake.lock

@@ -1,5 +1,43 @@

{ "nodes": { + "fenix": { + "inputs": { + "nixpkgs": [ + "ironbar", + "naersk", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1752475459, + "narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [

@@ -20,6 +58,66 @@ "repo": "home-manager",

"type": "github" } }, + "ironbar": { + "inputs": { + "flake-compat": "flake-compat", + "naersk": "naersk", + "nix-systems": "nix-systems", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777624245, + "narHash": "sha256-qOxwhKGU+M0Vk+MJ9yFjYTTlFiTyLLDwX7WDLnhv698=", + "owner": "JakeStanger", + "repo": "ironbar", + "rev": "4e0683afd830ecf4e438706d68fe2a59042790c2", + "type": "github" + }, + "original": { + "owner": "JakeStanger", + "repo": "ironbar", + "type": "github" + } + }, + "naersk": { + "inputs": { + "fenix": "fenix", + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777031541, + "narHash": "sha256-KZ4s1kolHXFQrRGlnB503gDcTrVQMhiczO+LvvwKEPg=", + "owner": "nix-community", + "repo": "naersk", + "rev": "5e73301621274c44798bf6c6211ed27fc2ced201", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "nix-systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, "nixos-hardware": { "locked": { "lastModified": 1777796046,

@@ -55,8 +153,26 @@ },

"root": { "inputs": { "home-manager": "home-manager", + "ironbar": "ironbar", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1752428706, + "narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "591e3b7624be97e4443ea7b5542c191311aa141d", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" } } },
M flake.nixflake.nix

@@ -7,6 +7,11 @@ home-manager = {

url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + + ironbar = { + url = "github:JakeStanger/ironbar"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs =

@@ -55,7 +60,10 @@ extraSpecialArgs = {

inherit inputs; hostname = "dahlia"; }; - modules = [ ./home/apr-dahlia.nix ]; + modules = [ + ./home/apr-dahlia.nix + inputs.ironbar.homeManagerModules.default + ]; }; # "willow@ivy" = home-manager.lib.homeManagerConfiguration {
M home/apr-dahlia.nixhome/apr-dahlia.nix

@@ -1,13 +1,24 @@

-{ pkgs, ... }: -let +{ pkgs, inputs, ... }: +let zed-editor = (pkgs.callPackage ../pkgs/zed.nix { }); bun = (pkgs.callPackage ../pkgs/bun.nix { }); + cliamp = (pkgs.callPackage ../pkgs/cliamp.nix { }); in { imports = [ ./common ./common/sway + ./common/ironbar + ./common/wallpaper.nix + + inputs.ironbar.homeManagerModules.default ]; + + dconf.settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + }; gtk = { enable = true;

@@ -35,6 +46,16 @@ XDG_DESKTOP_PORTAL = "gnome";

GTK_USE_PORTAL = "1"; }; + pointerCursor = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + size = 24; + x11 = { + enable = true; + defaultCursor = pkgs.bibata-cursors; + }; + }; + file.".ssh/allowed_signers".text = '' willow ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPWD6wk95qNhk/36vEH34qIRp/TPCcQ+D+u5Xd9/N0m1 did:web:vt3e.cat ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGDXt8vkpi9jOp9dCjoS8u0dC4fDdgb73w8z7VNI42FB

@@ -47,9 +68,11 @@ alacritty

ghostty firefox dmenu + thunderbird zed-editor bun + cliamp ]; }; -}+}
A home/common/ironbar/default.nix

@@ -0,0 +1,71 @@

+{ pkgs, ... }: +{ + programs.ironbar = { + enable = true; + systemd = true; + + config = { + position = "top"; + height = 24; + popup_autohide = false; + margin = { + top = 2; + left = 2; + right = 2; + }; + start = [ + { + type = "workspaces"; + } + { + type = "keyboard"; + icons = { + layout_map = { + "English (Colemak)" = "cm"; + "English (UK)" = "qw"; + }; + }; + } + ]; + center = [ + { + type = "music"; + player_type = "mpris"; + format = "{title} • {artist}"; + truncate = "end"; + icons = { + play = ""; + pause = ""; + }; + } + ]; + end = [ + { + type = "tray"; + } + { + type = "network_manager"; + icon_size = 14; + types_blacklist = [ + "loopback" + "bridge" + ]; + } + { + type = "volume"; + format = "{percentage}%"; + on_scroll_up = "${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_SINK@ 1%+"; + on_scroll_down = "${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_SINK@ 1%-"; + } + { + type = "clock"; + format = "%H:%M:%S"; + } + ]; + }; + + style = builtins.readFile (import ./style.nix { inherit pkgs; }); + package = pkgs.ironbar; + }; + +}
A home/common/ironbar/style.nix

@@ -0,0 +1,8 @@

+{ pkgs }: +pkgs.runCommand "ironbar-style.css" + { + nativeBuildInputs = [ pkgs.dart-sass ]; + } + '' + sass ${./style.scss} $out + ''
A home/common/ironbar/style.scss

@@ -0,0 +1,246 @@

+@use "sass:string" as str; + +@media (prefers-color-scheme: light) { + :root { + --red: #f57f82; + --orange: #f7a182; + --yellow: #f5d098; + --green: #cae0a7; + --aqua: #addeb9; + --skye: #ace0d4; + --blue: #b2cfed; + --purple: #d0bbf0; + --pink: #f3c0e5; + --text: #f8f9e8; + --subtext1: #adc9bc; + --subtext0: #96b4aa; + --overlay2: #839e9a; + --overlay1: #6f8788; + --overlay0: #58686d; + --surface2: #4a585c; + --surface1: #3d494d; + --surface0: #2d393d; + --base: #1d2428; + --mantle: #191e21; + --crust: #171c1f; + } +} + +@media (prefers-color-scheme: dark) { + :root { + --red: #c0696b; + --orange: #ca8c70; + --yellow: #cbae75; + --green: #a9be88; + --aqua: #91bb9c; + --skye: #8fbab5; + --blue: #8ca4bb; + --purple: #b19ac6; + --pink: #d0a3c3; + --text: #171c1f; + --subtext1: #415055; + --subtext0: #526469; + --overlay2: #63787d; + --overlay1: #758a90; + --overlay0: #879da4; + --surface2: #9cb2b8; + --surface1: #b4c6cc; + --surface0: #ced9e0; + --base: #e9ebf0; + --mantle: #e1e5ed; + --crust: #d6dbe9; + } +} + +/** gtkcss shims */ +@function lighter($colour) { + @return str.unquote("lighter(#{$colour})"); +} +@function darker($colour) { + @return str.unquote("darker(#{$colour})"); +} +@function shade($colour, $lightness) { + @return str.unquote("shade(#{$colour}, #{$lightness})"); +} +@function alpha($colour, $opacity) { + @return str.unquote("alpha(#{$colour}, #{$opacity})"); +} +@function mix($colour1, $colour2, $opacity) { + @return str.unquote("mix(#{$colour1}, #{$colour2}, #{$opacity})"); +} + +* { + all: unset; + font-family: "Maple Mono NF", monospace; + font-size: 14px; + line-height: 1; +} + +label, +.icon-box { + color: var(--fg, var(--text)); + font-size: inherit; +} + +#bar { + background-color: transparent; + padding-bottom: 0; +} + +.widget:not(.workspaces), +.workspaces .item, +.popup-music .controls button { + --bg: var(--crust); + --fg: var(--text); + margin: 0 2px; + padding: 3px 1.25rem; + padding-top: 6px; + padding-bottom: 6px; + background-color: var(--bg); + border-bottom: 3px solid shade(var(--subtext0), 0.4); + + &:hover { + background-color: shade(var(--bg), 1.2); + border-color: shade(var(--subtext0), 0.5); + } + + &:active { + background-color: shade(var(--bg), 0.9); + border-color: alpha(shade(var(--bg), 1.2), 0); + padding-bottom: 3px; + margin-top: 3px; + } +} + +.workspaces { + background-color: transparent; + + .item { + margin: 0; + --fg: var(--text); + + &.visible { + --bg: var(--skye); + --fg: var(--base); + } + + &.focused { + --bg: var(--purple); + --fg: var(--base); + } + + &.urgent { + --bg: var(--red); + --fg: var(--base); + } + } +} + +popover { + padding: 0.5rem; + background-color: var(--crust); + margin: 0.5rem; + border: 2px solid var(--overlay0); + + button { + padding: 0.2rem 0.5rem; + } +} + +.calendar { + border: 2px solid var(--surface0); + padding: 0; + + &-clock { + font-size: 2rem; + font-weight: bold; + margin-bottom: 0.5rem; + } + + header { + background-color: var(--surface0); + } + + grid { + background-color: var(--base); + } + + .day-name { + color: var(--text); + font-weight: bold; + background-color: alpha(var(--surface0), 0.5); + padding: 0.5rem 0.75rem; + } + + .day-number { + color: var(--subtext0); + + &:hover { + background-color: alpha(var(--purple), 0.2); + } + } + + .today { + background-color: var(--purple); + color: var(--base); + } +} + +scale > trough { + background-color: var(--overlay0); + border-radius: 1rem; + + > highlight { + border-style: solid; + border-color: var(--text); + border-width: 0.25rem; + border-radius: 1rem; + } + + > slider { + background-color: var(--color-white); + } +} + +.popup-music { + .progress { + .slider { + min-width: 256px; + } + + .label { + margin-left: 0.5rem; + color: var(--text); + } + } + + > .horizontal { + min-width: 256px; + + &:first-child > * { + margin-top: 0; + margin-bottom: -0.5rem; + } + } + + .volume { + min-width: 0.8em; + } + + .title { + font-size: 1.2rem; + font-weight: bold; + color: var(--text); + } + + .artist, + .album { + --fg: var(--subtext0); + font-size: 0.8rem; + } + + .controls button { + --bg: var(--base); + margin-left: 0; + } +}
M home/common/sway/binds.nixhome/common/sway/binds.nix

@@ -1,7 +1,7 @@

{ lib, pkgs, ... }: let programs = { - term = "ghostty"; + term = "foot"; menu = "dmenu_run"; };

@@ -10,7 +10,7 @@ i:

if lib.elem (lib.toInt i) [ 1 - 3 + 3 5 7 9

@@ -64,8 +64,10 @@ lib.mapAttrsToList (ws: output: "workspace ${ws} output ${output}") workspaces

)} input type:keyboard { - xkb_layout gb - xkb_options caps:ctrl_modifier, + xkb_layout gb,us + xkb_variant ,colemak + + xkb_options caps:ctrl_modifier,grp:win_space_toggle } # meow
M home/common/sway/rules.nixhome/common/sway/rules.nix

@@ -22,8 +22,6 @@ for_window [title = "Firefox - Sharing Indicator"] kill

for_window [title = "Firefox — Sharing Indicator"] kill for_window [title = "librewolf - Sharing Indicator"] kill for_window [title = "librewolf — Sharing Indicator"] kill - - for_window [app_id = "foot"] floating enable, resize set width 800px height 600px ''; }; }
M home/common/sway/theme.nixhome/common/sway/theme.nix

@@ -6,16 +6,11 @@ ...

}: { wayland.windowManager.sway.extraConfig = lib.mkAfter '' - gaps inner 4 + gaps inner 2 gaps outer 2 smart_gaps off default_border none default_floating_border none - - corner_radius 8 - default_dim_inactive 0.075 - - default_border pixel 1 ''; }
A home/common/wallpaper.nix

@@ -0,0 +1,5 @@

+{ + services.awww = { + enable = true; + }; +}
A home/common/waybar/default.nix

@@ -0,0 +1,71 @@

+{ pkgs, ... }: +{ + programs.waybar = { + enable = true; + systemd.enable = true; + style = builtins.readFile ./style.css; + + settings = { + mainBar = { + layer = "top"; + modules-left = [ + "sway/workspaces" + "sway/mode" + "sway/language" + "sway/scratchpad" + "keyboard-state" + ]; + modules-center = [ + "mpris" + ]; + modules-right = [ + "temperature" + "network" + "pulseaudio" + "clock" + "tray" + ]; + mpris = { + format = "{status_icon} {title} • {artist}"; + status-icons = { + playing = "▶"; + paused = "⏸"; + }; + max-length = 40; + }; + position = "top"; + "sway/language" = { + format = "{}"; + on-click = "${pkgs.sway}/bin/swaymsg input type:keyboard xkb_switch_layout next"; + }; + "sway/mode" = { + format = "<span style=\"italic\">{}</span>"; + }; + clock = { + format = "{:%H:%M}"; + format-alt = "{:%H:%M:%S}"; + tooltip-format = "{:%Y-%m-%d}"; + tooltip = true; + interval = 1; + }; + "sway/scratchpad" = { + format = "{icon} {count}"; + format-icons = [ + "" + "" + ]; + show-empty = false; + tooltip = true; + tooltip-format = "{app}: {title}"; + }; + "sway/workspaces" = { + all-outputs = false; + disable-scroll = true; + }; + }; + }; + + + + }; +}
A home/common/waybar/style.css

@@ -0,0 +1,76 @@

+@define-color red #f57f82; +@define-color orange #f7a182; +@define-color yellow #f5d098; +@define-color green #cae0a7; +@define-color aqua #addeb9; +@define-color skye #ace0d4; +@define-color blue #b2cfed; +@define-color purple #d0bbf0; +@define-color pink #f3c0e5; +@define-color text #f8f9e8; +@define-color subtext1 #adc9bc; +@define-color subtext0 #96b4aa; +@define-color overlay2 #839e9a; +@define-color overlay1 #6f8788; +@define-color overlay0 #58686d; +@define-color surface2 #4a585c; +@define-color surface1 #3d494d; +@define-color surface0 #2d393d; +@define-color base #1d2428; +@define-color mantle #191e21; +@define-color crust #171c1f; + +* { + all: unset; + font-family: "Jetbrains Mono NF", monospace; +} + +window#waybar { + background: transparent; + color: @text; +} + +.modules-left, +.modules-center, +.modules-right { + padding: 2px; + padding-bottom: 0; +} + +.module, +#workspaces button { + background: @base; + margin: 0 2px; + padding: 0 12px; +} +.module:hover, +#workspaces button:hover { + background: shade(@surface0, 1.05); +} + +#workspaces { + padding: 0; + background: transparent; +} +#workspaces:hover { + background: @base; +} + +#workspaces button { + margin: 0; + border: 2px solid transparent; +} +#workspaces button:active { + background: shade(@surface0, 0.9); +} + +#workspaces button.focused { + background: @skye; + color: @base; +} +#workspaces button.focused:hover { + background: shade(@skye, 1.2); +} +#workspaces button.focused:active { + background: shade(@skye, 0.9); +}
M hosts/common/default.nixhosts/common/default.nix

@@ -56,6 +56,18 @@ git

just jq + nixd + nil + nixfmt-tree + nixfmt + + sqlite + nmap + dig + uv + python + nodejs + # file unzip zip
M hosts/dahlia/default.nixhosts/dahlia/default.nix

@@ -5,14 +5,14 @@ ./hardware.nix

./programs.nix ./services.nix ../common/default.nix - + inputs.home-manager.nixosModules.home-manager ]; mods.desktop.enable = true; hardware = { - enableRedistributableFirmware = true; + enableRedistributableFirmware = true; graphics.enable = true; bluetooth.enable = true; };

@@ -23,7 +23,7 @@ loader = {

systemd-boot.enable = true; efi.canTouchEfiVariables = true; }; - }; + }; nix = { distributedBuilds = true;

@@ -61,6 +61,37 @@ useGlobalPkgs = true;

useUserPackages = true; }; + fonts = { + packages = with pkgs; [ + nerd-fonts.zed-mono + nerd-fonts.jetbrains-mono + maple-mono.NF + + noto-fonts + noto-fonts-cjk-sans + noto-fonts-color-emoji + ]; + + fontconfig = { + enable = true; + + defaultFonts = { + sansSerif = [ + "Noto Sans CJK JP" + "Noto Color Emoji" + ]; + serif = [ + "Noto Serif" + "Noto Serif CJK JP" + "Noto Color Emoji" + ]; + monospace = [ + "Maple Mono NF" + "Noto Sans Mono CJK JP" + ]; + }; + }; + }; networking = { networkmanager.enable = true;

@@ -69,7 +100,7 @@ firewall.enable = false;

}; virtualisation.docker = { - enable = true; + enable = false; rootless = { enable = true; setSocketVariable = true;
M hosts/dahlia/services.nixhosts/dahlia/services.nix

@@ -6,6 +6,7 @@ blueman.enable = true;

gvfs.enable = true; desktopManager.gnome.enable = true; + displayManager = { sessionPackages = with pkgs; [ sway

@@ -18,4 +19,3 @@ };

}; }; } -
M modules/desktop.nixmodules/desktop.nix

@@ -45,7 +45,7 @@

services = { flatpak.enable = true; gnome.gnome-keyring.enable = true; - mpd.enable = true; + # mpd.enable = true; printing.enable = true; };
A pkgs/cliamp.nix

@@ -0,0 +1,57 @@

+{ + lib, + stdenv, + fetchurl, + autoPatchelfHook, + makeWrapper, + alsa-lib, + ffmpeg, + yt-dlp, +}: + +stdenv.mkDerivation rec { + pname = "cliamp"; + version = "1.39.0"; + + src = fetchurl { + url = "https://github.com/bjarneo/cliamp/releases/download/v${version}/cliamp-linux-amd64"; + hash = "sha256-4FklR66sOkpVKi2xqm8Lpt8Y9PUTcu3vgzk55+Xc1XI="; + }; + + dontUnpack = true; + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = [ alsa-lib ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp $src $out/bin/cliamp + + chmod +x $out/bin/cliamp + + wrapProgram $out/bin/cliamp \ + --prefix PATH : ${ + lib.makeBinPath [ + ffmpeg + yt-dlp + ] + } + + runHook postInstall + ''; + + meta = with lib; { + description = "terminal music player"; + homepage = "https://github.com/bjarneo/cliamp"; + changelog = "https://github.com/bjarneo/cliamp/releases/tag/v${version}"; + license = licenses.mit; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + platforms = [ "x86_64-linux" ]; + mainProgram = "cliamp"; + }; +}