infrastructure

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit a1a3cb98e699758ee2920f47756a42e5c6a88b19
parent 4df8037c6232d3896263a9f08dbd9271b2b52d6a
Author: silas <silas@noreply.git.fnarglebeast.com>
Date:   Tue, 19 May 2026 19:53:02 +0300

feat: add isis configuration

Diffstat:
Ahosts/isis.nix | 320+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 320 insertions(+), 0 deletions(-)

diff --git a/hosts/isis.nix b/hosts/isis.nix @@ -0,0 +1,320 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ]; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "isis"; + networking.networkmanager.enable = true; + + time.timeZone = "Europe/Copenhagen"; + i18n.defaultLocale = "en_GB.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "da_DK.UTF-8"; + LC_IDENTIFICATION = "da_DK.UTF-8"; + LC_MEASUREMENT = "da_DK.UTF-8"; + LC_MONETARY = "da_DK.UTF-8"; + LC_NAME = "da_DK.UTF-8"; + LC_NUMERIC = "da_DK.UTF-8"; + LC_PAPER = "da_DK.UTF-8"; + LC_TELEPHONE = "da_DK.UTF-8"; + LC_TIME = "da_DK.UTF-8"; + }; + + services.displayManager.ly.enable = true; + programs.dwl = { + enable = true; + package = (pkgs.dwl.override { + configH = ./dwl/config.h; + }); + }; + + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "claude-code" + ]; + + fonts = { + enableDefaultPackages = true; + packages = with pkgs; [ + jetbrains-mono + nerd-fonts.jetbrains-mono + nerd-fonts.iosevka + ibm-plex + merriweather + libertinus + paratype-pt-sans + ]; + fontconfig = { + enable = true; + hinting.style = "slight"; + subpixel.rgba = "rgb"; + defaultFonts = { + sansSerif = [ "IBM Plex Sans" ]; + serif = [ "Merriweather" ]; + monospace = [ "JetBrains Mono" ]; + }; + confPackages = [ + (pkgs.writeTextDir "etc/fonts/conf.d/99-math.conf" '' + <?xml version="1.0"?> + <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> + <fontconfig> + <alias> + <family>math</family> + <prefer> + <family>Libertinus</family> + </prefer> + </alias> + </fontconfig> + '') + ]; + }; + }; + + users.users.silas = { + isNormalUser = true; + description = "Silas"; + extraGroups = [ + "networkmanager" + "wheel" + "audio" + ]; + packages = with pkgs; [ + rbw + claude-code + (emacs.pkgs.withPackages (ep: [ + ep.magit + ep.expand-region + (ep.treesit-grammars.with-grammars (g: [ g.tree-sitter-nix ])) + ])) + fd + feh + foot + fzf + mpv + pinentry-tty + ripgrep + zathura + ]; + }; + + programs.firefox = { + enable = true; + package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {}); + preferences = { + # "browser.startup.homepage" = "https://example.com"; + "privacy.resistFingerprinting" = true; + "browser.urlbar.quicksuggest.online.enabled" = false; + "browser.urlbar.suggest.quicksuggest.sponsored" = false; + "browser.ml.chat.enabled" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredCheckboxes" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + + # Don't let websites override my font choices + "browser.display.use_document_fonts" = 0; + }; + policies = { + SearchEngines = { + Default = "Kagi"; + + # Remove built-ins you don't want + Remove = [ "Google" "Bing" "eBay" "DuckDuckGo" "Perplexity" ]; + + # Add custom engines + Add = [ + { + Name = "Kagi"; + URLTemplate = "https://kagi.com/search?q={searchTerms}"; + IconURL = "https://kagi.com/asset/de8b73c/kagi_assets/logos/search.svg"; + Alias = "k"; + } + ]; + }; + DisableTelemetry = true; + SearchSuggestEnabled = false; + DontCheckDefaultBrowser = true; + }; + }; + + programs.dconf.enable = true; + + programs.bash = { + enable = true; + interactiveShellInit = '' + bws() { + rbw list | fzf | xargs -I _ rbw get -c _ + } + + loadenv() { + set -a; + source "''\${1:-.env}"; + set +a; + } + ''; + }; + + programs.git = { + enable = true; + config = { + user = { + name = "Silas Brack"; + email = "silasbrack@gmail.com"; + }; + }; + }; + + programs.vim = { + enable = true; + defaultEditor = true; + package = (pkgs.vim.override { }).customize { + name = "vim"; + vimrcConfig.customRC = '' + set backspace=indent,eol,start + + set showmatch + set incsearch + set hlsearch + set ignorecase + set smartcase + + set wildmenu + set wildoptions=pum + + set hidden + + set autoindent + + set number + set relativenumber + + set tabstop=4 + set shiftwidth=4 + + set expandtab + set showmatch + + filetype plugin indent on + syntax on + + set shell=/run/current-system/sw/bin/bash + set tags=./tags,tags + + nnoremap gb :ls<CR>:b<Space> + nnoremap gs :vimgrep /\%1l/ `fd -t=f `<left> + nnoremap gS :vimgrep // `fd -t=f`<C-left><C-left><C-left><right> + + nnoremap <nowait><silent> <C-l> :noh<CR> + + nnoremap [q :cprev<CR> + nnoremap ]q :cnext<CR> + nnoremap [Q :cfirst<CR> + nnoremap ]Q :clast<CR> + ''; + }; + }; + + environment.systemPackages = with pkgs; [ + cliphist + grim + slurp + wmenu + ]; + environment.sessionVariables = { + XKB_DEFAULT_OPTIONS = "ctrl:nocaps"; + }; + environment.variables = { + EDITOR = "vim"; + BROWSER = "firefox"; + TERMINAL = "foot"; + HISTIGNORE = "&:ls:ls *:exit:pwd:clear:tmux:tmux attach:bash:vim:vim *:open *:reboot:history:loadenv:rm *:nix-shell:nix develop:git *:man *:* --help:bg:fg"; + HISTCONTROL = "ignoreboth"; + }; + + services.openssh.enable = true; + + services.syncthing = { + enable = true; + user = "silas"; + dataDir = "/home/silas/.syncthing"; + configDir = "/home/silas/.config/syncthing"; + settings = { + devices = { + "Lolo's Macbook Pro" = { + id = "AODRMP6-CEUBLIG-QFOJBXH-2S5DZ43-F2OSK7I-DDLXY3A-OSGZZEY-GKG4EQF"; + }; + "Pixel 6a" = { + id = "W3J66VB-KZYFQXI-UKL5XNO-D6W4KSA-2YAB7AZ-2BJ2BXA-T5ID4YA-NR22FQD"; + }; + }; + folders = { + "Notes" = { + id = "7mruq-r5ufp"; + path = "/home/silas/notes"; + devices = [ + "Lolo's Macbook Pro" + "Pixel 6a" + ]; + }; + }; + }; + }; + + networking.firewall.allowedUDPPorts = [ 10232 ]; + networking.extraHosts = '' + 10.100.0.1 poseidon + 10.100.0.2 thinkpad + 10.100.0.3 pixel + 10.100.0.4 gaia + 10.100.0.5 ipad + 10.100.0.6 macbook + 10.100.0.7 helios + 10.100.0.8 isis + ''; + networking.wg-quick.interfaces = { + wg0 = { + address = [ "10.100.0.8/24" ]; + dns = [ "10.100.0.1" ]; + listenPort = 10232; + autostart = true; + privateKeyFile = "/home/silas/privatekey"; + peers = [ + { + publicKey = "2jWfr5UmACvuS+0HOfSNgEUYqoqVNnfVDoaatmgEykw="; + allowedIPs = [ "0.0.0.0/0" ]; + endpoint = "188.166.127.72:51820"; + persistentKeepalive = 25; + } + ]; + }; + }; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.11"; # Did you read the comment? +}