All my system configs and packages in one repo
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

cleanup, fix niri stuff

+194 -411
+93 -23
flake.lock
··· 16 16 "type": "github" 17 17 } 18 18 }, 19 + "flake-compat_2": { 20 + "locked": { 21 + "lastModified": 1733328505, 22 + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", 23 + "owner": "edolstra", 24 + "repo": "flake-compat", 25 + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", 26 + "type": "github" 27 + }, 28 + "original": { 29 + "owner": "edolstra", 30 + "repo": "flake-compat", 31 + "type": "github" 32 + } 33 + }, 19 34 "flake-parts": { 20 35 "inputs": { 21 36 "nixpkgs-lib": [ ··· 23 38 ] 24 39 }, 25 40 "locked": { 41 + "lastModified": 1748821116, 42 + "narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=", 43 + "owner": "hercules-ci", 44 + "repo": "flake-parts", 45 + "rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1", 46 + "type": "github" 47 + }, 48 + "original": { 49 + "owner": "hercules-ci", 50 + "repo": "flake-parts", 51 + "type": "github" 52 + } 53 + }, 54 + "flake-parts_2": { 55 + "inputs": { 56 + "nixpkgs-lib": "nixpkgs-lib" 57 + }, 58 + "locked": { 26 59 "lastModified": 1743550720, 27 60 "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", 28 61 "owner": "hercules-ci", ··· 68 101 "zon2nix": "zon2nix" 69 102 }, 70 103 "locked": { 71 - "lastModified": 1744620187, 72 - "narHash": "sha256-u+9UFyuC9lVLjVWpkdegoLPFsWMi66vLIAKlkfCqEYk=", 104 + "lastModified": 1747748847, 105 + "narHash": "sha256-0sJTOuoqVJEloAJDPq5vQaYVbmRffVqNbkVpI1hFKRA=", 73 106 "owner": "pluiedev", 74 107 "repo": "ghostty", 75 - "rev": "8029c72593a4668c06b77d02df8a5173eebe20b3", 108 + "rev": "4c50a4d487ab14b5f5cc6ed569c2b75e945d137f", 76 109 "type": "github" 77 110 }, 78 111 "original": { ··· 89 122 ] 90 123 }, 91 124 "locked": { 92 - "lastModified": 1746355589, 93 - "narHash": "sha256-LguszqsDBTtdBxblQTtN7vOAYmfoe43aHkB8aK1dChE=", 125 + "lastModified": 1747038076, 126 + "narHash": "sha256-vy+My+8yRRu0OG6XBEPDR8ebfrPS4iuruyQ1ZUyHq6s=", 94 127 "owner": "feel-co", 95 128 "repo": "hjem", 96 - "rev": "77b37eeb583d43e1c723119a69c906235174ce57", 129 + "rev": "7d674eaded6586554910e62baed5eadad6496315", 97 130 "type": "github" 98 131 }, 99 132 "original": { ··· 105 138 "hjem-rum": { 106 139 "inputs": { 107 140 "hjem": "hjem_2", 141 + "ndg": "ndg", 108 142 "nixpkgs": [ 109 143 "nixpkgs" 110 144 ], 111 145 "treefmt-nix": "treefmt-nix" 112 146 }, 113 147 "locked": { 114 - "lastModified": 1746649889, 115 - "narHash": "sha256-BPOqzm+PfrGul5XQm00bUayOp4G6w4FAx6SStXyZeUo=", 148 + "lastModified": 1748560478, 149 + "narHash": "sha256-QAJpQ9dM7bVTgual18gcrbbmLeWq923/i4AXI36oaVs=", 116 150 "owner": "snugnug", 117 151 "repo": "hjem-rum", 118 - "rev": "5dd596a204f3dfeb88803ab8c46bfa449a4b5805", 152 + "rev": "53e18bd453b93415f92d69c19756dae4080f1c36", 119 153 "type": "github" 120 154 }, 121 155 "original": { ··· 145 179 "type": "github" 146 180 } 147 181 }, 182 + "ndg": { 183 + "inputs": { 184 + "flake-compat": "flake-compat_2", 185 + "flake-parts": "flake-parts_2", 186 + "nixpkgs": [ 187 + "hjem-rum", 188 + "nixpkgs" 189 + ] 190 + }, 191 + "locked": { 192 + "lastModified": 1746459301, 193 + "narHash": "sha256-QcAaxXdcPMqY5IppLa9fHCq3Rzq597DQqq8s2fKuE0k=", 194 + "owner": "feel-co", 195 + "repo": "ndg", 196 + "rev": "2864a9901102a86db82157f72998809c570c36bb", 197 + "type": "github" 198 + }, 199 + "original": { 200 + "owner": "feel-co", 201 + "ref": "v2", 202 + "repo": "ndg", 203 + "type": "github" 204 + } 205 + }, 148 206 "nix-index-database": { 149 207 "inputs": { 150 208 "nixpkgs": [ ··· 152 210 ] 153 211 }, 154 212 "locked": { 155 - "lastModified": 1746330942, 156 - "narHash": "sha256-ShizFaJCAST23tSrHHtFFGF0fwd72AG+KhPZFFQX/0o=", 213 + "lastModified": 1748751003, 214 + "narHash": "sha256-i4GZdKAK97S0ZMU3w4fqgEJr0cVywzqjugt2qZPrScs=", 157 215 "owner": "nix-community", 158 216 "repo": "nix-index-database", 159 - "rev": "137fd2bd726fff343874f85601b51769b48685cc", 217 + "rev": "2860bee699248d828c2ed9097a1cd82c2f991b43", 160 218 "type": "github" 161 219 }, 162 220 "original": { ··· 167 225 }, 168 226 "nixos-hardware": { 169 227 "locked": { 170 - "lastModified": 1746621361, 171 - "narHash": "sha256-T9vOxEqI1j1RYugV0b9dgy0AreiZ9yBDKZJYyclF0og=", 228 + "lastModified": 1748634340, 229 + "narHash": "sha256-pZH4bqbOd8S+si6UcfjHovWDiWKiIGRNRMpmRWaDIms=", 172 230 "owner": "NixOS", 173 231 "repo": "nixos-hardware", 174 - "rev": "2ea3ad8a1f26a76f8a8e23fc4f7757c46ef30ee5", 232 + "rev": "daa628a725ab4948e0e2b795e8fb6f4c3e289a7a", 175 233 "type": "github" 176 234 }, 177 235 "original": { ··· 183 241 }, 184 242 "nixpkgs": { 185 243 "locked": { 186 - "lastModified": 1746663147, 187 - "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", 188 - "owner": "NixOS", 189 - "repo": "nixpkgs", 190 - "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", 244 + "lastModified": 1748769915, 245 + "narHash": "sha256-fY+Pv/vF9bIzgmG+u56ZzqmP+ALLtcHLc9Xp+44FvZc=", 246 + "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 247 + "type": "tarball", 248 + "url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre808478.910796cabe43/nixexprs.tar.xz" 249 + }, 250 + "original": { 251 + "type": "tarball", 252 + "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" 253 + } 254 + }, 255 + "nixpkgs-lib": { 256 + "locked": { 257 + "lastModified": 1743296961, 258 + "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=", 259 + "owner": "nix-community", 260 + "repo": "nixpkgs.lib", 261 + "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa", 191 262 "type": "github" 192 263 }, 193 264 "original": { 194 - "owner": "NixOS", 195 - "ref": "nixos-unstable", 196 - "repo": "nixpkgs", 265 + "owner": "nix-community", 266 + "repo": "nixpkgs.lib", 197 267 "type": "github" 198 268 } 199 269 },
+1 -1
flake.nix
··· 2 2 description = "Leah's NixOS configurations + more"; 3 3 4 4 inputs = { 5 - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 5 + nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"; 6 6 7 7 # NOTE: please keep this in alphabetical order. 8 8
+8 -2
modules/hjem-ctp/fcitx5.nix
··· 8 8 let 9 9 cfg = config.ctp.fcitx5; 10 10 format = pkgs.formats.iniWithGlobalSection { }; 11 + 12 + finalPackage = pkgs.catppuccin-fcitx5.override { 13 + inherit (cfg) withRoundedCorners; 14 + }; 11 15 in 12 16 { 13 - options.ctp.fcitx5 = ctp-lib.mkCatppuccinOptions "Fcitx5" { withAccent = true; }; 17 + options.ctp.fcitx5 = ctp-lib.mkCatppuccinOptions "Fcitx5" { withAccent = true; } // { 18 + withRoundedCorners = lib.mkEnableOption "rounded corners"; 19 + }; 14 20 15 21 config = lib.mkIf cfg.enable { 16 22 files.".local/share/fcitx5/themes/catppuccin-${cfg.flavor}-${cfg.accent}".source = 17 - "${pkgs.catppuccin-fcitx5}/share/fcitx5/themes/catppuccin-${cfg.flavor}-${cfg.accent}"; 23 + "${finalPackage}/share/fcitx5/themes/catppuccin-${cfg.flavor}-${cfg.accent}"; 18 24 19 25 files.".config/fcitx5/conf/classicui.conf".source = format.generate "fcitx5-classicui.conf" { 20 26 globalSection = {
-46
modules/hjem-ctp/plasma.nix
··· 1 - { 2 - config, 3 - lib, 4 - ctpLib, 5 - pkgs, 6 - ... 7 - }: 8 - let 9 - cfg = config.programs.plasma.catppuccin; 10 - cursorCfg = config.catppuccin.cursors; 11 - enable = cfg.enable && config.programs.plasma.enable; 12 - 13 - darkModeSettings = 14 - if cfg.flavor == "latte" then 15 - { 16 - lookAndFeel = "org.kde.breeze.desktop"; 17 - iconTheme = "breeze"; 18 - } 19 - else 20 - { 21 - lookAndFeel = "org.kde.breezedark.desktop"; 22 - iconTheme = "breeze-dark"; 23 - }; 24 - in 25 - { 26 - options.programs.plasma.catppuccin = ctpLib.mkCatppuccinOption { 27 - name = "Plasma"; 28 - accentSupport = true; 29 - }; 30 - 31 - config = lib.mkIf enable { 32 - home.packages = with pkgs; [ 33 - (catppuccin-kde.override { 34 - flavour = [ cfg.flavor ]; 35 - accents = [ cfg.accent ]; 36 - }) 37 - ]; 38 - 39 - programs.plasma.workspace = { 40 - theme = "default"; # Actually Catppuccin 41 - colorScheme = "Catppuccin${ctpLib.mkUpper cfg.flavor}${ctpLib.mkUpper cfg.accent}"; 42 - cursor.theme = lib.mkIf cursorCfg.enable "Catppuccin-${ctpLib.mkUpper cursorCfg.flavor}-${ctpLib.mkUpper cursorCfg.accent}-Cursors"; 43 - inherit (darkModeSettings) lookAndFeel iconTheme; 44 - }; 45 - }; 46 - }
-5
modules/hjem-ext/README.md
··· 1 - # `hm-plus` 2 - 3 - Given that home-manager apparently takes a million years to merge any PRs, I've decided to take matters into my own hand and add a bunch of home-manager compatible modules that I use. 4 - 5 - Maybe I will separate this out to a separate repo some time? Who knows
-5
packages/darkly-qt5/package.nix
··· 1 - { 2 - darkly, 3 - libsForQt5, 4 - }: 5 - darkly.override { qtPackages = libsForQt5; }
-72
packages/darkly/package.nix
··· 1 - { 2 - lib, 3 - stdenv, 4 - fetchFromGitHub, 5 - cmake, 6 - ninja, 7 - kdePackages, 8 - qtPackages ? kdePackages, 9 - gitUpdater, 10 - }: 11 - let 12 - qtMajorVersion = lib.versions.major qtPackages.qtbase.version; 13 - in 14 - stdenv.mkDerivation (finalAttrs: { 15 - pname = "darkly-qt${qtMajorVersion}"; 16 - version = "0.5.18"; 17 - 18 - src = fetchFromGitHub { 19 - owner = "Bali10050"; 20 - repo = "Darkly"; 21 - tag = "v${finalAttrs.version}"; 22 - hash = "sha256-IwN6eZusfeGIEtdubpJpp1wrzToi0Umwi9jbXc4AF90="; 23 - }; 24 - 25 - nativeBuildInputs = [ 26 - cmake 27 - ninja 28 - qtPackages.wrapQtAppsHook 29 - qtPackages.extra-cmake-modules 30 - ]; 31 - 32 - buildInputs = 33 - with qtPackages; 34 - [ 35 - qtbase 36 - kconfig 37 - kcoreaddons 38 - kcmutils 39 - kguiaddons 40 - ki18n 41 - kiconthemes 42 - kwindowsystem 43 - ] 44 - ++ lib.optionals (qtMajorVersion == "5") [ 45 - kirigami2 46 - ] 47 - ++ lib.optionals (qtMajorVersion == "6") [ 48 - kcolorscheme 49 - kdecoration 50 - kirigami 51 - ]; 52 - 53 - cmakeFlags = map (v: lib.cmakeBool "BUILD_QT${v}" (v == qtMajorVersion)) [ 54 - "5" 55 - "6" 56 - ]; 57 - 58 - passthru.updateScript = gitUpdater { rev-prefix = "v"; }; 59 - 60 - meta = 61 - { 62 - description = "Modern style for Qt applications (fork of Lightly)"; 63 - homepage = "https://github.com/Bali10050/Darkly"; 64 - changelog = "https://github.com/Bali10050/Darkly/releases/tag/v${finalAttrs.version}"; 65 - platforms = lib.platforms.linux; 66 - license = with lib.licenses; [ gpl2Plus ]; 67 - maintainers = with lib.maintainers; [ pluiedev ]; 68 - } 69 - // lib.optionalAttrs (qtMajorVersion == "6") { 70 - mainProgram = "darkly-settings6"; 71 - }; 72 - })
-5
packages/klassy-qt5/package.nix
··· 1 - { 2 - klassy, 3 - libsForQt5, 4 - }: 5 - klassy.override { qtPackages = libsForQt5; }
-87
packages/klassy/package.nix
··· 1 - { 2 - lib, 3 - stdenv, 4 - fetchFromGitHub, 5 - cmake, 6 - ninja, 7 - kdePackages, 8 - qtPackages ? kdePackages, 9 - gitUpdater, 10 - }: 11 - let 12 - qtMajorVersion = lib.versions.major qtPackages.qtbase.version; 13 - in 14 - stdenv.mkDerivation (finalAttrs: { 15 - pname = "klassy-qt${qtMajorVersion}"; 16 - version = "6.3.breeze6.3.5"; 17 - 18 - src = fetchFromGitHub { 19 - owner = "paulmcauley"; 20 - repo = "klassy"; 21 - tag = finalAttrs.version; 22 - hash = "sha256-psXlkTo11e1Yuk85pI1KTRHl0eVdXh0bXcYbnhTa7Qk="; 23 - }; 24 - 25 - nativeBuildInputs = [ 26 - cmake 27 - ninja 28 - qtPackages.extra-cmake-modules 29 - qtPackages.wrapQtAppsHook 30 - ]; 31 - 32 - buildInputs = 33 - with qtPackages; 34 - [ 35 - qtbase 36 - qtdeclarative 37 - qttools 38 - frameworkintegration 39 - kcmutils 40 - kdecoration 41 - kiconthemes 42 - kwindowsystem 43 - ] 44 - ++ lib.optionals (qtMajorVersion == "5") [ 45 - qtx11extras 46 - kconfigwidgets 47 - kirigami2 48 - ] 49 - ++ lib.optionals (qtMajorVersion == "6") [ 50 - qtsvg 51 - kcolorscheme 52 - kconfig 53 - kcoreaddons 54 - kdecoration 55 - kguiaddons 56 - ki18n 57 - kirigami 58 - kwidgetsaddons 59 - ]; 60 - 61 - cmakeFlags = map (v: lib.cmakeBool "BUILD_QT${v}" (v == qtMajorVersion)) [ 62 - "5" 63 - "6" 64 - ]; 65 - 66 - passthru.updateScript = gitUpdater { }; 67 - 68 - meta = 69 - { 70 - description = "Highly customizable binary Window Decoration, Application Style and Global Theme plugin for recent versions of the KDE Plasma desktop"; 71 - homepage = "https://github.com/paulmcauley/klassy"; 72 - platforms = lib.platforms.linux; 73 - license = with lib.licenses; [ 74 - bsd3 75 - cc0 76 - gpl2Only 77 - gpl2Plus 78 - gpl3Only 79 - gpl3Plus # KDE-Accepted-GPL 80 - mit 81 - ]; 82 - maintainers = with lib.maintainers; [ pluiedev ]; 83 - } 84 - // lib.optionalAttrs (qtMajorVersion == "6") { 85 - mainProgram = "klassy-settings"; 86 - }; 87 - })
-25
packages/meowpdf/package.nix
··· 1 - { 2 - rustPlatform, 3 - fetchFromGitHub, 4 - }: 5 - let 6 - version = "1.0.0"; 7 - in 8 - rustPlatform.buildRustPackage { 9 - pname = "meowpdf"; 10 - inherit version; 11 - 12 - src = fetchFromGitHub { 13 - owner = "monoamine11231"; 14 - repo = "meowpdf"; 15 - tag = "v${version}"; 16 - hash = "sha256-C5GqyZW0pDmBuaKM890hx2JZtkZqZx+x/RZFCPhpjho="; 17 - }; 18 - 19 - cargoHash = "sha256-hCGMm0ORKuyyWU5D9k+nthSwmq8ALz0qASLDaMiW30U="; 20 - 21 - nativeBuildInputs = [ 22 - rustPlatform.bindgenHook 23 - ]; 24 - } 25 -
+31 -4
systems/common.nix
··· 7 7 ... 8 8 }: 9 9 { 10 - system.stateVersion = "24.11"; 10 + system.stateVersion = "25.05"; 11 11 12 12 nix = { 13 13 # Add `n` as an alias of `nixpkgs` ··· 53 53 enable = true; 54 54 maxGenerations = 10; 55 55 enrollConfig = true; 56 + secureBoot.enable = true; 56 57 }; 57 58 efi.canTouchEfiVariables = true; 58 59 }; 59 60 60 61 # Silence NixOS Stage 1 logs, jump straight into plymouth 61 62 consoleLogLevel = 0; 62 - initrd.verbose = false; 63 + initrd = { 64 + verbose = false; 65 + systemd.enable = true; 66 + }; 63 67 plymouth.enable = true; 64 68 kernelParams = [ 65 69 "quiet" 66 70 "plymouth.use-simpledrm" 67 71 "i915.fastboot=1" 68 72 ]; 73 + 74 + tmp.useTmpfs = true; 69 75 }; 70 76 77 + # Make Nix use /var/tmp for building, so that 78 + # large files don't have to live in tmpfs 79 + systemd.services.nix-daemon.environment.TMPDIR = "/var/tmp"; 80 + 71 81 # Use native Wayland when possible 72 82 environment.variables = { 73 83 NIXOS_OZONE_WL = "1"; 74 - SDL_VIDEODRIVER = "wayland,x11"; 84 + 85 + # Some SDL 2 apps are very naughty and don't work nicely under Wayland 86 + SDL_VIDEODRIVER = "x11"; 87 + 88 + # SDL 3 should be able to use native Wayland just fine. 89 + SDL_VIDEO_DRIVER = "wayland"; 75 90 }; 76 91 77 92 services = { 93 + dbus.implementation = "broker"; 94 + fstrim.enable = true; 78 95 flatpak.enable = true; 79 96 udisks2.enable = true; 80 97 ··· 90 107 91 108 security.rtkit.enable = true; 92 109 93 - networking.networkmanager.enable = true; 110 + zramSwap = { 111 + enable = true; 112 + algorithm = "zstd"; 113 + }; 114 + 115 + networking.networkmanager = { 116 + enable = true; 117 + 118 + # Fuck wpa_supplicant 119 + wifi.backend = "iwd"; 120 + }; 94 121 95 122 system = { 96 123 # Thank @luishfonseca for this
+7 -5
users/leah/appearance.nix
··· 1 1 { 2 2 pkgs, 3 - lib, 4 3 ... 5 4 }: 6 5 let ··· 47 46 ctp = { 48 47 enable = true; 49 48 inherit flavor accent; 49 + 50 + # fcitx5.withRoundedCorners = true; 50 51 }; 51 52 52 53 packages = with pkgs; [ ··· 55 56 adwaita-icon-theme 56 57 ]; 57 58 58 - rum.programs.fish.earlyConfigFiles.ctp-eza = '' 59 - set -x LS_COLORS (${lib.getExe pkgs.vivid} generate catppuccin-${flavor}) 60 - ''; 59 + ext.programs.moar.settings.style = "catppuccin-${flavor}"; 60 + }; 61 61 62 - ext.programs.moar.settings.style = "catppuccin-${flavor}"; 62 + programs.vivid = { 63 + enable = true; 64 + theme = "catppuccin-${flavor}"; 63 65 }; 64 66 65 67 fonts = {
+2 -2
users/leah/default.nix
··· 34 34 i18n = { 35 35 defaultLocale = "en_US.UTF-8"; 36 36 extraLocales = [ 37 - "zh_CN.UTF-8" 38 - "de_DE.UTF-8" 37 + "zh_CN.UTF-8/UTF-8" 38 + "de_DE.UTF-8/UTF-8" 39 39 ]; 40 40 extraLocaleSettings.LC_TIME = "de_DE.UTF-8"; 41 41 };
+5
users/leah/presets/niri/config.kdl
··· 246 246 workspace "dev" 247 247 workspace "gaming" 248 248 249 + spawn-at-startup "waybar" 250 + spawn-at-startup "swaync" 251 + spawn-at-startup "xwayland-satellite" 252 + spawn-at-startup "fcitx5" 253 + spawn-at-startup "swayidle" 249 254 // TODO: I do not know why 1Pass doesn't work on Wayland 250 255 spawn-at-startup "1password --ozone-platform-hint=x11" 251 256 spawn-at-startup "ghostty"
-2
users/leah/presets/niri/gui-toolkits.nix
··· 9 9 qadwaitadecorations-qt6 10 10 ]; 11 11 12 - # Theme Qt apps via qt{5,6}ct + Darkly 13 - # TODO: Declaratively configure qt*ct 14 12 qt.enable = true; 15 13 environment.variables.QT_QPA_PLATFORMTHEME = "adwaita"; 16 14
+8 -43
users/leah/presets/niri/services.nix
··· 2 2 config, 3 3 pkgs, 4 4 lib, 5 - inputs, 6 5 ... 7 6 }: 8 7 let 9 - 10 - mkStartupService = run: { 11 - enable = true; 12 - wantedBy = [ "graphical-session.target" ]; 13 - partOf = [ "graphical-session.target" ]; 14 - after = [ "graphical-session.target" ]; 15 - serviceConfig = { 16 - ExecStart = run; 17 - Restart = "on-failure"; 18 - }; 19 - }; 20 - 21 8 swaylock-config = { 22 9 screenshots = true; 23 10 scaling = "fit"; ··· 45 32 datestr = "%e %b '%y / %a"; 46 33 }; 47 34 48 - swaylock' = pkgs.writeShellScript "swaylock-wrapped" '' 35 + swaylock' = pkgs.writeShellScript "swaylock" '' 49 36 ${lib.getExe pkgs.swaylock} -f ${lib.cli.toGNUCommandLineShell { } swaylock-config} 50 37 ''; 51 38 52 - swayidle' = pkgs.writeShellScript "swayidle-wrapped" '' 39 + swayidle' = pkgs.writeShellScriptBin "swayidle" '' 53 40 ${lib.getExe pkgs.swayidle} -w \ 54 41 timeout 300 ${swaylock'} \ 55 42 timeout 600 '${pkgs.niri} msg action power-off-monitors' \ ··· 60 47 ''; 61 48 in 62 49 { 63 - systemd.packages = with pkgs; [ 64 - waybar 65 - swaynotificationcenter 66 - xwayland-satellite 50 + hjem.users.leah.packages = [ 51 + swayidle' 67 52 ]; 68 53 69 - hjem.users.leah.files = { 70 - ".config/systemd/user/default.target.wants/swaync.service".source = 71 - "${pkgs.swaynotificationcenter}/lib/systemd/user/swaync.service"; 72 - ".config/systemd/user/default.target.wants/xwayland-satellite.service".source = 73 - "${pkgs.xwayland-satellite}/lib/systemd/user/xwayland-satellite.service"; 74 - ".config/systemd/user/default.target.wants/waybar.service".source = 75 - "${pkgs.waybar}/lib/systemd/user/waybar.service"; 54 + security = { 55 + polkit.enable = true; 56 + soteria.enable = true; 76 57 }; 77 - 78 - systemd.user.services = { 79 - # waybar.serviceConfig.ExecReload = 80 - 81 - polkit-gnome-authentication-agent-1 = mkStartupService "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; 82 - 83 - swaybg = mkStartupService "${lib.getExe pkgs.swaybg} -i ${../../wallpaper.jpg}"; 84 - 85 - fcitx5 = lib.mkIf (config.i18n.inputMethod.type == "fcitx5") ( 86 - mkStartupService (lib.getExe config.i18n.inputMethod.package) 87 - ); 88 - 89 - swayidle = mkStartupService swayidle'; 90 - }; 91 - 92 - security.polkit.enable = true; 93 - 58 + 94 59 # Needed by the Waybar config 95 60 services.power-profiles-daemon.enable = true; 96 61
-8
users/leah/programs/default.nix
··· 19 19 ]; 20 20 21 21 programs = { 22 - gamemode.enable = true; 23 22 localsend.enable = true; 24 23 nix-index-database.comma.enable = true; 25 - }; 26 - 27 - services.spice-webdavd.enable = true; 28 - virtualisation = { 29 - libvirtd.enable = true; 30 - spiceUSBRedirection.enable = true; 31 24 }; 32 25 33 26 hjem.users.leah = { ··· 38 31 vlc 39 32 thunderbird 40 33 telegram-desktop 41 - gnome-boxes 42 34 43 35 # Command-line apps 44 36 just
+4 -2
users/leah/programs/ghostty.nix
··· 27 27 # Massively improves the nvim experience 28 28 mouse-hide-while-typing = true; 29 29 30 - quick-terminal-size = "20%,80%"; 30 + quick-terminal-size = "30%"; 31 31 quick-terminal-autohide = true; 32 32 33 33 keybind = [ ··· 35 35 "ctrl+shift+down=new_split:down" 36 36 "ctrl+shift+left=new_split:left" 37 37 "ctrl+shift+right=new_split:right" 38 - "global:ctrl+grave_accent=toggle_quick_terminal" 38 + "alt+shift+left=next_tab" 39 + "alt+shift+right=previous_tab" 40 + "global:ctrl+backquote=toggle_quick_terminal" 39 41 ]; 40 42 }; 41 43 };
-46
users/leah/programs/rust/default.nix
··· 1 - { 2 - config, 3 - pkgs, 4 - lib, 5 - ... 6 - }: 7 - { 8 - roles.rust = { 9 - # enable = true; 10 - settings = { 11 - build.rustc-wrapper = lib.getExe' pkgs.sccache "sccache"; 12 - build.target-dir = "${config.roles.base.user.home}/.cargo/target"; 13 - }; 14 - rustfmt.settings = { 15 - edition = "2021"; # In rare circumstances where rustfmt can't detect Cargo settings 16 - version = "Two"; 17 - 18 - # There are simply way too few stable options. 19 - unstable_options = true; 20 - 21 - # The objectively correct way 22 - hard_tabs = true; 23 - tab_spaces = 4; 24 - newline_style = "Unix"; 25 - 26 - # Imports 27 - imports_layout = "HorizontalVertical"; 28 - imports_granularity = "Crate"; 29 - group_imports = "StdExternalCrate"; 30 - 31 - # Enable formatting things that aren't usually formatted 32 - wrap_comments = true; 33 - format_code_in_doc_comments = true; 34 - format_macro_matchers = true; 35 - format_strings = true; 36 - 37 - # Minutiae 38 - hex_literal_case = "Lower"; 39 - normalize_comments = true; 40 - normalize_doc_attributes = true; 41 - overflow_delimited_expr = true; 42 - reorder_impl_items = true; 43 - use_field_init_shorthand = true; 44 - }; 45 - }; 46 - }
-19
users/leah/programs/treefmt.nix
··· 1 - { 2 - projectRootFile = "flake.nix"; 3 - 4 - programs = { 5 - biome.enable = true; 6 - black.enable = true; 7 - clang-format.enable = true; 8 - # fish-indent 9 - fourmolu.enable = true; 10 - just.enable = true; 11 - rustfmt.enable = true; 12 - shfmt.enable = true; 13 - stylua.enable = true; 14 - zig.enable = true; 15 - 16 - nixfmt.enable = true; 17 - statix.enable = true; 18 - }; 19 - }
+35 -9
users/leah/programs/vcs.nix
··· 10 10 watchman 11 11 ]; 12 12 13 + hjem.users.leah.environment.sessionVariables.DFT_DISPLAY = "inline"; 14 + 13 15 hjem.users.leah.ext.programs = { 14 16 git = { 15 17 enable = true; 16 18 settings = { 17 - diff.external = "${lib.getExe pkgs.difftastic} --color auto --background light --display side-by-side"; 19 + diff.external = lib.getExe pkgs.difftastic; 18 20 19 21 init.defaultBranch = "main"; 20 22 push.autoSetupRemote = true; ··· 36 38 name = "Leah Amelia Chen"; 37 39 email = "hi@pluie.me"; 38 40 }; 41 + 39 42 ui = { 40 43 default-command = [ "log" ]; 41 - diff.tool = [ 42 - "${lib.getExe pkgs.difftastic}" 43 - "--color=always" 44 - "$left" 45 - "$right" 46 - ]; 44 + diff.tool = "difft"; 47 45 pager = "${lib.getExe pkgs.moar} -no-linenumbers"; 48 46 log-word-wrap = true; 49 47 }; 48 + 49 + aliases = { 50 + tug = [ 51 + "bookmark" 52 + "move" 53 + "--from" 54 + "closest_bookmark(@-)" 55 + "--to" 56 + "closest_pushable(@-)" 57 + ]; 58 + }; 59 + 60 + revsets = { 61 + log = "current()"; 62 + short-prefixes = "current()"; 63 + }; 64 + 65 + revset-aliases = { 66 + "current()" = "(trunk()..@)::"; 67 + "closest_bookmark(to)" = "heads(::to & bookmarks())"; 68 + "closest_pushable(to)" = 69 + "heads(::to & mutable() & ~description(exact:\"\") & (~empty() | merges()))"; 70 + }; 71 + 50 72 template-aliases = { 51 - "format_short_id(id)" = ''id.shortest(12).prefix() ++ "[" ++ id.shortest(12).rest() ++ "]"''; 73 + "format_short_id(id)" = ''id.shortest(12).prefix() ++ "'" ++ id.shortest(12).rest()''; 52 74 "format_timestamp(timestamp)" = "timestamp.ago()"; 53 - "format_short_signature(signature)" = "signature"; 75 + "commit_timestamp(commit)" = "commit.author().timestamp()"; 76 + "format_short_signature(signature)" = "signature.name()"; 54 77 }; 55 78 56 79 fix.tools = { ··· 69 92 git = { 70 93 sign-on-push = true; 71 94 private-commits = "description(glob:'wip:*')"; 95 + push-bookmark-prefix = "pluie/jj-"; 72 96 }; 73 97 74 98 core = { 75 99 fsmonitor = "watchman"; 76 100 watchman.register-snapshot-trigger = true; 77 101 }; 102 + 103 + snapshot.auto-track = ''~(root:".direnv" | root:".zig-cache" | root:"zig-out")''; 78 104 }; 79 105 }; 80 106 };