my nix flake.

things

vt3e.cat efc5ac70 34fe41f3

verified
+635 -108
assets/wallpapers/daisukerichard/001.jpg

This is a binary file and will not be displayed.

assets/wallpapers/daisukerichard/002.png

This is a binary file and will not be displayed.

assets/wallpapers/daisukerichard/003.png

This is a binary file and will not be displayed.

assets/wallpapers/daisukerichard/004.png

This is a binary file and will not be displayed.

assets/wallpapers/daisukerichard/005.png

This is a binary file and will not be displayed.

assets/wallpapers/daisukerichard/006.png

This is a binary file and will not be displayed.

+3
assets/wallpapers/daisukerichard/_attribution.txt
··· 1 + https://x.com/daisukerichard 2 + 3 + 001. https://x.com/daisukerichard/status/1496049731965165572/photo/1
+107 -38
flake.lock
··· 7 7 ] 8 8 }, 9 9 "locked": { 10 - "lastModified": 1755850042, 11 - "narHash": "sha256-YooO7k/ufm8KGVqSAV9edGkv3Cm07cvINSP478sWppo=", 10 + "lastModified": 1760084311, 11 + "narHash": "sha256-YpNNtvA8v28Gd3/PHXCABuBWOzR0K8CyQPga13LxBH0=", 12 12 "owner": "catppuccin", 13 13 "repo": "nix", 14 - "rev": "233b344b42072b30a00fef1d8bb9ffb73bf1af3d", 14 + "rev": "fa3a9d5f80ebfe7f4974bc1939f558690cc56359", 15 15 "type": "github" 16 16 }, 17 17 "original": { ··· 25 25 "nixpkgs-lib": "nixpkgs-lib" 26 26 }, 27 27 "locked": { 28 - "lastModified": 1754487366, 29 - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", 28 + "lastModified": 1759362264, 29 + "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", 30 30 "owner": "hercules-ci", 31 31 "repo": "flake-parts", 32 - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", 32 + "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", 33 33 "type": "github" 34 34 }, 35 35 "original": { ··· 38 38 "type": "github" 39 39 } 40 40 }, 41 + "flake-utils": { 42 + "inputs": { 43 + "systems": "systems_2" 44 + }, 45 + "locked": { 46 + "lastModified": 1731533236, 47 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 48 + "owner": "numtide", 49 + "repo": "flake-utils", 50 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 51 + "type": "github" 52 + }, 53 + "original": { 54 + "owner": "numtide", 55 + "repo": "flake-utils", 56 + "type": "github" 57 + } 58 + }, 41 59 "home-manager": { 42 60 "inputs": { 43 61 "nixpkgs": [ ··· 45 63 ] 46 64 }, 47 65 "locked": { 48 - "lastModified": 1755810213, 49 - "narHash": "sha256-QdenO8f0PTg+tC6HuSvngKcbRZA5oZKmjUT+MXKOLQg=", 66 + "lastModified": 1760239230, 67 + "narHash": "sha256-eqSP/BAbQwNTlQ/6yuK0yILzZAPNNj91gp6oIfVtu/E=", 50 68 "owner": "nix-community", 51 69 "repo": "home-manager", 52 - "rev": "6911d3e7f475f7b3558b4f5a6aba90fa86099baa", 70 + "rev": "c4aaddeaecc09554c92518fd904e3e84b497ed09", 53 71 "type": "github" 54 72 }, 55 73 "original": { ··· 70 88 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 71 89 }, 72 90 "locked": { 73 - "lastModified": 1755882102, 74 - "narHash": "sha256-K6+vEy7SmUoGgllnbAdP+gm4pHYwYgYdYPfBG5nLE14=", 91 + "lastModified": 1760121522, 92 + "narHash": "sha256-8SGgpcZsMZIqFU+J/1OwebC/px8sgx5YYHNw1XkBM98=", 75 93 "owner": "sodiboo", 76 94 "repo": "niri-flake", 77 - "rev": "8f3d1a85544b7e8d1fe577c01e32398fb47841e1", 95 + "rev": "17dbedb88a21142c41d120f139e2870bc56bb5f4", 78 96 "type": "github" 79 97 }, 80 98 "original": { ··· 86 104 "niri-stable": { 87 105 "flake": false, 88 106 "locked": { 89 - "lastModified": 1748151941, 90 - "narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", 107 + "lastModified": 1756556321, 108 + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", 91 109 "owner": "YaLTeR", 92 110 "repo": "niri", 93 - "rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", 111 + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", 94 112 "type": "github" 95 113 }, 96 114 "original": { 97 115 "owner": "YaLTeR", 98 - "ref": "v25.05.1", 116 + "ref": "v25.08", 99 117 "repo": "niri", 100 118 "type": "github" 101 119 } ··· 103 121 "niri-unstable": { 104 122 "flake": false, 105 123 "locked": { 106 - "lastModified": 1755879086, 107 - "narHash": "sha256-fUQ1iuR2/7UrHQ7LXRJ8a2DahcyTard4WvL/wQ18SII=", 124 + "lastModified": 1759395653, 125 + "narHash": "sha256-sv9J1z6CrTPf9lRJLyCN90fZVdQz7LFeX7pIlInH8BQ=", 108 126 "owner": "YaLTeR", 109 127 "repo": "niri", 110 - "rev": "2865ec3e47fa0b170f82f4beeefa56a5ea49d133", 128 + "rev": "ba6e5e082a79901dc89b0d49c5da1b769d652aec", 111 129 "type": "github" 112 130 }, 113 131 "original": { ··· 118 136 }, 119 137 "nixos-hardware": { 120 138 "locked": { 121 - "lastModified": 1755330281, 122 - "narHash": "sha256-aJHFJWP9AuI8jUGzI77LYcSlkA9wJnOIg4ZqftwNGXA=", 139 + "lastModified": 1760106635, 140 + "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", 123 141 "owner": "NixOS", 124 142 "repo": "nixos-hardware", 125 - "rev": "3dac8a872557e0ca8c083cdcfc2f218d18e113b0", 143 + "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", 126 144 "type": "github" 127 145 }, 128 146 "original": { ··· 134 152 }, 135 153 "nixpkgs": { 136 154 "locked": { 137 - "lastModified": 1755615617, 138 - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", 155 + "lastModified": 1760038930, 156 + "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", 139 157 "owner": "NixOS", 140 158 "repo": "nixpkgs", 141 - "rev": "20075955deac2583bb12f07151c2df830ef346b4", 159 + "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", 142 160 "type": "github" 143 161 }, 144 162 "original": { ··· 150 168 }, 151 169 "nixpkgs-lib": { 152 170 "locked": { 153 - "lastModified": 1753579242, 154 - "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", 171 + "lastModified": 1754788789, 172 + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", 155 173 "owner": "nix-community", 156 174 "repo": "nixpkgs.lib", 157 - "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", 175 + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", 158 176 "type": "github" 159 177 }, 160 178 "original": { ··· 165 183 }, 166 184 "nixpkgs-stable": { 167 185 "locked": { 168 - "lastModified": 1755704039, 169 - "narHash": "sha256-gKlP0LbyJ3qX0KObfIWcp5nbuHSb5EHwIvU6UcNBg2A=", 186 + "lastModified": 1759994382, 187 + "narHash": "sha256-wSK+3UkalDZRVHGCRikZ//CyZUJWDJkBDTQX1+G77Ow=", 170 188 "owner": "NixOS", 171 189 "repo": "nixpkgs", 172 - "rev": "9cb344e96d5b6918e94e1bca2d9f3ea1e9615545", 190 + "rev": "5da4a26309e796daa7ffca72df93dbe53b8164c7", 173 191 "type": "github" 174 192 }, 175 193 "original": { ··· 179 197 "type": "github" 180 198 } 181 199 }, 200 + "nixpkgs_2": { 201 + "locked": { 202 + "lastModified": 1759036355, 203 + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", 204 + "owner": "nixos", 205 + "repo": "nixpkgs", 206 + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", 207 + "type": "github" 208 + }, 209 + "original": { 210 + "owner": "nixos", 211 + "ref": "nixos-unstable", 212 + "repo": "nixpkgs", 213 + "type": "github" 214 + } 215 + }, 182 216 "root": { 183 217 "inputs": { 184 218 "catppuccin": "catppuccin", ··· 187 221 "niri": "niri", 188 222 "nixos-hardware": "nixos-hardware", 189 223 "nixpkgs": "nixpkgs", 190 - "spicetify-nix": "spicetify-nix" 224 + "spicetify-nix": "spicetify-nix", 225 + "vicinae": "vicinae" 191 226 } 192 227 }, 193 228 "spicetify-nix": { ··· 198 233 "systems": "systems" 199 234 }, 200 235 "locked": { 201 - "lastModified": 1755613017, 202 - "narHash": "sha256-QVT/L4QQr77IOq8z2L9atYIOZn78fwLfwDgbY/L+k50=", 236 + "lastModified": 1760243311, 237 + "narHash": "sha256-LNrok211+WWlMGWqpGPpnGcnWhyo5SfvMv62uDiLzoI=", 203 238 "owner": "Gerg-L", 204 239 "repo": "spicetify-nix", 205 - "rev": "df3f3ff6db7e1f553288592496f6293d32164d8a", 240 + "rev": "93f1d45e48191a0b24c5c15e5cf369566ff75be9", 206 241 "type": "github" 207 242 }, 208 243 "original": { ··· 226 261 "type": "github" 227 262 } 228 263 }, 264 + "systems_2": { 265 + "locked": { 266 + "lastModified": 1681028828, 267 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 268 + "owner": "nix-systems", 269 + "repo": "default", 270 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 271 + "type": "github" 272 + }, 273 + "original": { 274 + "owner": "nix-systems", 275 + "repo": "default", 276 + "type": "github" 277 + } 278 + }, 279 + "vicinae": { 280 + "inputs": { 281 + "flake-utils": "flake-utils", 282 + "nixpkgs": "nixpkgs_2" 283 + }, 284 + "locked": { 285 + "lastModified": 1760905782, 286 + "narHash": "sha256-3d9nWWbyL2X17pi85d6uzcBZzKEr3YG1wNo/2bTA2oE=", 287 + "owner": "vicinaehq", 288 + "repo": "vicinae", 289 + "rev": "8cc6e595c5fc487bf1658bb7be9578f073907ca7", 290 + "type": "github" 291 + }, 292 + "original": { 293 + "owner": "vicinaehq", 294 + "repo": "vicinae", 295 + "type": "github" 296 + } 297 + }, 229 298 "xwayland-satellite-stable": { 230 299 "flake": false, 231 300 "locked": { ··· 246 315 "xwayland-satellite-unstable": { 247 316 "flake": false, 248 317 "locked": { 249 - "lastModified": 1755491097, 250 - "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", 318 + "lastModified": 1759707084, 319 + "narHash": "sha256-0pkftKs6/LReNvxw7DVTN2AJEheZVgyeK0Aarbagi70=", 251 320 "owner": "Supreeeme", 252 321 "repo": "xwayland-satellite", 253 - "rev": "388d291e82ffbc73be18169d39470f340707edaa", 322 + "rev": "a9188e70bd748118b4d56a529871b9de5adb9988", 254 323 "type": "github" 255 324 }, 256 325 "original": {
+2
flake.nix
··· 29 29 url = "github:sodiboo/niri-flake"; 30 30 inputs.nixpkgs.follows = "nixpkgs"; 31 31 }; 32 + vicinae.url = "github:vicinaehq/vicinae"; 33 + 32 34 }; 33 35 34 36 outputs =
+1 -1
hosts/azalea/caddy.nix
··· 46 46 allVirtualHosts = pdsVirtualHosts // dsearchVhost // dproxyVhost; 47 47 in 48 48 { 49 - services.pds = { 49 + services.bluesky-pds = { 50 50 enable = true; 51 51 pdsadmin.enable = true; 52 52 environmentFiles = [
-1
hosts/azalea/networking.nix
··· 3 3 hostName = "azalea"; 4 4 wireless = { 5 5 enable = true; 6 - networks."vodafoneCFC194".psk = builtins.getEnv "WIFI_PSK"; 7 6 interfaces = [ "wlan0" ]; 8 7 }; 9 8 firewall = {
+1 -1
hosts/dahlia/default.nix
··· 31 31 32 32 environment.systemPackages = with pkgs; [ 33 33 pulseaudio 34 - libsForQt5.polkit-kde-agent 34 + kdePackages.polkit-kde-agent-1 35 35 wlroots 36 36 wl-clipboard 37 37 xwayland-satellite
-6
user/apps/default.nix
··· 14 14 foot 15 15 overskride 16 16 vscode-fhs 17 - craftos-pc 18 17 19 - lite-xl 20 18 vesktop 21 19 beeper 22 20 thunderbird 23 - nextcloud-client 24 21 keepassxc 25 - 26 - tidal-hifi 27 - high-tide 28 22 ]; 29 23 30 24 programs = {
+7 -2
user/apps/firefox.nix
··· 31 31 "sidebar.verticalTabs" = true; 32 32 33 33 "media.eme.enabled" = false; 34 + "widget.use-xdg-desktop-portal.file-picker" = true; 34 35 }; 35 36 36 37 bookmarks.force = true; ··· 49 50 } 50 51 { 51 52 name = "wiki"; 52 - url = "https://nixos.wiki/"; 53 + url = "https://wiki.nixos.org/wiki/NixOS_Wiki"; 53 54 } 54 55 { 55 - name = "nixpkgs"; 56 + name = "search"; 56 57 url = "https://search.nixos.org/packages"; 58 + } 59 + { 60 + name = "home manager options"; 61 + url = "https://home-manager-options.extranix.com/"; 57 62 } 58 63 { 59 64 name = "home manager options";
+5 -1
user/apps/firefox/default.nix
··· 2 2 programs.firefox = { 3 3 enable = true; 4 4 languagePacks = [ "en-GB" ]; 5 + home.file.".mozilla/firefox/willow/chrome/userChrome.css".text = builtins.readFile ./userChrome.css; 5 6 6 7 profiles."willow" = { 7 8 settings = { ··· 26 27 "sidebar.new-sidebar.has-used" = true; 27 28 "sidebar.position_start" = false; 28 29 "sidebar.revamp" = true; 29 - "sidebar.verticalTabs" = true; 30 + "sidebar.verticalTabs" = false; 31 + 32 + "devtools.chrome.enabled" = true; 33 + "devtools.debugger.remote-enabled" = true; 30 34 31 35 "media.eme.enabled" = false; 32 36 };
+6
user/apps/firefox/userChrome.css
··· 1 + #TabsToolbar { 2 + visibility: collapse; 3 + } 4 + #sidebar-panel-header { 5 + display: none !important; 6 + }
+1 -1
user/apps/vesktop/default.nix
··· 6 6 home.file = { 7 7 "${config.home.homeDirectory}/.config/vesktop/settings/settings.json".source = vesktopSettings; 8 8 "${config.home.homeDirectory}/.config/vesktop/settings/quickCss.css".text = '' 9 - @import url("https://catppuccin.github.io/discord/dist/catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}.theme.css"); 9 + @import url("file://${config.home.homeDirectory}/.config/catppuccin/current.discord.theme.css"); 10 10 ''; 11 11 }; 12 12 }
+7 -4
user/apps/zed.nix
··· 4 4 ... 5 5 }: 6 6 7 + let 8 + zed = pkgs.callPackage ../packages/zed-editor.nix { }; 9 + in 7 10 { 8 11 programs.zed-editor = { 9 12 enable = true; 13 + package = zed; 10 14 11 15 extensions = [ 12 16 "html" ··· 41 45 auto_update = false; 42 46 collaboration_panel.button = false; 43 47 44 - ui_font_family = "JetBrainsMono Nerd Font"; 45 - buffer_font_family = "JetBrainsMono Nerd Font"; 46 - buffer_font_size = 14; 48 + ui_font_family = "Maple Mono NF"; 49 + buffer_font_family = "Maple Mono NF"; 50 + buffer_font_size = 12; 47 51 48 52 languages = { 49 53 Nix.formatter.external = { ··· 76 80 ]; 77 81 }; 78 82 settings = { 79 - 80 83 server = { 81 84 extraEnv = { 82 85 RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
+18
user/desktop/default.nix
··· 4 4 ./waybar 5 5 ./niri 6 6 ./rofi.nix 7 + ./theme-service.nix 8 + ./wallpaper.nix 9 + ./portals.nix 7 10 ]; 11 + 12 + services.vicinae = { 13 + enable = true; 14 + autoStart = true; 15 + settings = { 16 + faviconService = "twenty"; 17 + font.size = 11; 18 + theme.name = "vicinae-dark"; 19 + window = { 20 + csd = true; 21 + opacity = 0.95; 22 + rounding = 10; 23 + }; 24 + }; 25 + }; 8 26 }
+21 -13
user/desktop/niri/default.nix
··· 79 79 spawn-at-startup = [ 80 80 { 81 81 command = [ 82 + "vicinae" 83 + "server" 84 + ]; 85 + } 86 + { 87 + command = [ 82 88 "sh" 83 89 "-c" 84 90 "'systemctl --user import-environment PATH && systemctl --user restart xdg-desktop-portal.service'" ··· 86 92 } 87 93 { command = [ "${pkgs.xwayland-satellite}/bin/xwayland-satellite" ]; } 88 94 { command = [ "swww-daemon" ]; } 89 - { command = [ "_wallpaper" ]; } 95 + { 96 + command = [ 97 + "_wallpaper" 98 + "-r" 99 + ]; 100 + } 90 101 { command = [ "firefox" ]; } 91 102 { command = [ "vesktop" ]; } 92 103 { command = [ "thunderbird" ]; } 93 104 { command = [ "foot" ]; } 94 105 { 95 106 command = [ 96 - "flatpak" 97 - "run" 98 - "com.github.neithern.g4music" 107 + "youtube-music" 99 108 ]; 100 109 } 101 110 { command = [ "zeditor" ]; } ··· 133 142 { 134 143 "Mod+T".action.spawn = "foot"; 135 144 "Mod+D".action.spawn = [ 136 - "${pkgs.rofi-wayland}/bin/rofi" 137 - "-show" 138 - "drun" 145 + "vicinae" 146 + "toggle" 139 147 ]; 140 148 "Mod+Tab".action.toggle-overview = { }; 141 149 ··· 169 177 "XF86AudioPlay".action.spawn = [ 170 178 "playerctl" 171 179 "play-pause" 172 - "-p" 173 - "com.github.neithern.g4music,spotify" 180 + "--ignore-player" 181 + "firefox" 174 182 ]; 175 183 "XF86AudioNext".action.spawn = [ 176 184 "playerctl" 177 185 "next" 178 - "-p" 179 - "com.github.neithern.g4music,spotify" 186 + "--ignore-player" 187 + "firefox" 180 188 ]; 181 189 "XF86AudioPrev".action.spawn = [ 182 190 "playerctl" 183 191 "previous" 184 - "-p" 185 - "com.github.neithern.g4music,spotify" 192 + "--ignore-player" 193 + "firefox" 186 194 ]; 187 195 "XF86AudioRaiseVolume".action.spawn = [ 188 196 "pactl"
+89
user/desktop/pano-scrobber.nix
··· 1 + { pkgs ? import <nixpkgs> {} 2 + , src ? . 3 + , jdk ? pkgs.openjdk17 4 + }: 5 + 6 + let 7 + lib = pkgs.lib; 8 + cleanedSrc = lib.cleanSource src; 9 + in 10 + 11 + pkgs.stdenv.mkDerivation rec { 12 + pname = "scrobble-desktop"; 13 + version = "0.1.0"; 14 + 15 + inherit cleanedSrc as src; 16 + 17 + # Tools needed for building and packaging 18 + nativeBuildInputs = [ 19 + pkgs.unzip 20 + pkgs.zip 21 + pkgs.gnumake 22 + pkgs.pkg-config 23 + pkgs.coreutils 24 + pkgs.git 25 + # If you want to create Windows installers via nsis, add pkgs.nsis here 26 + # pkgs.nsis 27 + ]; 28 + 29 + buildInputs = [ 30 + jdk 31 + ]; 32 + 33 + # Avoid running any distro tests shipped in the project 34 + doCheck = false; 35 + 36 + # Ensure reproducible-ish output 37 + SOURCE_DATE_EPOCH = "1600000000"; 38 + 39 + # build phase: use the gradle wrapper from the repo 40 + buildPhase = '' 41 + export JAVA_HOME=${jdk} 42 + export PATH="$JAVA_HOME/bin:$PATH" 43 + 44 + cd composeApp 45 + chmod +x ./gradlew 46 + 47 + ./gradlew --no-daemon packageUberJarForCurrentOS --stacktrace 48 + # ./gradlew --no-daemon packageUberJarForCurrentOS -x nativeImageTaskName 49 + ''; 50 + 51 + installPhase = '' 52 + mkdir -p $out 53 + 54 + # Copy the full gradle compose build directory so you can inspect outputs 55 + if [ -d composeApp/build ]; then 56 + cp -ra composeApp/build $out/build 57 + fi 58 + 59 + # Common produced artifacts live under various places; try a few likely ones: 60 + for p in \ 61 + composeApp/build/composeApp/outputs \ 62 + composeApp/build/libs \ 63 + composeApp/build/composeDesktop/* \ 64 + composeApp/build/* ; do 65 + if [ -e "$p" ]; then 66 + cp -ra "$p" $out/ || true 67 + fi 68 + done 69 + 70 + # If the Gradle task produced a distribution zip for the current OS, move it to $out 71 + find composeApp -type f \( -name '*uber*' -o -name '*.zip' -o -name '*.jar' \) -print -maxdepth 5 | while read f; do 72 + cp -a "$f" "$out/$(basename "$f")" || true 73 + done 74 + 75 + # Provide a simple wrapper to run the jar if found: 76 + if [ -f "$out"/*.jar ]; then 77 + echo "#!/bin/sh" > $out/run.sh 78 + echo "exec \"$JAVA_HOME/bin/java\" -jar \"\$0\" \"\$@\"" >> $out/run.sh 79 + chmod +x $out/run.sh || true 80 + fi 81 + ''; 82 + 83 + meta = with lib; { 84 + description = "Builds the Scrobble Compose desktop distribution (desktop package / uberjar)"; 85 + license = licenses.mit; # adjust to actual license 86 + maintainers = [ ]; 87 + platforms = platforms.unix; # Linux/macOS 88 + }; 89 + }
+14
user/desktop/portals.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = [ 5 + (pkgs.runCommandLocal "nautilus-portal" { } '' 6 + mkdir -p $out/share/xdg-desktop-portal/portals 7 + cat > $out/share/xdg-desktop-portal/portals/nautilus.portal <<EOF 8 + [portal] 9 + DBusName=org.gnome.Nautilus 10 + Interfaces=org.freedesktop.impl.portal.FileChooser 11 + EOF 12 + '') 13 + ]; 14 + }
+1 -1
user/desktop/rofi.nix
··· 3 3 { 4 4 programs.rofi = { 5 5 enable = true; 6 - package = pkgs.rofi-wayland; 6 + package = pkgs.rofi; 7 7 configPath = "/dev/null"; 8 8 }; 9 9
+5 -5
user/desktop/sway/binds.nix
··· 2 2 let 3 3 programs = { 4 4 term = "foot"; 5 - menu = "${pkgs.rofi-wayland}/bin/rofi -show drun"; 5 + menu = "${pkgs.rofi}/bin/rofi -show drun"; 6 6 screenshot = { 7 7 default = "~/.local/bin/_screenshot"; 8 8 simple = "~/.local/bin/_screenshot --radius 0 --padding 0 --no-shadow"; ··· 111 111 bindsym ${super}+Ctrl+d exec ${programs.screenshot.window} 112 112 113 113 # media 114 - bindsym --locked XF86AudioPlay exec playerctl play-pause 115 - bindsym --locked XF86AudioNext exec playerctl next 116 - bindsym --locked XF86AudioPrev exec playerctl previous 117 - bindsym --locked XF86AudioStop exec playerctl stop 114 + bindsym --locked XF86AudioPlay exec playerctl play-pause --ignore-player firefox 115 + bindsym --locked XF86AudioNext exec playerctl next --ignore-player firefox 116 + bindsym --locked XF86AudioPrev exec playerctl previous --ignore-player firefox 117 + bindsym --locked XF86AudioStop exec playerctl stop --ignore-player firefox 118 118 119 119 bindsym --locked XF86AudioPlay+Ctrl exec playerctl play-pause --ignore-player spotify,com.github.neithern.g4music 120 120 bindsym --locked XF86AudioNext+Ctrl exec playerctl next --ignore-player spotify,com.github.neithern.g4music
-1
user/desktop/sway/default.nix
··· 3 3 ./config.nix 4 4 ./binds.nix 5 5 ./theme.nix 6 - ./wallpaper.nix 7 6 ./autostart.nix 8 7 ./rules.nix 9 8 ];
+11 -2
user/desktop/sway/theme.nix
··· 6 6 }: 7 7 { 8 8 home.activation.downloadCatppuccinTheme = lib.hm.dag.entryAfter [ "writeBoundary" ] '' 9 - mkdir -p ~/.config/sway 10 - ${pkgs.curl}/bin/curl -o ~/.config/sway/_${config.catppuccin.flavor} https://raw.githubusercontent.com/catppuccin/i3/main/themes/catppuccin-${config.catppuccin.flavor} 9 + mkdir -p ${config.home.homeDirectory}/.config/sway 10 + mkdir -p ${config.home.homeDirectory}/.config/catppuccin 11 + 12 + ${pkgs.curl}/bin/curl -fsSL -o ${config.home.homeDirectory}/.config/sway/_catppuccin-latte https://raw.githubusercontent.com/catppuccin/i3/main/themes/catppuccin-latte 13 + ${pkgs.curl}/bin/curl -fsSL -o ${config.home.homeDirectory}/.config/sway/_catppuccin-mocha https://raw.githubusercontent.com/catppuccin/i3/main/themes/catppuccin-mocha 14 + 15 + ${pkgs.curl}/bin/curl -fsSL -o ${config.home.homeDirectory}/.config/catppuccin/catppuccin-latte-discord.theme.css https://catppuccin.github.io/discord/dist/catppuccin-latte-${config.catppuccin.accent}.theme.css 16 + ${pkgs.curl}/bin/curl -fsSL -o ${config.home.homeDirectory}/.config/catppuccin/catppuccin-mocha-discord.theme.css https://catppuccin.github.io/discord/dist/catppuccin-mocha-${config.catppuccin.accent}.theme.css 17 + 18 + ln -sf ${config.home.homeDirectory}/.config/sway/_catppuccin-${config.catppuccin.flavor} ${config.home.homeDirectory}/.config/sway/_catppuccin-current 19 + ln -sf ${config.home.homeDirectory}/.config/catppuccin/catppuccin-${config.catppuccin.flavor}-discord.theme.css ${config.home.homeDirectory}/.config/catppuccin/current.discord.theme.css 11 20 ''; 12 21 13 22 wayland.windowManager.sway.extraConfig = lib.mkAfter ''
-7
user/desktop/sway/wallpaper.nix
··· 1 - { ... }: 2 - { 3 - home.file."Pictures/Wallpapers" = { 4 - source = ../../../assets/wallpapers; 5 - recursive = true; 6 - }; 7 - }
+37
user/desktop/theme-service.nix
··· 1 + { config, ... }: 2 + 3 + { 4 + systemd.user.services.theme-switch-day = { 5 + Unit.description = "switch to day theme"; 6 + Install.wantedBy = [ "default.target" ]; 7 + serviceConfig = { 8 + Type = "oneshot"; 9 + ExecStart = "${config.home.homeDirectory}/.local/bin/_toggle-theme day"; 10 + }; 11 + }; 12 + 13 + systemd.user.timers.theme-switch-day = { 14 + Install.wantedBy = [ "timers.target" ]; 15 + timerConfig = { 16 + OnCalendar = "07:00"; 17 + Persistent = "true"; 18 + }; 19 + }; 20 + 21 + systemd.user.services.theme-switch-night = { 22 + Unit.description = "switch to night theme"; 23 + Install.wantedBy = [ "default.target" ]; 24 + serviceConfig = { 25 + Type = "oneshot"; 26 + ExecStart = "${config.home.homeDirectory}/.local/bin/_toggle-theme night"; 27 + }; 28 + }; 29 + 30 + systemd.user.timers.theme-switch-night = { 31 + Install.wantedBy = [ "timers.target" ]; 32 + timerConfig = { 33 + OnCalendar = "19:00"; 34 + Persistent = "true"; 35 + }; 36 + }; 37 + }
+4
user/desktop/wallpaper.nix
··· 1 + { ... }: 2 + { 3 + home.file."Pictures/Wallpapers".source = ../../assets/wallpapers; 4 + }
+45 -19
user/home.nix
··· 2 2 hostname, 3 3 pkgs, 4 4 lib, 5 + inputs, 5 6 ... 6 7 }: 7 8 let 8 9 isDesktop = hostname == "dahlia"; 9 10 in 10 11 { 11 - imports = 12 - [ 13 - ./packages 14 - ./programs 15 - ./scripts 16 - ] 17 - ++ ( 18 - if isDesktop then 19 - [ 20 - ./apps 21 - ./ctp.nix 22 - ./desktop 23 - ] 24 - else 25 - [ ] 26 - ); 12 + 13 + imports = [ 14 + ./packages 15 + ./programs 16 + ./scripts 17 + ] 18 + ++ ( 19 + if isDesktop then 20 + [ 21 + ./apps 22 + ./ctp.nix 23 + ./desktop 24 + inputs.vicinae.homeManagerModules.default 25 + ] 26 + else 27 + [ ] 28 + ); 27 29 28 30 programs.home-manager.enable = true; 29 31 ··· 41 43 }; 42 44 }; 43 45 sessionVariables = lib.mkIf isDesktop { 44 - XDG_DESKTOP_PORTAL = "wlr"; 46 + XDG_DESKTOP_PORTAL = "gnome"; 47 + GTK_USE_PORTAL = "1"; 45 48 }; 46 49 47 50 file.".ssh/allowed_signers".text = '' 48 51 willow ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPWD6wk95qNhk/36vEH34qIRp/TPCcQ+D+u5Xd9/N0m1 49 52 ''; 50 - 51 53 }; 52 54 53 55 dconf.settings = lib.mkIf isDesktop { ··· 62 64 name = "Adwaita-dark"; 63 65 package = pkgs.gnome-themes-extra; 64 66 }; 67 + gtk4.iconTheme = { 68 + package = pkgs.adwaita-icon-theme; 69 + name = "Adwaita"; 70 + }; 71 + gtk3.iconTheme = { 72 + package = pkgs.adwaita-icon-theme; 73 + name = "Adwaita"; 74 + }; 65 75 }; 66 76 67 - xdg.enable = true; 77 + xdg = { 78 + enable = true; 79 + portal.config = { 80 + niri = { 81 + "org.freedesktop.impl.portal.FileChooser" = "nautilus"; 82 + }; 83 + common = { 84 + default = [ 85 + "gnome" 86 + "gtk" 87 + ]; 88 + "org.freedesktop.impl.portal.FileChooser" = [ 89 + "nautilus" 90 + ]; 91 + }; 92 + }; 93 + }; 68 94 fonts.fontconfig.enable = true; 69 95 }
+2 -2
user/packages/bun-baseline.nix
··· 2 2 3 3 stdenv.mkDerivation rec { 4 4 pname = "bun-baseline"; 5 - version = "1.2.15"; 5 + version = "1.3.0"; 6 6 7 7 src = fetchzip { 8 8 url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64-baseline.zip"; 9 - sha256 = "sha256-qf4uvIhA5NScAIu4Xy5Qr+l5DwHpa+Y9exKR9oliW9s="; 9 + sha256 = "sha256-EET/Pjd7sJ93YMJzWm21KP72SI2WqU/9iB+GhqRXYLk="; 10 10 stripRoot = false; 11 11 }; 12 12
+9
user/packages/default.nix
··· 1 1 { pkgs, ... }: 2 + let 3 + customScrcpy = pkgs.callPackage ./scrcpy.nix { }; 4 + in 2 5 { 3 6 imports = [ 4 7 ./fonts.nix ··· 6 9 ]; 7 10 8 11 home.packages = with pkgs; [ 12 + typespec 9 13 zellij 10 14 dmenu 11 15 imagemagick 12 16 swww 13 17 waybar 14 18 waybar-mpris 19 + qtscrcpy 20 + customScrcpy 21 + appimage-run 22 + youtube-music 15 23 16 24 quickemu 17 25 grim 18 26 slurp 27 + filezilla 19 28 20 29 gdk-pixbuf 21 30 libwebp
+97
user/packages/scrcpy.nix
··· 1 + { 2 + lib, 3 + stdenv, 4 + fetchurl, 5 + fetchFromGitHub, 6 + makeWrapper, 7 + meson, 8 + ninja, 9 + pkg-config, 10 + runtimeShell, 11 + installShellFiles, 12 + 13 + android-tools, 14 + ffmpeg, 15 + libusb1, 16 + SDL2, 17 + 18 + pkgs, 19 + }: 20 + 21 + let 22 + version = "3.3.2"; 23 + # prebuilt_server = fetchurl { 24 + # name = "scrcpy-server"; 25 + # inherit version; 26 + # url = "https://github.com/Genymobile/scrcpy/releases/download/v${version}/scrcpy-server-v${version}"; 27 + # hash = "sha256-LuXKCGPvRA9bfHWFa7R1xSg9CoNZyzcLHBYTFP0p39k="; 28 + # }; 29 + scrcpyServer = pkgs.fetchurl { 30 + url = "https://tmp.rom1v.com/scrcpy/6362/1/scrcpy-server"; 31 + sha256 = "0qg78r5cik544ycrv567h3jh9qcbhnws0rdmnvw1fgcwss4rvw1j"; 32 + }; 33 + in 34 + stdenv.mkDerivation rec { 35 + pname = "scrcpy"; 36 + inherit version; 37 + 38 + src = fetchFromGitHub { 39 + owner = "Genymobile"; 40 + repo = "scrcpy"; 41 + tag = "v${version}"; 42 + hash = "sha256-rwEsJlYlOIdgQfniAXdE2sg0WdI1ZxWxZV6MTFQoueg="; 43 + }; 44 + 45 + postPatch = '' 46 + substituteInPlace app/src/display.c \ 47 + --replace "SDL_RENDERER_ACCELERATED" "SDL_RENDERER_ACCELERATED || SDL_RENDERER_SOFTWARE" 48 + ''; 49 + 50 + nativeBuildInputs = [ 51 + makeWrapper 52 + meson 53 + ninja 54 + pkg-config 55 + installShellFiles 56 + ]; 57 + 58 + buildInputs = [ 59 + ffmpeg 60 + SDL2 61 + libusb1 62 + ]; 63 + 64 + preConfigure = '' 65 + echo -n > server/meson.build 66 + ''; 67 + 68 + postInstall = '' 69 + mkdir -p "$out/share/scrcpy" 70 + ln -s "${scrcpyServer}" "$out/share/scrcpy/scrcpy-server" 71 + ln -s "${scrcpyServer}" "$out/share/scrcpy/scrcpy-server-2" 72 + 73 + # runtime dep on `adb` to push the server 74 + wrapProgram "$out/bin/scrcpy" --prefix PATH : "${android-tools}/bin" 75 + '' 76 + + lib.optionalString stdenv.hostPlatform.isLinux '' 77 + substituteInPlace $out/share/applications/scrcpy-console.desktop \ 78 + --replace "/bin/bash" "${runtimeShell}" 79 + ''; 80 + 81 + meta = { 82 + description = "Display and control Android devices over USB or TCP/IP"; 83 + homepage = "https://github.com/Genymobile/scrcpy"; 84 + changelog = "https://github.com/Genymobile/scrcpy/releases/tag/v${version}"; 85 + sourceProvenance = with lib.sourceTypes; [ 86 + fromSource 87 + binaryBytecode 88 + ]; 89 + license = lib.licenses.asl20; 90 + platforms = lib.platforms.unix; 91 + maintainers = with lib.maintainers; [ 92 + deltaevo 93 + ryand56 94 + ]; 95 + mainProgram = "scrcpy"; 96 + }; 97 + }
+77
user/packages/zed-editor.nix
··· 1 + { 2 + stdenv, 3 + fetchurl, 4 + lib, 5 + makeWrapper, 6 + alsa-lib, 7 + wayland, 8 + libxkbcommon, 9 + vulkan-loader, 10 + mesa, 11 + xkeyboard-config, 12 + ... 13 + }: 14 + 15 + stdenv.mkDerivation rec { 16 + pname = "zeditor"; 17 + version = "0.207.4"; 18 + 19 + src = fetchurl { 20 + url = "https://github.com/zed-industries/zed/releases/download/v${version}/zed-linux-x86_64.tar.gz"; 21 + sha256 = "sha256-maCJcN10gstetNdD4E8qxmlI5btgHhhKCpDCP5FV6xw="; 22 + }; 23 + 24 + nativeBuildInputs = [ makeWrapper ]; 25 + 26 + sourceRoot = "."; 27 + 28 + dontBuild = true; 29 + dontConfigure = true; 30 + 31 + installPhase = '' 32 + runHook preInstall 33 + mkdir -p $out/bin $out/libexec $out/lib $out/share 34 + 35 + # cp main lib 36 + cp -r zed.app/bin/* $out/bin/ 37 + cp -r zed.app/libexec/* $out/libexec/ 38 + 39 + cp -r zed.app/lib/* $out/lib/ 40 + 41 + # cp licenses and other shared files 42 + cp -r zed.app/share/* $out/share/ 43 + cp zed.app/licenses.md $out/share/ 44 + 45 + chmod +x $out/bin/zed 46 + if [ -f $out/libexec/zed-editor ]; then 47 + chmod +x $out/libexec/zed-editor 48 + fi 49 + 50 + wrapProgram $out/bin/zed \ 51 + --prefix LD_LIBRARY_PATH : $out/lib:${alsa-lib}/lib:${wayland}/lib:${libxkbcommon}/lib:${vulkan-loader}/lib:${mesa}/lib \ 52 + --set XKB_CONFIG_ROOT ${xkeyboard-config}/share/X11/xkb 53 + 54 + if [ -f $out/libexec/zed-editor ]; then 55 + wrapProgram $out/libexec/zed-editor \ 56 + --prefix LD_LIBRARY_PATH : $out/lib:${alsa-lib}/lib:${wayland}/lib:${libxkbcommon}/lib:${vulkan-loader}/lib:${mesa}/lib \ 57 + --set XKB_CONFIG_ROOT ${xkeyboard-config}/share/X11/xkb 58 + fi 59 + 60 + runHook postInstall 61 + ''; 62 + 63 + postInstall = '' 64 + substituteInPlace $out/share/applications/zed.desktop \ 65 + --replace "TryExec=zed" "TryExec=$out/bin/zed" \ 66 + --replace "Exec=zed %U" "Exec=$out/bin/zed %U" \ 67 + --replace "Exec=zed --new %U" "Exec=$out/bin/zed --new %U" 68 + ''; 69 + 70 + meta = with lib; { 71 + description = "A high-performance, multiplayer code editor"; 72 + homepage = "https://zed.dev"; 73 + platforms = [ "x86_64-linux" ]; 74 + license = licenses.mit; 75 + maintainers = with maintainers; [ willow ]; 76 + }; 77 + }
+63
user/scripts/toggle-theme.sh
··· 1 + #!/usr/bin/env bash 2 + set -euo pipefail 3 + 4 + HOME_DIR="${HOME}" 5 + SWAY_CATPP_DIR="${HOME_DIR}/.config/sway" 6 + CATPP_DIR="${HOME_DIR}/.config/catppuccin" 7 + 8 + usage() { 9 + cat >&2 <<EOF 10 + usage: $0 {day|night|latte|mocha|toggle} 11 + day -> light GTK + latte 12 + night -> dark GTK + mocha 13 + latte/mocha -> switch to specific flavor 14 + toggle -> toggle based on current symlink 15 + EOF 16 + exit 2 17 + } 18 + 19 + choose() { 20 + case "$1" in 21 + day) 22 + GTK_THEME="Adwaita" 23 + COLOR_SCHEME="prefer-light" 24 + FLAVOR="latte" 25 + ;; 26 + night) 27 + GTK_THEME="Adwaita-dark" 28 + COLOR_SCHEME="prefer-dark" 29 + FLAVOR="mocha" 30 + ;; 31 + latte|mocha) 32 + if [[ "$1" == "latte" ]]; then 33 + GTK_THEME="Adwaita" 34 + COLOR_SCHEME="prefer-light" 35 + else 36 + GTK_THEME="Adwaita-dark" 37 + COLOR_SCHEME="prefer-dark" 38 + fi 39 + FLAVOR="$1" 40 + ;; 41 + toggle) 42 + cur=$(readlink -f "${SWAY_CATPP_DIR}/_catppuccin-current" || true) 43 + if [[ "$cur" == *latte ]]; then 44 + choose night 45 + else 46 + choose day 47 + fi 48 + return 49 + ;; 50 + *) 51 + usage 52 + ;; 53 + esac 54 + } 55 + 56 + if [[ $# -lt 1 ]]; then usage; fi 57 + choose "$1" 58 + 59 + gsettings set org.gnome.desktop.interface color-scheme "${COLOR_SCHEME}" || true 60 + gsettings set org.gnome.desktop.interface gtk-theme "${GTK_THEME}" || true 61 + 62 + ln -sf "${SWAY_CATPP_DIR}/_catppuccin-${FLAVOR}" "${SWAY_CATPP_DIR}/_catppuccin-current" 63 + ln -sf "${CATPP_DIR}/catppuccin-${FLAVOR}-discord.theme.css" "${CATPP_DIR}/current.discord.theme.css"
+2 -3
user/scripts/wallpaper.sh
··· 21 21 done 22 22 23 23 mapping=$(mktemp) 24 - find ~/Pictures/Wallpapers -type f -name "*.jpg" -o -name "*.png" -o -name "*.webp" -o -name "*.jpeg" | while read -r path; do 24 + printf '%s\n' ~/Pictures/Wallpapers/**/*.{jpg,jpeg,png,webp} | while read -r path; do 25 25 rel="${path#"$HOME"/Pictures/Wallpapers/}" 26 26 dir=$(dirname "$rel") 27 27 file=$(basename "$rel") ··· 40 40 rm "$mapping" 41 41 [ -z "$wallpaper" ] && exit 1 42 42 else 43 - selected_pretty=$(cut -d'|' -f1 "$mapping" | rofi -dmenu -i -p "select wallpaper:" -lines 20) 43 + selected_pretty=$(cut -d'|' -f1 "$mapping" | rofi -dmenu -i -p "select wallpaper" -lines 20) 44 44 [ -z "$selected_pretty" ] && rm "$mapping" && exit 1 45 45 46 46 wallpaper=$(grep -F "$selected_pretty|" "$mapping" | head -n1 | cut -d'|' -f2-) ··· 50 50 51 51 hash=$(printf "%s|%s|%s" "$wallpaper" "$GRADIENT_HEIGHT" "$TRANSITION_BEZIER" | sha256sum | cut -d' ' -f1) 52 52 cached_wallpaper="$CACHE_DIR/$hash.png" 53 - 54 53 if [ ! -f "$cached_wallpaper" ]; then 55 54 width=$(identify -format "%w" "$wallpaper") 56 55