All my system configs and packages in one repo

lots of things

pluie.me 0b848851 8b3ab30b

verified
+364 -101
+1 -1
README.md
··· 1 - My Nix [flake](https://nixos.wiki/wiki/Flakes) containing all of my system configurations, userland settings, custom packages and more! 1 + My Nix [flake](https://wiki.nixos.org/wiki/Flakes) containing all of my system configurations, userland settings, custom packages and more!
+4 -4
flake.lock
··· 241 241 }, 242 242 "nixpkgs": { 243 243 "locked": { 244 - "lastModified": 1748769915, 245 - "narHash": "sha256-fY+Pv/vF9bIzgmG+u56ZzqmP+ALLtcHLc9Xp+44FvZc=", 246 - "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", 244 + "lastModified": 1751332518, 245 + "narHash": "sha256-BTVn9nIjhCeWpaxOs3Wbhwum4xID4p36dbmEfLDyh9Y=", 246 + "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", 247 247 "type": "tarball", 248 - "url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre808478.910796cabe43/nixexprs.tar.xz" 248 + "url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre823481.3016b4b15d13/nixexprs.tar.xz" 249 249 }, 250 250 "original": { 251 251 "type": "tarball",
+2 -3
modules/hjem-ctp/fish.nix
··· 18 18 }; 19 19 in 20 20 { 21 - options.ctp.fish = ctp-lib.mkCatppuccinOptions "Fish" {}; 21 + options.ctp.fish = ctp-lib.mkCatppuccinOptions "Fish" { }; 22 22 23 23 config = lib.mkIf cfg.enable { 24 - files.".config/fish/themes/${themeName}.theme".source = 25 - "${src}/themes/${themeName}.theme"; 24 + files.".config/fish/themes/${themeName}.theme".source = "${src}/themes/${themeName}.theme"; 26 25 27 26 rum.programs.fish.earlyConfigFiles.ctp-fish = '' 28 27 fish_config theme choose "${themeName}"
+1
modules/hjem-ext/default.nix
··· 5 5 ./programs/hyfetch.nix 6 6 ./programs/jujutsu.nix 7 7 ./programs/moar.nix 8 + ./programs/swaylock.nix 8 9 ./programs/vesktop.nix 9 10 ]; 10 11 }
+3 -2
modules/hjem-ext/programs/git.nix
··· 23 23 24 24 config = lib.mkIf cfg.enable { 25 25 packages = [ cfg.package ]; 26 - files.".config/git/config".source = lib.mkIf (cfg.settings != { }) 27 - (format.generate "git-config" cfg.settings); 26 + files.".config/git/config".source = lib.mkIf (cfg.settings != { }) ( 27 + format.generate "git-config" cfg.settings 28 + ); 28 29 }; 29 30 }
+3 -2
modules/hjem-ext/programs/jujutsu.nix
··· 23 23 24 24 config = lib.mkIf cfg.enable { 25 25 packages = [ cfg.package ]; 26 - files.".config/jj/config.toml".source = lib.mkIf (cfg.settings != { }) 27 - (format.generate "jj-config.toml" cfg.settings); 26 + files.".config/jj/config.toml".source = lib.mkIf (cfg.settings != { }) ( 27 + format.generate "jj-config.toml" cfg.settings 28 + ); 28 29 }; 29 30 }
+17 -13
modules/hjem-ext/programs/moar.nix
··· 7 7 let 8 8 cfg = config.ext.programs.moar; 9 9 10 - toFlag = k: v: if lib.isBool v then 11 - lib.optionalString (v) "-${k}" 12 - else if lib.isString v then 13 - "-${k}=${v}" 14 - else 15 - throw "Unsupported type"; 16 - 10 + toFlag = 11 + k: v: 12 + if lib.isBool v then 13 + lib.optionalString (v) "-${k}" 14 + else if lib.isString v then 15 + "-${k}=${v}" 16 + else 17 + throw "Unsupported type"; 18 + 17 19 in 18 20 { 19 21 options.ext.programs.moar = { 20 22 enable = lib.mkEnableOption "Moar"; 21 23 22 - package = lib.mkPackageOption pkgs "moar" {}; 24 + package = lib.mkPackageOption pkgs "moar" { }; 23 25 24 26 settings = lib.mkOption { 25 27 type = lib.types.submodule { 26 - freeformType = with lib.types; attrsOf (oneOf [ 27 - str 28 - bool 29 - ]); 28 + freeformType = 29 + with lib.types; 30 + attrsOf (oneOf [ 31 + str 32 + bool 33 + ]); 30 34 }; 31 - default = {}; 35 + default = { }; 32 36 }; 33 37 }; 34 38
+51
modules/hjem-ext/programs/swaylock.nix
··· 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: 7 + let 8 + cfg = config.ext.programs.swaylock; 9 + 10 + finalPackage = pkgs.writeShellApplication { 11 + name = "swaylock"; 12 + runtimeInputs = [ cfg.package ]; 13 + text = '' 14 + exec swaylock ${lib.cli.toGNUCommandLineShell { } cfg.settings} "$@" 15 + ''; 16 + }; 17 + in 18 + { 19 + options.ext.programs.swaylock = { 20 + enable = lib.mkEnableOption "Swaylock"; 21 + 22 + package = lib.mkPackageOption pkgs "swaylock" { }; 23 + 24 + finalPackage = lib.mkOption { 25 + type = lib.types.package; 26 + readOnly = true; 27 + default = finalPackage; 28 + description = '' 29 + The final package after all options have been applied. 30 + ''; 31 + }; 32 + 33 + settings = lib.mkOption { 34 + type = lib.types.submodule { 35 + freeformType = 36 + with lib.types; 37 + attrsOf (oneOf [ 38 + str 39 + bool 40 + int 41 + float 42 + ]); 43 + }; 44 + default = { }; 45 + }; 46 + }; 47 + 48 + config = lib.mkIf cfg.enable { 49 + packages = [ finalPackage ]; 50 + }; 51 + }
-1
packages/breezex-cursor/package.nix
··· 1 - 2 1 { 3 2 stdenvNoCC, 4 3 fetchFromGitHub,
+3 -1
packages/dm-sans-unstable/package.nix
··· 26 26 mkdir -p $out/share/fonts/{opentype,truetype,woff} 27 27 cp Sans/fonts/otf/*.otf $out/share/fonts/opentype 28 28 29 - cp Sans/fonts/ttf/${lib.optionalString (!enableSizeSpecialization) "DMSans-"}*.ttf $out/share/fonts/truetype 29 + cp Sans/fonts/ttf/${ 30 + lib.optionalString (!enableSizeSpecialization) "DMSans-" 31 + }*.ttf $out/share/fonts/truetype 30 32 cp Sans/fonts/variable/*.ttf $out/share/fonts/truetype 31 33 ${lib.optionalString enableWebFonts ''cp Sans/fonts/webfonts/*.woff2 $out/share/fonts/woff''} 32 34
+31
packages/fontawesome-free/package.nix
··· 1 + { 2 + lib, 3 + stdenvNoCC, 4 + fetchzip, 5 + }: 6 + stdenvNoCC.mkDerivation (finalAttrs: { 7 + pname = "fontawesome-free"; 8 + version = "6.7.2"; 9 + 10 + src = fetchzip { 11 + url = "https://use.fontawesome.com/releases/v${finalAttrs.version}/fontawesome-free-${finalAttrs.version}-desktop.zip"; 12 + hash = "sha256-jkXTyVyK2OtHQTykMAjrov0cpj4Kktk/cn4bEMHi6tY="; 13 + }; 14 + 15 + dontConfigure = true; 16 + dontBuild = true; 17 + dontFixup = true; 18 + 19 + installPhase = '' 20 + runHook preInstall 21 + install -Dm644 otfs/*.otf -t $out/share/fonts/opentype 22 + install -Dm644 LICENSE.txt -t $out/share/doc/fontawesome 23 + runHook postInstall 24 + ''; 25 + 26 + meta = { 27 + description = "Font Awesome OpenType fonts (Free version)"; 28 + license = lib.licenses.ofl; 29 + platforms = lib.platforms.all; 30 + }; 31 + })
+3 -6
systems/common.nix
··· 31 31 "configurable-impure-env" 32 32 ]; 33 33 trusted-users = [ "@wheel" ]; 34 - # impure-env = [ "all_proxy=http://127.0.0.1:2080" ]; 34 + impure-env = [ "all_proxy=http://127.0.0.1:2080" ]; 35 35 }; 36 36 }; 37 37 ··· 41 41 allowUnfree = true; 42 42 cudaSupport = true; 43 43 }; 44 - 44 + 45 45 flake.setNixPath = true; 46 46 47 47 overlays = [ inputs.self.overlays.default ]; ··· 114 114 115 115 networking.networkmanager = { 116 116 enable = true; 117 - 118 - # Fuck wpa_supplicant 119 - wifi.backend = "iwd"; 120 117 }; 121 118 122 119 system = { ··· 132 129 # thanks to @getchoo 133 130 autoUpgrade = { 134 131 enable = true; 135 - flake = "github:pluiedev/flake#${config.networking.hostName}"; 132 + flake = "git+https://tangled.sh/@pluie.me/flake#${config.networking.hostName}"; 136 133 flags = [ "--refresh" ]; 137 134 }; 138 135
+4 -4
systems/fettuccine/default.nix
··· 58 58 # cache.nixos.org is *unbearably* slow when accessed from Mainland China. 59 59 # Fortunately, mirror sites exist... Hooray(?) 60 60 nix.settings.substituters = map (url: "${url}/nix-channels/store") [ 61 - "https://mirrors.ustc.edu.cn" 62 - "https://mirrors6.tuna.tsinghua.edu.cn" 63 - "https://mirrors.tuna.tsinghua.edu.cn" 64 - # "https://mirror.sjtu.edu.cn" # FIXME: buggy? 61 + "https://mirrors.ustc.edu.cn" 62 + "https://mirrors6.tuna.tsinghua.edu.cn" 63 + "https://mirrors.tuna.tsinghua.edu.cn" 64 + # "https://mirror.sjtu.edu.cn" # FIXME: buggy? 65 65 ]; 66 66 }; 67 67 }
+59 -6
systems/fettuccine/hardware-configuration.nix
··· 1 + # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 + # and may be overwritten by future invocations. Please make changes 3 + # to /etc/nixos/configuration.nix instead. 1 4 { 2 5 config, 3 6 lib, 7 + pkgs, 4 8 modulesPath, 5 9 ... 6 10 }: ··· 16 20 "vmd" 17 21 "nvme" 18 22 "usbhid" 23 + "usb_storage" 24 + "sd_mod" 19 25 "sdhci_pci" 20 26 ]; 21 27 boot.initrd.kernelModules = [ ]; ··· 23 29 boot.extraModulePackages = [ ]; 24 30 25 31 fileSystems."/" = { 26 - device = "/dev/disk/by-uuid/cba5d724-0a83-4680-8f2f-cb11084fce72"; 27 - fsType = "ext4"; 32 + device = "/dev/disk/by-uuid/c791e720-40c0-414a-aa36-0effa900c33d"; 33 + fsType = "btrfs"; 34 + options = [ 35 + "subvol=root" 36 + "compress=zstd" 37 + "noatime" 38 + ]; 39 + }; 40 + 41 + boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/f9758e84-dadf-4cae-a654-a10d77520100"; 42 + 43 + fileSystems."/home" = { 44 + device = "/dev/disk/by-uuid/c791e720-40c0-414a-aa36-0effa900c33d"; 45 + fsType = "btrfs"; 46 + options = [ 47 + "subvol=home" 48 + "compress=zstd" 49 + "noatime" 50 + ]; 51 + }; 52 + 53 + fileSystems."/nix" = { 54 + device = "/dev/disk/by-uuid/c791e720-40c0-414a-aa36-0effa900c33d"; 55 + fsType = "btrfs"; 56 + options = [ 57 + "subvol=nix" 58 + "compress=zstd" 59 + "noatime" 60 + ]; 61 + }; 62 + 63 + fileSystems."/persist" = { 64 + device = "/dev/disk/by-uuid/c791e720-40c0-414a-aa36-0effa900c33d"; 65 + fsType = "btrfs"; 66 + options = [ 67 + "subvol=persist" 68 + "compress=zstd" 69 + "noatime" 70 + ]; 71 + neededForBoot = true; 72 + }; 73 + 74 + fileSystems."/var/log" = { 75 + device = "/dev/disk/by-uuid/c791e720-40c0-414a-aa36-0effa900c33d"; 76 + fsType = "btrfs"; 77 + options = [ 78 + "subvol=log" 79 + "compress=zstd" 80 + "noatime" 81 + ]; 82 + neededForBoot = true; 28 83 }; 29 84 30 85 fileSystems."/boot" = { 31 - device = "/dev/disk/by-uuid/05D1-6882"; 86 + device = "/dev/disk/by-uuid/7839-0EC5"; 32 87 fsType = "vfat"; 33 88 options = [ 34 89 "fmask=0022" ··· 36 91 ]; 37 92 }; 38 93 39 - swapDevices = [ 40 - { device = "/dev/disk/by-uuid/d3a01a34-de64-4f58-b29f-ae973cb3e8c2"; } 41 - ]; 94 + swapDevices = [ ]; 42 95 43 96 # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 44 97 # (the default) this is the recommended approach. When using systemd-networkd it's
+1
users/leah/appearance.nix
··· 74 74 i-dot-ming 75 75 lxgw-neoxihei 76 76 dm-sans-unstable 77 + fontawesome-free 77 78 ]; 78 79 79 80 fontconfig = {
+91 -7
users/leah/presets/niri/config.kdl
··· 17 17 workspace-auto-back-and-forth 18 18 } 19 19 20 + // Place the monitors like so, in terms of logical coordinates: 21 + // 22 + // 0 2560 4608 23 + // v-----------------------v-------------------v 24 + // 2560 2560 / 1.25 = 2048 25 + // 0 > +-----------------------+ 26 + // | | +-------------------+ < 160 27 + // | | | | | 28 + // 1440 | | HDMI-A-1 | eDP-1 | | 1600 / 1.25 29 + // | | | (125%) | | = 1280 30 + // | | | | | 31 + // 1440 > +-----------------------+-------------------+ < 1440 32 + 20 33 output "eDP-1" { 21 - mode "2560x1600" 34 + mode "2560x1600@165.040" 22 35 scale 1.25 23 - transform "normal" 24 36 variable-refresh-rate 37 + position x=2560 y=160 // 1440 - (1600 / 1.25) 38 + } 39 + 40 + output "HDMI-A-1" { 41 + mode "2560x1440@143.912" 42 + // Main monitor is to the left of the laptop monitor 43 + position x=0 y=0 25 44 } 26 45 27 46 layout { 28 47 gaps 24 29 48 center-focused-column "on-overflow" 30 49 always-center-single-column 50 + background-color "transparent" // Let backdrop shine through 31 51 32 52 preset-column-widths { 33 53 proportion 0.33333 ··· 35 55 proportion 0.66667 36 56 } 37 57 38 - default-column-width {} 58 + default-column-width { 59 + proportion 0.6667 60 + } 39 61 40 62 focus-ring { 41 - width 1.5 63 + width 2.5 42 64 active-color "#eba0ac" 43 - inactive-color "#505050" 65 + inactive-color "#00000000" 66 + } 67 + 68 + border { 69 + off 70 + width 2.5 71 + urgent-color "#f38ba8" 72 + } 73 + 74 + insert-hint { 75 + color "#eba0ac70" 44 76 } 45 77 46 78 shadow { ··· 50 82 offset x=0 y=5 51 83 color "#0007" 52 84 } 85 + 86 + struts { 87 + left -24 88 + right -24 89 + top -16 90 + bottom -16 91 + } 53 92 } 54 93 55 - screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" 94 + overview { 95 + zoom 0.6667 96 + workspace-shadow { 97 + off 98 + } 99 + } 100 + 101 + screenshot-path "~/Pictures/Screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png" 102 + 103 + // Swaybg 104 + layer-rule { 105 + match namespace="wallpaper" 106 + place-within-backdrop true 107 + } 108 + 109 + // Fuzzel 110 + layer-rule { 111 + match namespace="launcher" 112 + baba-is-float true 113 + shadow { 114 + on 115 + } 116 + } 56 117 57 118 window-rule { 58 119 geometry-corner-radius 12 59 120 clip-to-geometry true 60 121 } 61 122 123 + // Only enable borders for urgent windows 124 + window-rule { 125 + match is-urgent=true 126 + 127 + border { 128 + on 129 + } 130 + } 131 + 62 132 window-rule { 63 133 match app-id="com.mitchellh.ghostty" 134 + // Allow terminal background to be transparent 64 135 draw-border-with-background false 65 136 } 66 137 ··· 243 314 244 315 // Workspaces & default apps 245 316 workspace "chat" 246 - workspace "dev" 317 + workspace "dev" { 318 + open-on-output "HDMI-A-1" 319 + } 247 320 workspace "gaming" 248 321 249 322 spawn-at-startup "waybar" ··· 251 324 spawn-at-startup "xwayland-satellite" 252 325 spawn-at-startup "fcitx5" 253 326 spawn-at-startup "swayidle" 327 + spawn-at-startup "swaybg" 328 + 254 329 // TODO: I do not know why 1Pass doesn't work on Wayland 255 330 spawn-at-startup "1password --ozone-platform-hint=x11" 256 331 spawn-at-startup "ghostty" 257 332 spawn-at-startup "firefox" 333 + spawn-at-startup "vesktop" 334 + spawn-at-startup "steam" 258 335 259 336 window-rule { 260 337 match at-startup=true app-id="vesktop" ··· 266 343 open-on-workspace "dev" 267 344 } 268 345 window-rule { 346 + match at-startup=true app-id="steam" 347 + match app-id=r#"^steam_app_"# 348 + open-on-workspace "gaming" 349 + } 350 + window-rule { 269 351 match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# 270 352 default-floating-position x=10 y=10 relative-to="top-right" 353 + // Never allow notifications steal focus 354 + open-focused false 271 355 }
-1
users/leah/presets/niri/default.nix
··· 21 21 waybar 22 22 xwayland-satellite 23 23 brightnessctl 24 - swaylock-effects 25 24 ]; 26 25 27 26 files.".config/niri/config.kdl".source = ./config.kdl;
+27 -38
users/leah/presets/niri/services.nix
··· 5 5 ... 6 6 }: 7 7 let 8 - swaylock-config = { 9 - screenshots = true; 10 - scaling = "fit"; 11 - clock = true; 12 - indicator-idle-visible = true; 13 - grace = 3; 14 - effect-blur = "10x10"; 15 - effect-vignette = "0.5:0.8"; 16 - effect-pixelate = 4; 8 + swaybg' = pkgs.writeShellApplication { 9 + name = "swaybg"; 10 + runtimeInputs = [ pkgs.swaybg ]; 11 + text = '' 12 + swaybg -i ${../../wallpaper.jpg} 13 + ''; 14 + }; 15 + 16 + swayidle' = pkgs.writeShellApplication { 17 + name = "swayidle"; 17 18 18 - text-color = "#cdd6f4"; 19 - inside-color = "#181825"; 20 - inside-clear-color = "#a6e3a1"; 21 - inside-ver-color = "#cba6f7"; 22 - inside-wrong-color = "#f38ba8"; 23 - ring-color = "#1e1e2e"; 24 - ring-clear-color = "#a6e3a1"; 25 - ring-ver-color = "#cba6f7"; 26 - ring-wrong-color = "#f38ba8"; 27 - key-hl-color = "#eba0ac"; 28 - bs-hl-color = "#6c7086"; 29 - line-color = "#313244"; 19 + runtimeInputs = [ 20 + pkgs.swayidle 21 + config.hjem.users.leah.ext.programs.swaylock.finalPackage 22 + pkgs.niri 23 + ]; 30 24 31 - timestr = "%H:%M"; 32 - datestr = "%e %b '%y / %a"; 25 + text = '' 26 + exec swayidle -w \ 27 + timeout 180 swaylock \ 28 + timeout 360 'niri msg action power-off-monitors' \ 29 + resume 'niri msg action power-on-monitors' \ 30 + before-sleep swaylock \ 31 + lock swaylock \ 32 + unlock "pkill -SIGUSR1 swaylock" \ 33 + "$@" 34 + ''; 33 35 }; 34 - 35 - swaylock' = pkgs.writeShellScript "swaylock" '' 36 - ${lib.getExe pkgs.swaylock} -f ${lib.cli.toGNUCommandLineShell { } swaylock-config} 37 - ''; 38 - 39 - swayidle' = pkgs.writeShellScriptBin "swayidle" '' 40 - ${lib.getExe pkgs.swayidle} -w \ 41 - timeout 300 ${swaylock'} \ 42 - timeout 600 '${pkgs.niri} msg action power-off-monitors' \ 43 - resume '${pkgs.niri} msg action power-on-monitors' \ 44 - before-sleep ${swaylock'} \ 45 - lock ${swaylock'} \ 46 - unlock 'pkill -SIGUSR1 -ux $USER ${swaylock'}' 47 - ''; 48 36 in 49 37 { 50 38 hjem.users.leah.packages = [ 51 39 swayidle' 40 + swaybg' 52 41 ]; 53 42 54 43 security = { 55 44 polkit.enable = true; 56 45 soteria.enable = true; 57 46 }; 58 - 47 + 59 48 # Needed by the Waybar config 60 49 services.power-profiles-daemon.enable = true; 61 50
+41 -3
users/leah/programs/default.nix
··· 21 21 programs = { 22 22 localsend.enable = true; 23 23 nix-index-database.comma.enable = true; 24 + nekoray = { 25 + enable = true; 26 + tunMode.enable = true; 27 + }; 24 28 }; 25 29 26 30 hjem.users.leah = { 27 31 packages = with pkgs; [ 28 32 # Apps 29 - nekoray 33 + aseprite 30 34 prismlauncher 31 35 vlc 32 36 thunderbird ··· 41 45 eza 42 46 ]; 43 47 44 - files.".config/starship.toml".source = ./starship.toml; 45 - 46 48 rum.programs.obs-studio.enable = true; 47 49 48 50 ext.programs = { ··· 67 69 settings = { 68 70 no-statusbar = true; 69 71 wrap = true; 72 + }; 73 + }; 74 + 75 + swaylock = { 76 + enable = true; 77 + package = pkgs.swaylock-effects; 78 + 79 + settings = { 80 + show-failed-attempts = true; 81 + ignore-empty-password = true; 82 + daemonize = true; 83 + 84 + screenshots = true; 85 + scaling = "fit"; 86 + clock = true; 87 + indicator-idle-visible = true; 88 + grace = 3; 89 + effect-blur = "10x10"; 90 + effect-vignette = "0.5:0.8"; 91 + effect-pixelate = 4; 92 + 93 + text-color = "#cdd6f4"; 94 + inside-color = "#181825"; 95 + inside-clear-color = "#a6e3a1"; 96 + inside-ver-color = "#cba6f7"; 97 + inside-wrong-color = "#f38ba8"; 98 + ring-color = "#1e1e2e"; 99 + ring-clear-color = "#a6e3a1"; 100 + ring-ver-color = "#cba6f7"; 101 + ring-wrong-color = "#f38ba8"; 102 + key-hl-color = "#eba0ac"; 103 + bs-hl-color = "#6c7086"; 104 + line-color = "#313244"; 105 + 106 + timestr = "%H:%M"; 107 + datestr = "%e %b '%y / %a"; 70 108 }; 71 109 }; 72 110 };
+10 -6
users/leah/programs/firefox/default.nix
··· 6 6 let 7 7 json = pkgs.formats.json { }; 8 8 wrappedFirefox = pkgs.firefox.override { 9 - extraPoliciesFiles = [(json.generate "firefox-policies.json" policies)]; 9 + extraPoliciesFiles = [ (json.generate "firefox-policies.json" policies) ]; 10 10 }; 11 11 12 12 addons = [ ··· 33 33 "{9a41dee2-b924-4161-a971-7fb35c053a4a}" # enhanced-h264ify 34 34 "sponsorBlocker@ajay.app" # SponsorBlock for YouTube 35 35 "{0d7cafdd-501c-49ca-8ebb-e3341caaa55e}" # YouTube NonStop 36 - 36 + 37 37 # Utilities 38 38 "{d634138d-c276-4fc8-924b-40a0ea21d284}" # 1Password 39 39 "{c2c003ee-bd69-42a2-b0e9-6f34222cb046}" # Auto Tab Discard ··· 45 45 46 46 policies = { 47 47 ExtensionSettings = lib.listToAttrs ( 48 - map (id: lib.nameValuePair id { 49 - installation_mode = "normal_installed"; 50 - install_url = "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi"; 51 - }) addons); 48 + map ( 49 + id: 50 + lib.nameValuePair id { 51 + installation_mode = "normal_installed"; 52 + install_url = "https://addons.mozilla.org/firefox/downloads/latest/${id}/latest.xpi"; 53 + } 54 + ) addons 55 + ); 52 56 }; 53 57 54 58 # TODO: Specifying custom search engines is *very* cursed.
+9 -1
users/leah/programs/fish.nix
··· 1 1 { 2 2 config, 3 + lib, 4 + pkgs, 3 5 ... 4 6 }: 5 7 { ··· 10 12 hjem.users.leah.rum.programs.fish = { 11 13 enable = true; 12 14 inherit (config.programs.fish) package; 13 - 15 + 14 16 functions.eza = "eza --git --icons=auto"; 15 17 abbrs = { 16 18 ls = "eza"; ··· 19 21 lt = "eza --tree"; 20 22 lla = "eza -la"; 21 23 }; 24 + 25 + earlyConfigFiles.starship = '' 26 + ${lib.getExe pkgs.starship} init fish | source 27 + ''; 22 28 }; 29 + 30 + hjem.users.leah.files.".config/starship.toml".source = ./starship.toml; 23 31 }
+3 -2
users/leah/programs/vcs.nix
··· 45 45 46 46 ui = { 47 47 default-command = [ "log" ]; 48 - diff.tool = "difft"; 48 + diff-formatter = "difft"; 49 49 pager = "${lib.getExe pkgs.moar} -no-linenumbers"; 50 50 log-word-wrap = true; 51 51 }; ··· 72 72 "--ignore-working-copy" 73 73 "log" 74 74 "--color=always" 75 + "-r" 76 + "current()" 75 77 ]; 76 78 }; 77 79 78 80 revsets = { 79 - log = "current()"; 80 81 short-prefixes = "current()"; 81 82 }; 82 83