Files
nixos/flake.nix

690 lines
38 KiB
Nix
Raw Normal View History

2026-02-22 19:54:17 +00:00
{
2026-02-25 23:58:47 +00:00
description = "Stationette nix config";
2026-02-22 19:54:17 +00:00
2026-02-25 23:58:47 +00:00
inputs = {
2026-03-02 00:14:11 +00:00
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
2026-02-25 23:58:47 +00:00
disko.url = "github:nix-community/disko/latest";
2026-02-27 00:51:33 +00:00
impermanence.url = "github:nix-community/impermanence";
2026-02-28 17:54:50 +00:00
home-manager = {
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
2026-02-27 00:51:33 +00:00
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
2026-03-04 23:11:54 +00:00
try-cli.url = "github:tobi/try-cli";
elephant.url = "github:abenz1267/elephant";
2026-03-06 16:56:28 +00:00
walker = {
url = "github:abenz1267/walker";
inputs.elephant.follows = "elephant";
};
2026-02-22 19:54:17 +00:00
};
2026-02-25 23:58:47 +00:00
outputs = {
self,
nixpkgs,
2026-03-02 00:14:11 +00:00
nixpkgs-unstable,
2026-02-27 00:51:33 +00:00
impermanence,
2026-02-25 23:58:47 +00:00
disko,
2026-02-27 00:51:33 +00:00
home-manager,
2026-03-04 23:11:54 +00:00
try-cli,
2026-02-25 23:58:47 +00:00
...
} @ inputs: let
lib = nixpkgs.lib;
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
2026-03-02 00:14:11 +00:00
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
2026-02-25 23:58:47 +00:00
in {
nixosConfigurations = {
stationette = nixpkgs.lib.nixosSystem {
modules = [
2026-02-26 23:27:43 +00:00
./hardware-configuration.nix
disko.nixosModules.disko
2026-02-27 00:51:33 +00:00
impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager
2026-02-26 23:27:43 +00:00
{
2026-02-27 11:55:07 +00:00
# nix --extra-experimental-features "nix-command flakes" run github:nix-community/disko/latest#disko-install -- --flake ./#stationette --disk stationette --write-efi-boot-entries /dev/sda
2026-02-26 23:27:43 +00:00
disko.devices = {
disk = {
stationette = {
2026-03-01 11:15:56 +00:00
type = "disk";
device = "/dev/sda"; # Check this with lsblk
2026-03-06 16:56:28 +00:00
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "fmask=0022" "dmask=0022" "umask=0077" ];
2026-02-26 23:27:43 +00:00
};
2026-03-06 16:56:28 +00:00
};
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ]; # Force overwrite
subvolumes = {
"/root" = {
mountpoint = "/";
mountOptions = [ "compress=zstd" "noatime" ];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [ "compress=zstd" "noatime" ];
};
"/persist" = {
mountpoint = "/persist";
mountOptions = [ "compress=zstd" "noatime" ];
};
"/swap" = {
mountpoint = "/.swapvol";
swap.swapfile.size = "8G";
};
2026-02-26 23:27:43 +00:00
};
};
};
};
};
};
2026-02-25 23:58:47 +00:00
};
2026-03-06 16:56:28 +00:00
};
2026-03-07 00:26:43 +00:00
boot = {
loader = {
limine = {
enable = true;
extraConfig = ''
timeout: 3
default_entry: 2
interface_branding: Station Bootloader
interface_branding_color: 2
hash_mismatch_panic: no
term_background: 1a1b26
backdrop: 1a1b26
# Tokyo Night palette
term_palette: 15161e;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;a9b1d6
term_palette_bright: 414868;f7768e;9ece6a;e0af68;7aa2f7;bb9af7;7dcfff;c0caf5
term_foreground: c0caf5
term_foreground_bright: c0caf5
term_background_bright: 24283b
2026-03-07 00:28:53 +00:00
'';
2026-03-07 00:26:43 +00:00
};
efi.canTouchEfiVariables = true;
# timeout = 0;
};
plymouth = {
enable = true;
theme = "black_hud";
themePackages = with pkgs; [
(adi1090x-plymouth-themes.override {
selected_themes = [ "black_hud" ];
})
];
};
initrd.verbose = false;
# Found by running sudo btrfs inspect-internal map-swapfile -r /.swapvol/swapfile
kernelParams = [
"resume_offset=533760"
"quiet"
"udev.log_level=3"
"systemd.show_status=auto"
"splash"
];
bootspec.enable = true;
resumeDevice = "/dev/disk/by-partlabel/disk-stationette-root";
2026-03-06 16:56:28 +00:00
};
2026-03-07 00:26:43 +00:00
swapDevices = [ {
device = "/.swapvol/swapfile";
} ];
powerManagement.enable = true;
2026-03-06 16:56:28 +00:00
environment = {
persistence."/persist" = {
hideMounts = true;
directories = [
"/var/log"
"/var/lib/bluetooth"
"/var/lib/networkmanager"
"/var/lib/nixos"
"/etc/ssh"
"/var/lib/systemd/coredump"
"/etc/NetworkManager/system-connections"
];
files = [
"/etc/machine-id"
2026-02-27 16:42:31 +00:00
];
2026-02-28 14:33:47 +00:00
};
2026-03-06 16:56:28 +00:00
systemPackages = with pkgs; [
2026-03-07 00:26:43 +00:00
v4l-utils
brightnessctl
satty
2026-03-06 16:56:28 +00:00
hyprpaper
libnotify
mako
qt6.qtwayland
2026-03-07 00:26:43 +00:00
grim
gnome-calculator
2026-03-06 16:56:28 +00:00
hypridle
hyprlock
hyprpicker
wlogout
wl-clipboard
waybar
bat
highlight
btop
eza
fzf
neovim
ripgrep
tldr
unzip
openssl
wget
zip
zoxide
jq
git
lazygit
less
tree
tmux
tmuxinator
wget
zenity
gum
pkgs-unstable.yazi
rsync
p7zip
impala
xdg-terminal-exec
];
};
networking = {
hostName = "stationette";
networkmanager.enable = true;
wireless = {
iwd.enable = true;
networks = {
ssid = "Outskirt Stable";
psk = "SidonPhlegm";
2026-03-04 23:11:54 +00:00
};
2026-02-28 14:33:47 +00:00
};
2026-03-06 16:56:28 +00:00
firewall = {
enable = true;
# Ports used by Local Send
allowedTCPPorts = [ 53317 ];
allowedUDPPorts = [ 53317 ];
2026-02-27 16:42:31 +00:00
};
2026-03-06 16:56:28 +00:00
};
users.users.chris = {
uid = 1000;
isNormalUser = true;
initialPassword = "changeme123";
shell = pkgs.zsh;
extraGroups = [
"chris"
"wheel"
"networkmanager"
];
};
nixpkgs.config.allowUnfree = true;
programs = {
2026-03-07 00:26:43 +00:00
localsend = {
enable = true;
openFirewall = true;
};
uwsm = {
enable = true;
waylandCompositors.hyprland = {
prettyName = "Hyprland";
comment = "Hyprland compositor managed by UWSM";
binPath = "/run/current-system/sw/bin/Hyprland";
};
};
2026-03-06 16:56:28 +00:00
zsh = {
enable = true;
2026-02-28 14:33:47 +00:00
};
2026-03-06 16:56:28 +00:00
hyprland = {
enable = true;
package = pkgs-unstable.hyprland;
xwayland.enable = true;
2026-03-07 00:26:43 +00:00
withUWSM = true;
2026-03-06 16:56:28 +00:00
};
steam = {
enable = true;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
2026-03-07 00:26:43 +00:00
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
2026-03-06 16:56:28 +00:00
};
};
services = {
openssh.enable = true;
dbus.enable = true;
envfs.enable = true; # This ensures normal shebangs work (#!/bin/bash)
expressvpn.enable = true;
locate.enable = true;
2026-03-07 00:26:43 +00:00
fwupd.enable = true;
"power-profiles-daemon".enable = true;
upower = {
enable = true;
percentageLow = 20;
percentageCritical = 5;
percentageAction = 3;
criticalPowerAction = "Hibernate";
};
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
displayManager = {
sddm = {
enable = true;
wayland.enable = true;
theme = "maya";
2026-02-28 17:33:46 +00:00
};
2026-03-06 16:56:28 +00:00
autoLogin.enable = true;
autoLogin.user = "chris";
2026-03-07 00:26:43 +00:00
defaultSession = "hyprland-uwsm";
2026-02-28 17:31:20 +00:00
};
2026-03-06 16:56:28 +00:00
};
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
system.stateVersion = "25.11";
home-manager = {
users.chris = { pkgs, lib, ... }: {
home = {
file.".mozilla/firefox/default/search.json.mozlz4".force = lib.mkForce true;
username = "chris";
homeDirectory = "/home/chris";
enableNixpkgsReleaseCheck = false;
stateVersion = "25.11";
persistence."/persist" = {
directories = [
"Downloads"
"Tower"
"Code"
".steam"
".config/dotfiles"
".mozilla/firefox"
".config/nvim"
".config/yazi/plugins"
".config/nixos"
".config/sinew.in"
".local/share/direnv"
".local/share/nvim"
".local/share/zoxide"
".local/share/Enpass"
".local/share/Steam"
2026-03-07 00:26:43 +00:00
".local/share/station"
".local/state/station"
2026-03-06 16:56:28 +00:00
".ssh"
];
files = [
".config/shell/.env"
];
};
activation = {
setupDotfiles = lib.hm.dag.entryAfter ["writeBoundary"] ''
if [[ -v DRY_RUN ]]; then
echo "Dry run: Would bootstrap dotfiles from labs.scarif.space"
exit
fi
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
TEMP_DIR=$(mktemp -d)
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
DOTFILES_DIR="$HOME/.config/dotfiles"
DOTFILES_GIT_DIR="$DOTFILES_DIR/.git"
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
if [ ! -d "$DOTFILES_GIT_DIR" ]; then
echo "No local repository so cloning from remote"
SOURCE="https://labs.scarif.space/chris/dotfiles.git"
${pkgs.git}/bin/git clone -b main "$SOURCE" "$TEMP_DIR"
mv "$TEMP_DIR/.git" "$DOTFILES_GIT_DIR"
else
echo "Local repository found so cloning from there"
${pkgs.git}/bin/git clone -b main "$DOTFILES_GIT_DIR" "$TEMP_DIR"
${pkgs.git}/bin/git --git-dir="$DOTFILES_GIT_DIR" --work-tree="$TEMP_DIR" pull --rebase || true
fi
2026-02-28 15:17:09 +00:00
2026-03-06 16:56:28 +00:00
echo "Copying dot files to home"
${pkgs.coreutils}/bin/cp -rfT "$TEMP_DIR" "$HOME"
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
NVIM_DIR="$HOME/.config/nvim"
echo "Neovim config not initialised so initialising from remote"
${pkgs.git}/bin/git --git-dir="$DOTFILES_GIT_DIR" --work-tree="$HOME" submodule set-url ".config/nvim" https://labs.scarif.space/chris/nvim.git
${pkgs.git}/bin/git --git-dir="$DOTFILES_GIT_DIR" --work-tree="$HOME" submodule update --init || true
${pkgs.git}/bin/git --git-dir="$DOTFILES_GIT_DIR" --work-tree="$HOME" submodule set-url ".config/nvim" git@labs.scarif.space:chris/nvim.git
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
cd "$HOME"
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
echo "Cleanup"
${pkgs.coreutils}/bin/rm -rf "$TEMP_DIR"
${pkgs.coreutils}/bin/rm -rf "$HOME/.git" || true
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
echo "Dotfiles bootstrapped successfully."
'';
setupDevDirectories = lib.hm.dag.entryAfter ["writeBoundary"] ''
if [[ -v DRY_RUN ]]; then
echo "Dry run: Would create dev directories"
exit
fi
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
echo "Creating development directories"
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
for dir in "DevOps" "FSharp" "JavaScript" "Scala" "Rust" "PHP" "Tutorials" "Sites" "MobileApps" "Tries"; do
if [ ! -d "$HOME/Code/$dir" ]; then
mkdir -p "$HOME/Code/$dir"
fi
done
'';
2026-02-27 00:51:33 +00:00
};
2026-03-06 16:56:28 +00:00
packages = with pkgs; [
# jetbrains.rider
# android-studio
# beekeeper-studio
# brave
# go
# lua
2026-03-07 00:26:43 +00:00
lunar-client
chromium
2026-03-06 16:56:28 +00:00
direnv
wiremix
bluetui
spotify
nodePackages.pnpm
try-cli.packages.${system}.default
# (python3.withPackages (python-pkgs: [ python-pkgs.pip python-pkgs.requests ]))
# rustup
# zig
obsidian
mailspring
# thunderbird
# libreoffice-qt
# pkgs-unstable.nerd-fonts.fira-code
# hunspell
# blueberry
# pkgs-unstable.hyprshot
# catppuccin-cursors.macchiatoBlue
# catppuccin-gtk
# papirus-folders
# pkgs-unstable.php84Packages.composer
# pkgs-unstable.php84Packages.xdebug
# pkgs-unstable.php84Extensions.sqlite3
# pkgs-unstable.php84Extensions.redis
# pkgs-unstable.php84Extensions.sodium
# pkgs-unstable.php84Extensions.pgsql
# pkgs-unstable.php84Extensions.iconv
# pkgs-unstable.php84Extensions.gd
# pkgs-unstable.php84Extensions.zip
# php
antigravity
gimp
# kdePackages.dolphin
nautilus
enpass
enpass-cli
expressvpn
2026-03-07 00:26:43 +00:00
ffmpeg
ffmpegthumbnailer
gpu-screen-recorder
2026-03-06 16:56:28 +00:00
inkscape
krita
libreoffice-fresh
nextcloud-client
nodejs_24
signal-desktop
sxiv
tenacity
zathura
ghostty
yarn
uwsm
wally-cli
kdePackages.wacomtablet
# kdePackages.print-manager
mpv
vlc
imv
# telegram-desktop
];
};
xdg.mimeApps = {
enable = true;
defaultApplications = {
# Directories
"inode/directory" = [ "org.gnome.Nautilus.desktop" ];
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
# Images
"image/png" = [ "imv.desktop" ];
"image/jpeg" = [ "imv.desktop" ];
"image/gif" = [ "imv.desktop" ];
"image/webp" = [ "imv.desktop" ];
"image/bmp" = [ "imv.desktop" ];
"image/tiff" = [ "imv.desktop" ];
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
# Documents
"application/pdf" = [ "zathura.desktop" ];
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
# Web and Browser
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"text/html" = [ "firefox.desktop" ];
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
# Video
"video/mp4" = [ "mpv.desktop" ];
"video/x-msvideo" = [ "mpv.desktop" ];
"video/x-matroska" = [ "mpv.desktop" ];
"video/x-flv" = [ "mpv.desktop" ];
"video/x-ms-wmv" = [ "mpv.desktop" ];
"video/mpeg" = [ "mpv.desktop" ];
"video/ogg" = [ "mpv.desktop" ];
"video/webm" = [ "mpv.desktop" ];
"video/quicktime" = [ "mpv.desktop" ];
"video/3gpp" = [ "mpv.desktop" ];
"video/3gpp2" = [ "mpv.desktop" ];
"video/x-ms-asf" = [ "mpv.desktop" ];
"video/x-ogm+ogg" = [ "mpv.desktop" ];
"video/x-theora+ogg" = [ "mpv.desktop" ];
"application/ogg" = [ "mpv.desktop" ];
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
# Mail
"x-scheme-handler/mailto" = [ "mailspring.desktop" ];
2026-03-04 23:11:54 +00:00
2026-03-06 16:56:28 +00:00
# Text and Code
"text/plain" = [ "nvim.desktop" ];
"text/english" = [ "nvim.desktop" ];
"text/x-makefile" = [ "nvim.desktop" ];
"text/x-c++hdr" = [ "nvim.desktop" ];
"text/x-c++src" = [ "nvim.desktop" ];
"text/x-chdr" = [ "nvim.desktop" ];
"text/x-csrc" = [ "nvim.desktop" ];
"text/x-java" = [ "nvim.desktop" ];
"text/x-moc" = [ "nvim.desktop" ];
"text/x-pascal" = [ "nvim.desktop" ];
"text/x-tcl" = [ "nvim.desktop" ];
"text/x-tex" = [ "nvim.desktop" ];
"application/x-shellscript" = [ "nvim.desktop" ];
"text/x-c" = [ "nvim.desktop" ];
"text/x-c++" = [ "nvim.desktop" ];
"application/xml" = [ "nvim.desktop" ];
"text/xml" = [ "nvim.desktop" ];
2026-03-04 23:11:54 +00:00
};
2026-03-06 16:56:28 +00:00
};
imports = [
inputs.walker.homeManagerModules.default
# inputs.elephant.homeManagerModules.default
];
2026-03-07 00:26:43 +00:00
services = {
swayosd.enable = true;
};
systemd.user = {
enable = true;
startServices = true;
# services = {
# walker = {
# Unit.Description = "Walker - Application Runner";
# Install.WantedBy = ["graphical-session.target"];
# };
# elephant = {
# Unit.Description = "Elephant launcher backend";
# Install.WantedBy = ["graphical-session.target"];
# };
# };
2026-03-06 16:56:28 +00:00
};
programs = let
lock-false = {
Value = false;
Status = "locked";
};
lock-true = {
Value = true;
Status = "locked";
};
in {
walker = {
enable = true;
runAsService = true;
};
elephant = {
enable = true;
installService = true;
};
firefox = {
enable = true;
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
extraPolicies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value= true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
DisableFirefoxAccounts = false;
DisableAccounts = false;
DisableFirefoxScreenshots = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true;
DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
SearchBar = "unified"; # alternative: "separate"
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
/* ---- EXTENSIONS ---- */
ExtensionSettings = {
"*".installation_mode = "allowed"; # blocks all addons except the ones specified below
# Enpass
"firefox-enpass@enpass.io" = {
install_url = "https://dl.enpass.io/stable/extensions/firefox/versions/v6.11.10.2/enpass_password_manager-6.11.10.2.xpi";
installation_mode = "force_installed";
2026-03-01 11:15:56 +00:00
};
2026-03-06 16:56:28 +00:00
};
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
/* ---- PREFERENCES ---- */
# Set preferences shared by all profiles.
Preferences = {
"browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
"extensions.pocket.enabled" = lock-false;
"extensions.screenshots.disabled" = lock-true;
"browser.topsites.contile.enabled" = lock-false;
"browser.formfill.enable" = lock-false;
"browser.search.suggest.enabled" = lock-false;
"browser.search.suggest.enabled.private" = lock-false;
"browser.urlbar.suggest.searches" = lock-false;
"browser.urlbar.showSearchSuggestionsFirst" = lock-false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
"browser.newtabpage.activity-stream.feeds.section.highlights" = false;
2026-03-01 23:02:27 +00:00
};
};
2026-03-06 16:56:28 +00:00
};
profiles = {
default = {
id = 0;
name = "default";
isDefault = true;
search = {
default = "holocron";
order = [ "holocron" "google" ];
engines= {
holocron = {
name = "Holocron";
urls = [{
template = "https://holocron.scarif.space/search";
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}];
icon = "https://holocron.scarif.space/favicon.ico";
definedAliases = [ "@h" ];
2026-03-01 23:02:27 +00:00
};
2026-03-06 16:56:28 +00:00
bing.metaData.hidden = true;
ebay.metaData.hidden = true;
perplexity.metaData.hidden = true;
2026-03-01 11:15:56 +00:00
};
};
};
2026-02-28 16:20:16 +00:00
};
2026-02-28 14:33:47 +00:00
};
2026-03-06 16:56:28 +00:00
};
nixpkgs = {
config = {
allowUnfree = true;
allowUnfreePredicate = (_: true);
2026-02-27 00:51:33 +00:00
2026-03-06 16:56:28 +00:00
permittedInsecurePackages = [
"electron-25.9.0" # Obsidian
"beekeeper-studio-5.3.4"
];
2026-02-27 00:51:33 +00:00
};
};
};
2026-03-06 16:56:28 +00:00
extraSpecialArgs = {
inherit inputs;
};
};
}
];
2026-02-25 23:58:47 +00:00
};
2026-03-06 16:56:28 +00:00
};
2026-02-22 19:54:17 +00:00
2026-03-06 16:56:28 +00:00
# Standalone home-manager configuration entrypoint
#homeConfigurations = {
# chris = home-manager.lib.homeManagerConfiguration {
# inherit pkgs;
# extraSpecialArgs = {
# inherit inputs;
# };
# modules = [
# ./home
# ];
# };
#};
nix.settings = {
extra-substituters = [
"https://walker.cachix.org"
"https://walker-git.cachix.org"
];
extra-trusted-public-keys = [
"walker.cachix.org-1:fG8q+uAaMqhsMxWjwvk0IMb4mFPFLqHjuvfwQxE4oJM="
"walker-git.cachix.org-1:vmC0ocfPWh0S/vRAQGtChuiZBTAe4wiKDeyyXM0/7pM="
];
2026-02-28 14:33:47 +00:00
};
2026-03-06 16:56:28 +00:00
};
2026-02-22 19:54:17 +00:00
}