From 0eeb94b65c57980c6c688f0c4355b79981596227 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Thu, 7 Aug 2025 10:45:00 +1000 Subject: [PATCH 001/107] re-add nimble to lang pkgs --- hosts/lolcathost/default.nix | 1 + hosts/myputer/default.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index e6d03fd..c8479f5 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -231,6 +231,7 @@ in { rustc # Nim nim + nimble # Go go diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 486c59d..369fc20 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -232,6 +232,7 @@ in { rustc # Nim nim + nimble # Go go From ee7e38e7bacae4d21a50b968fa1c05031a9aa3e5 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 8 Aug 2025 11:28:11 +1000 Subject: [PATCH 002/107] add git aliases --- homes/modules/git.nix | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/homes/modules/git.nix b/homes/modules/git.nix index 3e0cfb0..82d0f1e 100755 --- a/homes/modules/git.nix +++ b/homes/modules/git.nix @@ -5,6 +5,19 @@ }: { programs.git = { enable = true; + lfs.enable = true; + + userName = "Emile Clark-Boman"; + userEmail = "eclarkboman@gmail.com"; + + aliases = { + s = "status"; + d = "diff"; + l = "log"; + c = "commit"; + p = "push"; + }; + extraConfig = { color.ui = true; core.editor = "hx"; @@ -22,8 +35,5 @@ }; }; }; - - userName = "Emile Clark-Boman"; - userEmail = "eclarkboman@gmail.com"; }; } From 0129fe2b9740db4a37a1fad0daa49d4b3645edb3 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 8 Aug 2025 14:08:50 +1000 Subject: [PATCH 003/107] renamed TODO -> +.md --- TODO => TODO.md | 1 - 1 file changed, 1 deletion(-) rename TODO => TODO.md (98%) diff --git a/TODO b/TODO.md similarity index 98% rename from TODO rename to TODO.md index bb8e65c..6b9f235 100644 --- a/TODO +++ b/TODO.md @@ -1,5 +1,4 @@ ## Next Up -0. Rename TODO -> TODO.md 1. Rename user "ae" to "cry" or "vps" 2. Add 404 page to nginx on hyrule 3. Add a user called "mirror" that stores important mirrors (inspiration: https://git.gay/mirror) From d3a642fafbea6285533db3d734879fecc3e0872d Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 8 Aug 2025 20:13:51 +1000 Subject: [PATCH 004/107] add "box" script for managing temp directories --- scripts/box | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 scripts/box diff --git a/scripts/box b/scripts/box new file mode 100755 index 0000000..7f69cb0 --- /dev/null +++ b/scripts/box @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +USAGE="Usage: box [--enter]" + +# ===== Configuration ===== # +DATA_DIR="$HOME/.data/box" +# ========================= # + +function setup { + mkdir -p "$DATA_DIR" &>/dev/null +} + +function box { + mktemp -d + # TODO: use a custom name instead +} + +set -euo pipefail + +ENTER=false +for arg in $@; do + case "$arg" in + -e|--enter) + ENTER=true + shift + ;; + -h|--help) + echo "$USAGE" + ;; + -*) + echo "[!] Unknown opt \"$arg\"" >&2 + ;; + *) + echo "[!] Unknown arg \"$arg\"" >&2 + ;; + esac +done + +setup + +BOX=$(box) + +if [[ "$ENTER" == true ]]; then + cd "$BOX" +fi From d68132b8fb4fc76cab1e86a6c9c929e2e1889c48 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 8 Aug 2025 20:14:52 +1000 Subject: [PATCH 005/107] make fish dotfiles more verbose + add gitignore function to generate .gitignore files --- homes/modules/fish.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index eaca566..8fdcc4b 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -12,6 +12,14 @@ config = { programs.fish = { enable = true; + generateCompletions = true; + + vendor = { + config.enable = true; + functions.enable = true; + completions.enable = true; + }; + interactiveShellInit = '' # add dotnet completions if it exists (ie we're in a virtual environment) if type -q dotnet @@ -27,8 +35,13 @@ echo -n $greetings[(random 1 (count $greetings))] end + function gitignore -a type + curl -sL "https://www.gitignore.io/api/$type" + end + set -g fish_greeting (rand_greet) ''; + plugins = [ { name = "grc"; From 7ab29bfe07261abc7c9b05c868303577489e01f2 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 8 Aug 2025 20:15:44 +1000 Subject: [PATCH 006/107] add custom huggingface_hub packages (learning from hf-cli's authentication workflow) --- hosts/packages/huggingface_hub/flake.nix | 35 +++++++++++ hosts/packages/huggingface_hub/hf-xet.nix | 56 +++++++++++++++++ .../huggingface_hub/huggingface_hub.nix | 62 +++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 hosts/packages/huggingface_hub/flake.nix create mode 100644 hosts/packages/huggingface_hub/hf-xet.nix create mode 100644 hosts/packages/huggingface_hub/huggingface_hub.nix diff --git a/hosts/packages/huggingface_hub/flake.nix b/hosts/packages/huggingface_hub/flake.nix new file mode 100644 index 0000000..37814d9 --- /dev/null +++ b/hosts/packages/huggingface_hub/flake.nix @@ -0,0 +1,35 @@ +# Template: https://nixos-and-flakes.thiscute.world/development/intro +{ + description = "Humanity's Last Exam - Devshell"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + }; + + outputs = {nixpkgs, ...}: let + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system; + }; + python = pkgs.python312.override { + self = python; + packageOverrides = pyfinal: pyprev: { + huggingface-hub = pyfinal.callPackage ./huggingface_hub.nix {}; + hf-xet = pyfinal.callPackage ./hf-xet.nix {}; + }; + }; + in { + devShells."${system}".default = pkgs.mkShell { + packages = [ + (python.withPackages (pypkgs: [ + pypkgs.huggingface-hub + ])) + ]; + + shell = "${pkgs.bash}/bin/bash"; + shellHook = '' + alias hf=huggingface-cli + ''; + }; + }; +} diff --git a/hosts/packages/huggingface_hub/hf-xet.nix b/hosts/packages/huggingface_hub/hf-xet.nix new file mode 100644 index 0000000..0f4c631 --- /dev/null +++ b/hosts/packages/huggingface_hub/hf-xet.nix @@ -0,0 +1,56 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pkg-config, + rustPlatform, + openssl, +}: +buildPythonPackage rec { + pname = "hf-xet"; + version = "1.1.5"; + pyproject = true; + + src = fetchFromGitHub { + owner = "huggingface"; + repo = "xet-core"; + tag = "v${version}"; + hash = "sha256-udjZcXTH+Mc4Gvj6bSPv1xi4MyXrLeCYav+7CzKWyhY="; + }; + + sourceRoot = "${src.name}/hf_xet"; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit + pname + version + src + sourceRoot + ; + hash = "sha256-PTzYubJHFvhq6T3314R4aqBAJlwehOqF7SbpLu4Jo6E="; + }; + + nativeBuildInputs = [ + pkg-config + rustPlatform.cargoSetupHook + rustPlatform.maturinBuildHook + ]; + + buildInputs = [ + openssl + ]; + + env.OPENSSL_NO_VENDOR = 1; + + pythonImportsCheck = ["hf_xet"]; + + # No tests (yet?) + doCheck = false; + + meta = { + description = "Xet client tech, used in huggingface_hub"; + homepage = "https://github.com/huggingface/xet-core/tree/main/hf_xet"; + changelog = "https://github.com/huggingface/xet-core/releases/tag/v${version}"; + license = lib.licenses.asl20; + }; +} diff --git a/hosts/packages/huggingface_hub/huggingface_hub.nix b/hosts/packages/huggingface_hub/huggingface_hub.nix new file mode 100644 index 0000000..02b03b7 --- /dev/null +++ b/hosts/packages/huggingface_hub/huggingface_hub.nix @@ -0,0 +1,62 @@ +/* +* WARNING: Just use `pkgs.python312Packages.huggingface-hub` (or change python version) +* WARNING: I didn't realise it existed when I packaged this. +* +* Nix Resources: +* 1. https://wiki.nixos.org/wiki/Python +* 2. https://nixos.org/manual/nixpkgs/unstable/#developing-with-python +* +* Hugging Face Resources: +* 1. https://github.com/huggingface/huggingface_hub +* 2. https://huggingface.co/docs/huggingface_hub/main/en/guides/cli +*/ +{ + lib, + buildPythonPackage, + fetchPypi, + # build time dependencies + setuptools, + # runtime dependencies + filelock, + fsspec, + hf-xet, + pyyaml, + requests, + tqdm, + typing-extensions, +}: +buildPythonPackage rec { + pname = "huggingface_hub"; + version = "0.34.3"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-1YEw/VqnQISAaBR1SRwKvX6DVEIIL7w+9NRbbDn4OFM="; + }; + + pyproject = true; + doCheck = false; # skip unit testing + pythonImportsCheck = ["huggingface_hub"]; + + # buildtime dependencies + build-system = [ + setuptools + ]; + # runtime dependencies + dependencies = [ + filelock + fsspec + hf-xet + pyyaml + requests + tqdm + typing-extensions + ]; + + meta = rec { + description = "The official Python client for the Huggingface Hub."; + homepage = "https://github.com/huggingface/huggingface_hub"; + changelog = "${homepage}/releases/tag/v${version}"; + license = lib.licenses.asl20; # Apache License 2.0 + }; +} From 63e8a31e7fbe95355e753eaa9e95c086a9559243 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 8 Aug 2025 20:20:13 +1000 Subject: [PATCH 007/107] add fish function for file name searching --- homes/modules/fish.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index 8fdcc4b..bf496db 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -39,6 +39,11 @@ curl -sL "https://www.gitignore.io/api/$type" end + # ripgrep on files + function rgf + rg --files | rg $args + end + set -g fish_greeting (rand_greet) ''; From 7069840beb9a5a1fea4aca3fe094137c58cf3b35 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 12 Aug 2025 21:11:08 +1000 Subject: [PATCH 008/107] add gwenview + libreoffice apps --- hosts/myputer/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 369fc20..e120f67 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -208,6 +208,8 @@ in { hyprpicker qbittorrent signal-desktop + kdePackages.gwenview # image viewer + libreoffice (callPackage ../sddm-theme-corners.nix {}).sddm-theme-corners # dependencies for my sddm theme: From 60a6b07c9dc20f93669516892bbcb27c32700762 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 12 Aug 2025 21:11:38 +1000 Subject: [PATCH 009/107] comment programs.fish.vendor.* --- homes/modules/fish.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/homes/modules/fish.nix b/homes/modules/fish.nix index bf496db..0728abc 100755 --- a/homes/modules/fish.nix +++ b/homes/modules/fish.nix @@ -14,11 +14,11 @@ enable = true; generateCompletions = true; - vendor = { - config.enable = true; - functions.enable = true; - completions.enable = true; - }; + # vendor = { + # config.enable = true; + # functions.enable = true; + # completions.enable = true; + # }; interactiveShellInit = '' # add dotnet completions if it exists (ie we're in a virtual environment) From dc12ab717b99149d19d3b7b07aa5919da51f2be2 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 14:54:59 +1000 Subject: [PATCH 010/107] remove gamescope.desktop entry, add GE Proton --- hosts/modules/steam.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hosts/modules/steam.nix b/hosts/modules/steam.nix index 07f3ae1..5c72185 100644 --- a/hosts/modules/steam.nix +++ b/hosts/modules/steam.nix @@ -14,11 +14,15 @@ programs = { steam = { enable = true; - gamescopeSession.enable = true; + gamescopeSession.enable = false; # .desktop entry for gamescope remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; localNetworkGameTransfers.openFirewall = true; + + extraCompatPackages = with pkgs; [ + proton-ge-bin + ]; }; gamemode.enable = true; From 7ecf75bef5268933a2cc05e66184e2a2a991d127 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 14:55:27 +1000 Subject: [PATCH 011/107] add hypr screenshot utility --- hosts/myputer/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index e120f67..87cd7f9 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -206,6 +206,7 @@ in { bluetui wl-clipboard # clipboard for wayland hyprpicker + hyprshot # screenshot utility qbittorrent signal-desktop kdePackages.gwenview # image viewer From 186c0c741afad6d24c03af111919145019fc7821 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 14:56:01 +1000 Subject: [PATCH 012/107] add binary debug utils --- hosts/myputer/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 87cd7f9..bb00197 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -223,10 +223,11 @@ in { shellcheck grc # colorise command outputs - # Systems Emulation + # Systems Programming & Compilation qemu # Fellice Bellard's Quick Emulator - # Make gnumake + strace + ltrace # C Family gcc clang From 98244e7ecfbdf9e6d0e92384e909e57abe640ce1 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 14:56:23 +1000 Subject: [PATCH 013/107] (test) openvas on myputer --- hosts/myputer/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index bb00197..af7b5c8 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -212,6 +212,11 @@ in { kdePackages.gwenview # image viewer libreoffice + # TEST: WARNING + # ospd-openvas + # openvas-scanner + # openvas-smb + (callPackage ../sddm-theme-corners.nix {}).sddm-theme-corners # dependencies for my sddm theme: pkgs.libsForQt5.qt5.qtgraphicaleffects From db0a34ebbd1d68d2fa31fa7fa4486cf476a7ca38 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 15:19:51 +1000 Subject: [PATCH 014/107] ltrace/strace for lolcathost --- hosts/lolcathost/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index ef23633..1452d6e 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -235,6 +235,8 @@ in { # GNU Utils gnumake binutils + strace + ltrace # C Family gcc clang From 99a0adb621c1b7505c0baaabec4818d2fb8bb2ab Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 23:23:10 +1000 Subject: [PATCH 015/107] add list syscalls script --- scripts/lsyscalls | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100755 scripts/lsyscalls diff --git a/scripts/lsyscalls b/scripts/lsyscalls new file mode 100755 index 0000000..5cbd744 --- /dev/null +++ b/scripts/lsyscalls @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +# USAGE: lsyscalls | sort [-nk2] + +echo -e '#include '\ + | cpp -dM \ + | grep "#define __NR_.*[0-9]$" \ + | cut -d_ -f 4- From 1f35c727ed4fe1e76d5c82d4d923926e74a2dfa1 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 23:25:25 +1000 Subject: [PATCH 016/107] progress home-manager --- hosts/myputer/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 7ca8449..a8f1629 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -7,7 +7,7 @@ }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "026rvynmzmpigax9f8gy9z67lsl6dhzv2p6s8wz4w06v3gjvspm1"; + sha256 = "1wl2plp37a8qw26h6cj3ah6rq8bd3awl2938h5cm9b8ncxn4s1k8"; }; in { imports = [ From a33e8a0147b4baf1778a000062ed7196eb3a6d1e Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 23:26:08 +1000 Subject: [PATCH 017/107] provide nixpkgs-unstable to homemanager (myputer) --- hosts/myputer/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index a8f1629..316463a 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -1,6 +1,7 @@ { lib, pkgs, + pkgs-unstable, inputs, config, ... @@ -183,6 +184,7 @@ in { home-manager = { users.me = import ../../homes/me; + extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;}; sharedModules = [ inputs.ags.homeManagerModules.default ]; From 95bf9fe6adc2cc3ac85f5e7499087a1df812ddfd Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 23:26:30 +1000 Subject: [PATCH 018/107] add nasm pkg --- hosts/lolcathost/default.nix | 3 +++ hosts/myputer/default.nix | 3 +++ 2 files changed, 6 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 1452d6e..753ab1b 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -234,9 +234,12 @@ in { qemu # Fellice Bellard's Quick Emulator # GNU Utils gnumake + # Binaries binutils strace ltrace + # ASM + nasm # C Family gcc clang diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 316463a..528c87d 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -235,9 +235,12 @@ in { qemu # Fellice Bellard's Quick Emulator # GNU Utils gnumake + # Binaries binutils strace ltrace + # ASM + nasm # C Family gcc clang From eb02262ae67189936485a7310bc0f821e353cb3f Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 31 Aug 2025 23:27:08 +1000 Subject: [PATCH 019/107] add x86-manpages derivation (ISA manpages) --- hosts/lolcathost/default.nix | 1 + hosts/myputer/default.nix | 1 + hosts/packages/x86-manpages/default.nix | 32 +++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 hosts/packages/x86-manpages/default.nix diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 753ab1b..be4c996 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -240,6 +240,7 @@ in { ltrace # ASM nasm + (callPackage ../packages/x86-manpages {}) # C Family gcc clang diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 528c87d..b0c8f6c 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -241,6 +241,7 @@ in { ltrace # ASM nasm + (callPackage ../packages/x86-manpages {}) # C Family gcc clang diff --git a/hosts/packages/x86-manpages/default.nix b/hosts/packages/x86-manpages/default.nix new file mode 100644 index 0000000..b687422 --- /dev/null +++ b/hosts/packages/x86-manpages/default.nix @@ -0,0 +1,32 @@ +{pkgs, ...}: +pkgs.stdenv.mkDerivation { + pname = "x86-manpages"; + version = "0.0.1"; + + src = pkgs.fetchFromGitHub { + owner = "ttmo-O"; + repo = "x86-manpages"; + + ## Recommended + # rev = "0e199a8b4d90be7eb715291c21cf41de8527beac"; + # sha256 = "0im596j0pf90npg933gkq6wpw23c47fcwv0n64qfqn5mcy92qbcb"; + rev = "94902f9c45de0efe803c32b6c3e88d6623881866"; + sha256 = "0k6nsfabzqwnhjiyw2kyg0z49nzrsxn515f6dcjh1rn7bzih5562"; + }; + + installPhase = '' + mkdir -p $out/man/man7 + + shopt -u nullglob + for m in man7/*.7; do + install -m 644 "$m" "$out/man/man7" + done + ''; + + meta = with pkgs.lib; { + description = "Manpages for x86 instructions"; + homepage = "https://github.com/ttmo-O/x86-manpages"; + license = licenses.mit; + platforms = platforms.all; + }; +} From 364efb25ead548c72746508070e5d4f5d520baf1 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 3 Sep 2025 00:24:41 +1000 Subject: [PATCH 020/107] dbus sucks i wanna cry :( --- hosts/lolcathost/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index be4c996..2450c55 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -121,11 +121,11 @@ in { ); }; - dbus = { - # NOTE: programs.uwsm.enable sets implementation to dbus-broker, - # NOTE: however this seems to break dbus - implementation = lib.mkForce "dbus"; - }; + # dbus = { + # # NOTE: programs.uwsm.enable sets implementation to dbus-broker, + # # NOTE: however this seems to break dbus + # implementation = lib.mkForce "dbus"; + # }; # Multimedia Framework # With backwards compatability for alsa/pulseaudio/jack From 6fbaf7fe893a53e277ebaa70dfdf43e8da687ce7 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 3 Sep 2025 00:37:55 +1000 Subject: [PATCH 021/107] add haskell support --- homes/modules/editor/helix.nix | 10 ++++++++++ hosts/lolcathost/default.nix | 3 +++ hosts/myputer/default.nix | 3 +++ 3 files changed, 16 insertions(+) diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index e7d6003..3c1443d 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -136,6 +136,12 @@ formatter.command = "${pkgs.clang-tools}/bin/clang-format"; language-servers = ["clangd"]; } + { + name = "haskell"; + auto-format = true; + formatter.command = "${pkgs.ormolu}/bin/ormolu"; + language-servers = ["haskell-language-server"]; + } ]; language-server = { @@ -149,6 +155,10 @@ clangd = { command = "${pkgs.clang-tools}/bin/clangd"; }; + + haskell-language-server = { + command = "${pkgs.haskell-language-server}/bin/haskell-language-server-wrapper"; + }; }; }; }; diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 2450c55..765118b 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -253,6 +253,9 @@ in { nimble # Go go + # Haskell + ghc + ghcid # Python python312 # I use 3.12 since it's in a pretty stable state now diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index b0c8f6c..dc525f9 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -254,6 +254,9 @@ in { nimble # Go go + # Haskell + ghc + ghcid # Python python312 # I use 3.12 since it's in a pretty stable state now From a35cedeecbaa5f12f99a4ed6d77225897aaa1378 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 3 Sep 2025 03:24:39 +1000 Subject: [PATCH 022/107] add haskell lsp + formatter --- hosts/lolcathost/default.nix | 2 ++ hosts/myputer/default.nix | 2 ++ 2 files changed, 4 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 765118b..12125e5 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -256,6 +256,8 @@ in { # Haskell ghc ghcid + haskell-language-server + ormolu # Python python312 # I use 3.12 since it's in a pretty stable state now diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index dc525f9..ea5710a 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -257,6 +257,8 @@ in { # Haskell ghc ghcid + haskell-language-server + ormolu # Python python312 # I use 3.12 since it's in a pretty stable state now From eaea98a362a2f2d54e6ce6c22a4afb4c99286370 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 3 Sep 2025 03:27:12 +1000 Subject: [PATCH 023/107] add hyprsunset (its 3am and im going blind............) --- hosts/modules/wm/hyprland.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hosts/modules/wm/hyprland.nix b/hosts/modules/wm/hyprland.nix index f2960ed..c83caa1 100644 --- a/hosts/modules/wm/hyprland.nix +++ b/hosts/modules/wm/hyprland.nix @@ -1,4 +1,8 @@ -{...}: { +{pkgs, ...}: { + environment.defaultPackages = with pkgs; [ + hyprsunset + ]; + programs = { hyprland = { enable = true; From c94e75bb0210cd61e40186d2a9ad19c5f923a50d Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 3 Sep 2025 11:13:13 +1000 Subject: [PATCH 024/107] mark all dev outputs for install --- hosts/lolcathost/default.nix | 15 ++++++++++----- hosts/myputer/default.nix | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 12125e5..02bd30f 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -198,12 +198,17 @@ in { }; # ---- ENVIRONMENT VARIABLES ---- - environment.sessionVariables = { - # folder names with capitalisation look awful! - XDG_DOWNLOAD_DIR = "$HOME/downloads"; + environment = { + # always install "dev" derivation outputs + extraOutputsToInstall = ["dev"]; - # Hint Electrons apps to use Wayland - NIXOS_OZONE_WL = "1"; + sessionVariables = { + # folder names with capitalisation look awful! + XDG_DOWNLOAD_DIR = "$HOME/downloads"; + + # Hint Electrons apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; }; # ---- SYSTEM PACKAGES ----- diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index ea5710a..ce1c838 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -191,12 +191,17 @@ in { }; # ---- ENVIRONMENT VARIABLES ---- - environment.sessionVariables = { - # folder names with capitalisation look awful! - XDG_DOWNLOAD_DIR = "$HOME/downloads"; + environment = { + # always install "dev" derivation outputs + extraOutputsToInstall = ["dev"]; - # Hint Electrons apps to use Wayland - NIXOS_OZONE_WL = "1"; + sessionVariables = { + # folder names with capitalisation look awful! + XDG_DOWNLOAD_DIR = "$HOME/downloads"; + + # Hint Electrons apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; }; # ---- SYSTEM PACKAGES ----- From 75751e308505c5d7330fd410879b784dca356a60 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Thu, 18 Sep 2025 19:48:07 +1000 Subject: [PATCH 025/107] always install derivation "man" ouputs --- hosts/lolcathost/default.nix | 2 +- hosts/myputer/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 02bd30f..b154d3c 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -200,7 +200,7 @@ in { # ---- ENVIRONMENT VARIABLES ---- environment = { # always install "dev" derivation outputs - extraOutputsToInstall = ["dev"]; + extraOutputsToInstall = ["dev" "man"]; sessionVariables = { # folder names with capitalisation look awful! diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index ce1c838..16df2cf 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -193,7 +193,7 @@ in { # ---- ENVIRONMENT VARIABLES ---- environment = { # always install "dev" derivation outputs - extraOutputsToInstall = ["dev"]; + extraOutputsToInstall = ["dev" "man"]; sessionVariables = { # folder names with capitalisation look awful! From cb6f98406565b7f6331ce329e5d0e6b1c450b17a Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 24 Sep 2025 13:30:20 +1000 Subject: [PATCH 026/107] add pkgs.moreutils --- hosts/lolcathost/default.nix | 1 + hosts/myputer/default.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index b154d3c..e0bfcb1 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -234,6 +234,7 @@ in { fish shellcheck grc # colorise command outputs + moreutils # Systems Emulation qemu # Fellice Bellard's Quick Emulator diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 16df2cf..2749192 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -235,6 +235,7 @@ in { fish shellcheck grc # colorise command outputs + moreutils # Systems Programming & Compilation qemu # Fellice Bellard's Quick Emulator From 81c7c25c6f90cf9d43d91d2230edb775e4edc4f7 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 26 Sep 2025 23:18:45 +1000 Subject: [PATCH 027/107] add hexyl, timg, and other --- hosts/lolcathost/default.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index e0bfcb1..54efd89 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -244,6 +244,7 @@ in { binutils strace ltrace + hexyl # ASM nasm (callPackage ../packages/x86-manpages {}) @@ -265,6 +266,14 @@ in { haskell-language-server ormolu + # Nix + # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) + # helix will support nixd by default + # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix + nixd # lsp for nix + nix-prefetch-git + nix-index + # Python python312 # I use 3.12 since it's in a pretty stable state now python314 # also 3.14 for latest features @@ -288,23 +297,18 @@ in { zoxide doggo tldr - # btop + btop eza yazi lazygit ripgrep viddy # modern `watch` command thefuck - - # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) - # helix will support nixd by default - # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix - nixd # lsp for nix + timg # terminal image (sixel) viewer # Pretty necessary git git-filter-repo - nix-prefetch-git brightnessctl acpi # upower From bf22bfbcf48a0a1c5ee8b1f1b3f02bbd9e7a1865 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:18:26 +1000 Subject: [PATCH 028/107] enable NIX_SHELL_PRESERVE_PROMPT --- homes/me/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homes/me/default.nix b/homes/me/default.nix index fac7454..194d568 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -35,6 +35,10 @@ man = "batman"; # bat + man }; + sessionVariables = { + NIX_SHELL_PRESERVE_PROMPT = 1; + }; + pointerCursor = { gtk.enable = true; # x11.enable = true # dont enable since im on hyprland From f9df463872f4dd0d811d7d157485393f4e21fdf2 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:20:37 +1000 Subject: [PATCH 029/107] add dotnet9 --- hosts/lolcathost/default.nix | 5 +++++ hosts/myputer/default.nix | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 54efd89..86ef3d5 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -281,6 +281,11 @@ in { # Sage sageWithDoc # SageMath + HTML Documentation + # .NET + dotnetCorePackages.dotnet_9.sdk + dotnetCorePackages.dotnet_9.aspnetcore + dotnetCorePackages.dotnet_9.runtime + openvpn inetutils diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 2749192..d51934f 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -273,6 +273,11 @@ in { # Sage sageWithDoc # SageMath + HTML Documentation + # .NET + dotnetCorePackages.dotnet_9.sdk + dotnetCorePackages.dotnet_9.aspnetcore + dotnetCorePackages.dotnet_9.runtime + openvpn inetutils From 3e1d10617908897f4af7be482f927025fc160d9f Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:21:56 +1000 Subject: [PATCH 030/107] add pstree + lz4 --- hosts/lolcathost/default.nix | 2 ++ hosts/myputer/default.nix | 2 ++ 2 files changed, 4 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 86ef3d5..be8db92 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -325,8 +325,10 @@ in { file wget tree + pstree unzip unrar-free + lz4 man-pages man-pages-posix diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index d51934f..d424817 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -323,8 +323,10 @@ in { file wget tree + pstree unzip unrar-free + lz4 man-pages man-pages-posix From 120b753882a49ba484e587e91a18a858a90cd452 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:24:16 +1000 Subject: [PATCH 031/107] (attempt) fix dbus service for bluetui manually configure resolvd with CloudFlare's WARP+ DNS --- hosts/lolcathost/default.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index be8db92..376140e 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -100,10 +100,30 @@ in { networkmanager.enable = true; firewall.enable = false; + + # Use CloudFlare's WARP+ 1.1.1.1 DNS service + nameservers = [ + "1.1.1.1#one.one.one.one" + "1.0.0.1#one.one.one.one" + ]; }; # ----- SERVICES ----- services = { + # systemd-resolved provides network name resolution + # to local processes via a D-Bus interface. + resolved = { + enable = true; + dnssec = "true"; + domains = ["~."]; + # Use CloudFlare's WARP+ 1.1.1.1 DNS service + fallbackDns = [ + "1.1.1.1#one.one.one.one" + "1.0.0.1#one.one.one.one" + ]; + dnsovertls = "true"; + }; + # Set display manager (login screen) displayManager = { # sddm relies on pkgs.libsForQt5.qt5.qtgraphicaleffects From 70ed4a9a38ddef2c8b6378a7457d54af2281368c Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:30:18 +1000 Subject: [PATCH 032/107] add hosts/modules/bashistrans.nix --- hosts/lolcathost/default.nix | 18 ++---------------- hosts/modules/bashistrans.nix | 23 +++++++++++++++++++++++ hosts/myputer/default.nix | 2 ++ 3 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 hosts/modules/bashistrans.nix diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 376140e..dbdaba0 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -15,6 +15,8 @@ in { ./hardware-configuration.nix (import "${home-manager}/nixos") + ../modules/bashistrans.nix + ../modules/wm/hyprland.nix # ../modules/wm/river.nix ../modules/wm/crywl.nix @@ -375,22 +377,6 @@ in { nix-ld.enable = true; - # I want to use fish as my login shell but it always goes terrible - # cause it isn't POSIX compliant, so instead Bash is my login and - # will just exec fish (^-^) - bash = { - blesh.enable = false; # ble.sh replacement for GNU readline - completion.enable = true; - - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; - }; - # Thunar also uses: `services.tumbler` & `services.gvfs` thunar = { enable = true; diff --git a/hosts/modules/bashistrans.nix b/hosts/modules/bashistrans.nix new file mode 100644 index 0000000..d3b285c --- /dev/null +++ b/hosts/modules/bashistrans.nix @@ -0,0 +1,23 @@ +{pkgs, ...}: { + # I want to use fish as my login shell but it always goes terrible + # cause it isn't POSIX compliant, so instead Bash is my login and + # will just exec fish (^-^) + programs.bash = { + blesh.enable = false; # ble.sh replacement for GNU readline + completion.enable = true; + + interactiveShellInit = '' + # help bash transition into a beautiful fish! + if [[ -z $CRY_BASH_IS_TRANS ]] + then + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi + fi + # bash is trans now! (no more transitioning required) + export CRY_BASH_IS_TRANS=true + ''; + }; +} diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index d424817..6844dcc 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -15,6 +15,8 @@ in { ./hardware-configuration.nix (import "${home-manager}/nixos") + ../modules/bashistrans.nix + ../modules/wm/hyprland.nix ../modules/steam.nix From 5c955e52322b331420371c85023a5136963c451a Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:40:21 +1000 Subject: [PATCH 033/107] (attempt) package CrazyCraft void launcher for my partner lol --- hosts/myputer/default.nix | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 6844dcc..b43fa6c 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -30,6 +30,13 @@ in { "nix-command" "flakes" ]; + # nixpkgs.overlays = [ + # (self: super: { + # jdk17 = super.jdk17.override (prev: { + # enableJavaFX = true; + # }); + # }) + # ]; nixpkgs.config.allowUnfreePredicate = let whitelist = map lib.getName [ @@ -268,6 +275,18 @@ in { haskell-language-server ormolu + # Java + # jdk17 + # (jre8.overrideAttrs + # (oldAttrs: { + # enableJavaFX = true; + # })) + # (jdk8.overrideAttrs + # (oldAttrs: { + # enableJavaFX = true; + # })) + visualvm + # Python python312 # I use 3.12 since it's in a pretty stable state now python314 # also 3.14 for latest features @@ -404,6 +423,18 @@ in { # mozilla's email client thunderbird.enable = true; + + java = let + # XXX: WARNING: TEST :WARNING: XXX + # Test for CrazyCraft VoidLauncher + myjdk = pkgs.jdk17.override { + enableJavaFX = true; + # openjfx_jdk = pkgs.openjfx17.override {withWebKit = true;}; + }; + in { + enable = true; + package = myjdk; + }; }; # ----- FONTS ----- From c05db6797455b031c9bc6e8eb2a17f1d7fbf72e4 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:40:54 +1000 Subject: [PATCH 034/107] progress hyrule home-manager --- hosts/hyrule/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index 6ac57a5..e0da1d6 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -7,7 +7,7 @@ }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "026rvynmzmpigax9f8gy9z67lsl6dhzv2p6s8wz4w06v3gjvspm1"; + sha256 = "0d41gr0c89a4y4lllzdgmbm54h9kn9fjnmavwpgw0w9xwqwnzpax"; }; in { imports = [ From a04641fc9dc6c05fe1132a2cbeae4e03f02b4eb3 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:41:20 +1000 Subject: [PATCH 035/107] (temp) disable hyrule's minecraft server --- hosts/hyrule/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index e0da1d6..325e467 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -14,8 +14,9 @@ in { ./hardware-configuration.nix (import "${home-manager}/nixos") - ./mailserver.nix # TEMP: location - ./minecraft-server.nix # TEMP: location + # ./mailserver.nix # TEMP: location + # ./minecraft-server.nix # TEMP: location + #../modules/server/nginx.nix #../modules/server/ssh.nix #../modules/server/fail2ban.nix From 2da00759924a82edbcaaaaa8e09cf8db57ab9da2 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:43:26 +1000 Subject: [PATCH 036/107] add radare2, gdb, perf-tools --- hosts/lolcathost/default.nix | 8 ++++++-- hosts/myputer/default.nix | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index dbdaba0..9075286 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -266,6 +266,9 @@ in { binutils strace ltrace + perf-tools # ftrace + perf + radare2 + gdb hexyl # ASM nasm @@ -273,15 +276,16 @@ in { # C Family gcc clang + clang-tools # Rust cargo rustc + # Go + go # Nim nim nimble - # Go - go # Haskell ghc ghcid diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index b43fa6c..ef640c7 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -254,6 +254,9 @@ in { binutils strace ltrace + perf-tools # ftrace + perf + radare2 + gdb # ASM nasm (callPackage ../packages/x86-manpages {}) @@ -261,14 +264,15 @@ in { gcc clang clang-tools + # Rust cargo rustc + # Go + go # Nim nim nimble - # Go - go # Haskell ghc ghcid From 2dde0450c410e2ca1a6101b8ecce1480a8043df4 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 09:43:40 +1000 Subject: [PATCH 037/107] add discord --- hosts/myputer/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index ef640c7..af9b257 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -46,6 +46,7 @@ in { pkgs.steamcmd pkgs.steam-unwrapped pkgs.dwarf-fortress + pkgs.discord ]; in pkg: builtins.elem (lib.getName pkg) whitelist; From d094fbb26fed01902193574491afbdc14a39244f Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 21:19:26 +1000 Subject: [PATCH 038/107] helix now supports C# LSP --- homes/modules/editor/helix.nix | 21 +++++++++++++++++++++ hosts/myputer/default.nix | 1 + 2 files changed, 22 insertions(+) diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index 3c1443d..8d6e22c 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -142,6 +142,22 @@ formatter.command = "${pkgs.ormolu}/bin/ormolu"; language-servers = ["haskell-language-server"]; } + # { + # name = "c-sharp"; + # source = "source.cs"; + # file-types = ["cs"]; + # indent = { + # tab-width = 4; + # unit = " "; + # }; + # block-comment-tokens = { + # start = "/*"; + # end = "*/"; + # }; + # # auto-format = false; + # # formatter.command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; + # # language-servers = ["OmniSharp"]; + # } ]; language-server = { @@ -159,6 +175,11 @@ haskell-language-server = { command = "${pkgs.haskell-language-server}/bin/haskell-language-server-wrapper"; }; + + # C# language services + OmniSharp = { + command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; + }; }; }; }; diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index af9b257..5a866c2 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -303,6 +303,7 @@ in { dotnetCorePackages.dotnet_9.sdk dotnetCorePackages.dotnet_9.aspnetcore dotnetCorePackages.dotnet_9.runtime + omnisharp-roslyn openvpn inetutils From 8ec227aa10fc739f61a3b85c4ba0b9a03e691f23 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 21:19:37 +1000 Subject: [PATCH 039/107] add cute lil banner --- banner | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 banner diff --git a/banner b/banner new file mode 100644 index 0000000..67e1bd9 --- /dev/null +++ b/banner @@ -0,0 +1,6 @@ + .------------. + | oh my | + '------------' + ^ (\_(\ + '----- ( -.-) + o_(")(") From 328c628291d010eddebc3ff2def75ed1aaa6bc71 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 21:19:53 +1000 Subject: [PATCH 040/107] (temp) add notes on screensharing --- SCREENSHARING | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 SCREENSHARING diff --git a/SCREENSHARING b/SCREENSHARING new file mode 100644 index 0000000..d3046f6 --- /dev/null +++ b/SCREENSHARING @@ -0,0 +1,11 @@ +Excellent Resource +https://gist.github.com/brunoanc/2dea6ddf6974ba4e5d26c3139ffb7580#install-xdg-desktop-portal-and-friends + +Hyprland official page on screensharing +https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/ + + +Multiple sources seem to think that use xdg-desktop-portal-wlr works (but I can't stream individual applications) +but I suppose that's better than nothing? + +Also check out xwaylandvideobridge From 4e615703a66fa03770e9afd837fd0a2d586d2651 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Mon, 6 Oct 2025 21:21:28 +1000 Subject: [PATCH 041/107] i dont need this anymore --- flake.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/flake.nix b/flake.nix index 382bca6..3d40a53 100644 --- a/flake.nix +++ b/flake.nix @@ -5,11 +5,6 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; - #home-manager = { - # url = "github:nix-community/home-manager"; - # inputs.nixpkgs.follows = "nixpkgs"; - #}; - grub2-themes.url = "github:vinceliuice/grub2-themes"; ags.url = "github:Aylur/ags"; From d26b8af26f622bc48e74c57612491f619dd8f642 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 7 Oct 2025 12:49:56 +1000 Subject: [PATCH 042/107] add work conditional .gitconfig --- homes/modules/git.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/homes/modules/git.nix b/homes/modules/git.nix index 82d0f1e..c2578a8 100755 --- a/homes/modules/git.nix +++ b/homes/modules/git.nix @@ -35,5 +35,12 @@ }; }; }; + + includes = [ + { + path = "/home/me/agribit/.gitconfig"; + condition = "gitdir:/home/me/agribit/"; + } + ]; }; } From c46d9665a180447bfb62fc89149129465ca2854c Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 8 Oct 2025 10:39:41 +1000 Subject: [PATCH 043/107] fix conditional .gitconfig --- homes/modules/git.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/homes/modules/git.nix b/homes/modules/git.nix index c2578a8..fdf6afb 100755 --- a/homes/modules/git.nix +++ b/homes/modules/git.nix @@ -33,13 +33,19 @@ "github:" ]; }; + "https://gitlab.com/" = { + insteadOf = [ + "gl:" + "gitlab:" + ]; + }; }; }; includes = [ { path = "/home/me/agribit/.gitconfig"; - condition = "gitdir:/home/me/agribit/"; + condition = "gitdir:/home/me/agribit/**"; } ]; }; From 78c75ea740abd19744adb5967105d742aaaa879a Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 8 Oct 2025 10:59:14 +1000 Subject: [PATCH 044/107] add NetCoreDbg for helix --- hosts/myputer/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 5a866c2..50d3bf6 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -8,7 +8,7 @@ }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "1wl2plp37a8qw26h6cj3ah6rq8bd3awl2938h5cm9b8ncxn4s1k8"; + sha256 = "0q3lv288xlzxczh6lc5lcw0zj9qskvjw3pzsrgvdh8rl8ibyq75s"; }; in { imports = [ @@ -304,6 +304,7 @@ in { dotnetCorePackages.dotnet_9.aspnetcore dotnetCorePackages.dotnet_9.runtime omnisharp-roslyn + netcoredbg openvpn inetutils From f51ac822e0eb26112c7b137b081182969ff7038f Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 8 Oct 2025 11:15:21 +1000 Subject: [PATCH 045/107] enable vscodium --- homes/me/default.nix | 4 +--- homes/modules/editor/vscodium.nix | 12 ++++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/homes/me/default.nix b/homes/me/default.nix index 194d568..86b4c0b 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -12,12 +12,10 @@ ../modules/bat.nix ../modules/fish.nix ../modules/editor/helix.nix - # ../modules/editor/vscodium.nix + ../modules/editor/vscodium.nix ../modules/btop.nix - ../modules/term/ghostty.nix ../modules/term/foot.nix - # ../modules/term/rio.nix ../modules/firefox.nix #../modules/wm/hypr/hypridle.nix diff --git a/homes/modules/editor/vscodium.nix b/homes/modules/editor/vscodium.nix index c5daf64..5309bf7 100644 --- a/homes/modules/editor/vscodium.nix +++ b/homes/modules/editor/vscodium.nix @@ -1,9 +1,17 @@ {pkgs, ...}: { + # REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05 programs.vscode = { enable = true; package = pkgs.vscodium; - extensions = with pkgs.vscode-extensions; [ - ]; + mutableExtensionsDir = true; + + profiles.default = { + enableUpdateCheck = false; + enableExtensionUpdateCheck = false; + extensions = with pkgs.vscode-extensions; [ + dracula-theme.theme-dracula + ]; + }; }; } From a29c66e35d5a52a57682080b4a2747cf557a0554 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:44:02 +1000 Subject: [PATCH 046/107] add mako notification daemon --- config.temp/hyprland.conf | 1 + homes/me/default.nix | 1 + homes/modules/mako.nix | 54 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 homes/modules/mako.nix diff --git a/config.temp/hyprland.conf b/config.temp/hyprland.conf index 864b184..7243478 100755 --- a/config.temp/hyprland.conf +++ b/config.temp/hyprland.conf @@ -40,6 +40,7 @@ $colorpicker = hyprpicker | head -c 7 | wl-copy # exec-once = nm-applet & # exec-once = waybar & hyprpaper & firefox exec-once = swww-daemon & +exec-once = mako & # TODO: or do I do `swww init` or `swww restore`? # █▀▀ █▄░█ █░█   █░█ ▄▀█ █▀█ diff --git a/homes/me/default.nix b/homes/me/default.nix index 86b4c0b..46b2de6 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -22,6 +22,7 @@ ../modules/wm/hypr/hyprlock.nix ../modules/kanshi.nix ../modules/ags + ../modules/mako.nix ]; home = { diff --git a/homes/modules/mako.nix b/homes/modules/mako.nix new file mode 100644 index 0000000..762cd96 --- /dev/null +++ b/homes/modules/mako.nix @@ -0,0 +1,54 @@ +{...}: let + dracula = rec { + background = "#282A36"; + border = cyan; + + cyan = "#8BE9FD"; + yellow = "#F1FA8C"; + red = "#FF5555"; + }; + + theme = dracula; +in { + # notification daemon for Wayland + services.mako = { + enable = true; + settings = { + actions = true; + anchor = "top-right"; + layer = "overlay"; + sort = "-time"; + + height = 100; + width = 300; + margin = 50; + background-color = theme.background; + border-color = theme.border; + border-radius = 20; + border-size = 4; + font = "monospace 10"; + + markup = true; + icons = true; + max-icon-size = 64; + + default-timeout = 5000; + ignore-timeout = false; + + "actionable=true" = { + anchor = "top-left"; + }; + + "urgency=low" = { + border-color = theme.border; + }; + "urgency=normal" = { + border-color = theme.yellow; + }; + "urgency=high" = { + default-timeout = 0; + border-color = theme.red; + }; + }; + }; +} From 8e2aad53be8b8bd11f601993a5795ca859c22a10 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:45:00 +1000 Subject: [PATCH 047/107] customise vscodium --- homes/modules/editor/vscodium.nix | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/homes/modules/editor/vscodium.nix b/homes/modules/editor/vscodium.nix index 5309bf7..ecde271 100644 --- a/homes/modules/editor/vscodium.nix +++ b/homes/modules/editor/vscodium.nix @@ -1,4 +1,8 @@ -{pkgs, ...}: { +{ + lib, + pkgs, + ... +}: { # REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05 programs.vscode = { enable = true; @@ -9,9 +13,25 @@ profiles.default = { enableUpdateCheck = false; enableExtensionUpdateCheck = false; + # extension format: USER.PACKAGENAME extensions = with pkgs.vscode-extensions; [ + # .NET + ms-dotnettools.csharp + ms-dotnettools.csdevkit + ms-dotnettools.vscode-dotnet-runtime + # ms-dotnettools.vscode-dotnet-pack + # ms-dotnettools.dotnet-maui + + # Colors & Themes dracula-theme.theme-dracula + catppuccin.catppuccin-vsc + catppuccin.catppuccin-vsc-icons + mvllow.rose-pine ]; + + userSettings = { + "workbench.colorTheme" = "Dracula Theme"; + }; }; }; } From 1600fd2885695126d64aac7bb166ac83eeb34599 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:46:08 +1000 Subject: [PATCH 048/107] fix bashistrans (myputer) --- hosts/myputer/default.nix | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 50d3bf6..244f5eb 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -403,21 +403,6 @@ in { }; }; - # I want to use fish as my login shell but it always goes terrible - # cause it isn't POSIX compliant, so instead Bash is my login and - # will just exec fish (^-^) - bash = { - completion.enable = true; - - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; - }; - # Thunar also (optionally) requires: `services.tumbler` & `services.gvfs` thunar = { enable = true; From 1d54b413477480c64ff7e980a6cf4f202dcf50f8 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:47:20 +1000 Subject: [PATCH 049/107] replace vscodium -> vscode --- homes/me/default.nix | 9 ++- homes/modules/editor/vscode.nix | 134 ++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 2 deletions(-) create mode 100644 homes/modules/editor/vscode.nix diff --git a/homes/me/default.nix b/homes/me/default.nix index 46b2de6..ac87870 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -6,13 +6,13 @@ pkgs, pkgs-unstable, ... -}: { +} @ args: { imports = [ ../modules/git.nix ../modules/bat.nix ../modules/fish.nix ../modules/editor/helix.nix - ../modules/editor/vscodium.nix + (import ../modules/editor/vscode.nix args) ../modules/btop.nix ../modules/term/foot.nix @@ -25,6 +25,11 @@ ../modules/mako.nix ]; + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.GetName pkg) [ + "vscode-extension-ms-dotnettools-csharp" + ]; + home = { username = "me"; homeDirectory = "/home/me"; diff --git a/homes/modules/editor/vscode.nix b/homes/modules/editor/vscode.nix new file mode 100644 index 0000000..f824b1c --- /dev/null +++ b/homes/modules/editor/vscode.nix @@ -0,0 +1,134 @@ +{ + config, + lib, + pkgs, + vscodium ? false, + secret-service ? "gnome-libsecret", + vscode-argv ? ".vscode/argv.json", + ... +}: { + nixpkgs.overlays = [ + ( + self: super: { + vscode-extensions = super.vscode-extensions.overrideAttrs (prev: let + mkVscMarketplaceExtension = { + publisher, + name, + version, + hash, + description ? "", + homepage ? null, + changelog ? null, + license ? null, + maintainers ? [lib.maintainers.emileclarkb], + }: + with pkgs.vscode-utils.buildVscodeMarketplaceExtension; { + ${publisher}.${name} = buildVscodeMarketplaceExtension { + mktplcRef = { + inherit + publisher + name + version + hash + ; + }; + + meta = { + inherit + ( + if license != null + then {license = license;} + else {} + ) + description + homepage + maintainers + ; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=${publisher}.${name}"; + changelog = + if changelog != null + then changelog + else "https://marketplace.visualstudio.com/items/${publisher}.${name}/changelog"; + }; + }; + }; + in + lib.mergeAttrsList [ + (mkVscMarketplaceExtension { + publisher = "ms-dotnettools"; + name = "dotnet-maui"; + version = "1.11.14"; + hash = lib.fakeHash; + + description = "Extend C# Dev Kit with tools for building .NET Multi-platform App UI (MAUI) apps"; + homepage = "https://github.com/microsoft/vscode-dotnettools"; + license = lib.licenses.unfree; + }) + ]); + } + ) + ]; + + # REF: https://home-manager-options.extranix.com/?query=vscode&release=release-25.05 + programs.vscode = { + enable = true; + # TODO: clean up + package = + ( + if vscodium + then pkgs.vscodium + else pkgs.vscode + ).overrideAttrs (oldAttrs: { + # runtimeDependencies = oldAttrs.runtimeDependencies ++ [] + }); + + mutableExtensionsDir = true; + + profiles.default = { + enableUpdateCheck = false; + enableExtensionUpdateCheck = false; + # extension format: USER.PACKAGENAME + extensions = with pkgs.vscode-extensions; [ + # .NET + ms-dotnettools.csharp + ms-dotnettools.csdevkit + ms-dotnettools.vscode-dotnet-runtime + # TODO: these extensions aren't packaged :( + # deitry.solution-syntax + # ms-dotnettools.vscode-dotnet-pack + # ms-dotnettools.dotnet-maui + + # Python + ms-python.python + + # GitLens by GitKraken + eamodio.gitlens + ms-azuretools.vscode-docker + + github.copilot + github.copilot-chat + + # Colors & Themes + dracula-theme.theme-dracula + catppuccin.catppuccin-vsc + catppuccin.catppuccin-vsc-icons + mvllow.rose-pine + ]; + + userSettings = { + "workbench.colorTheme" = "Dracula Theme"; + "github.copilot.nextEditSuggestions.enabled" = true; + }; + }; + }; + + # TODO: this is super ugly, make sure the JSON is formatted!! + home.file.${vscode-argv}.text = builtins.toJSON { + password-store = secret-service; + + disable-hardware-acceleration = false; + disable-color-correct-rendering = false; + enable-crash-reporter = false; + # crash-report-id = ...; + }; +} From ce3eb7a6d80546318e052b27c8cdb5890a25639c Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:47:58 +1000 Subject: [PATCH 050/107] vscode requires an OS keyring daemon --- homes/me/default.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/homes/me/default.nix b/homes/me/default.nix index ac87870..d37a8e9 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -50,6 +50,12 @@ name = "Bibata-Modern-Ice"; size = 16; }; + + packages = with pkgs; [ + # for services.gnome-keyring + pkgs.gcr # provides org.gnome.keyring.SystemPrompter + seahorse # gui + ]; }; gtk = { @@ -144,8 +150,12 @@ }; }; - # enable OpenSSH private key agent - services.ssh-agent.enable = true; + services = { + # enable OpenSSH private key agent + ssh-agent.enable = true; + + gnome-keyring.enable = true; + }; # the ssh-agent won't set this for itself... systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent"; # Nicely reload system units when changing configs From 63c1f112d4b27287be3af8088d83a1be9f699657 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:48:49 +1000 Subject: [PATCH 051/107] (temp) hide chameleonultra+flipperzero to improve build time --- hosts/myputer/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 244f5eb..72b1e7d 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -22,8 +22,8 @@ in { ../modules/steam.nix ../modules/obsidian.nix - ../modules/flipperzero.nix - ../modules/chameleonultragui.nix + #../modules/flipperzero.nix + #../modules/chameleonultragui.nix ]; nix.settings.experimental-features = [ From 1ee0ba1a4ca55b0c62ba12a1a586760a642a4025 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:50:00 +1000 Subject: [PATCH 052/107] fix vscode plugins not whitelisted --- hosts/myputer/default.nix | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 72b1e7d..df47254 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -39,15 +39,26 @@ in { # ]; nixpkgs.config.allowUnfreePredicate = let - whitelist = map lib.getName [ - pkgs.obsidian - pkgs.gitkraken - pkgs.steam - pkgs.steamcmd - pkgs.steam-unwrapped - pkgs.dwarf-fortress - pkgs.discord - ]; + whitelist = let + vscext = pkgs.vscode-extensions; + in + with pkgs; + map lib.getName [ + discord + steam + steamcmd + steam-unwrapped + dwarf-fortress + + obsidian + gitkraken + + vscode + vscext.ms-dotnettools.csharp + vscext.ms-dotnettools.csdevkit + vscext.github.copilot + vscext.github.copilot-chat + ]; in pkg: builtins.elem (lib.getName pkg) whitelist; From 892a1ae877b27b88aa0af16ff7c5f107d8d054a5 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:51:49 +1000 Subject: [PATCH 053/107] add MicroTik WinBox --- hosts/modules/apps/winbox.nix | 6 ++++++ hosts/myputer/default.nix | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 hosts/modules/apps/winbox.nix diff --git a/hosts/modules/apps/winbox.nix b/hosts/modules/apps/winbox.nix new file mode 100644 index 0000000..eaf8b7c --- /dev/null +++ b/hosts/modules/apps/winbox.nix @@ -0,0 +1,6 @@ +{...}: { + programs.winbox = { + enable = true; + openFirewall = false; # port: 5678 + }; +} diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index df47254..2ba674d 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -20,7 +20,9 @@ in { ../modules/wm/hyprland.nix ../modules/steam.nix + ../modules/obsidian.nix + ../modules/apps/winbox.nix #../modules/flipperzero.nix #../modules/chameleonultragui.nix @@ -50,6 +52,8 @@ in { steam-unwrapped dwarf-fortress + winbox + obsidian gitkraken @@ -118,7 +122,15 @@ in { hostName = "myputer"; networkmanager.enable = true; - firewall.enable = true; + firewall = { + enable = true; + allowedTCPPorts = [ + 22 # SSH + 80 # HTTP + 443 # HTTPS + 5678 # MikroTik WinBox + ]; + }; }; # ----- SERVICES ----- From fd48d6af9a3eaf7a12bb8560048161d849b4d2b0 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:52:08 +1000 Subject: [PATCH 054/107] add Mozilla Thunderbird --- homes/me/default.nix | 1 + homes/modules/apps/thunderbird.nix | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 homes/modules/apps/thunderbird.nix diff --git a/homes/me/default.nix b/homes/me/default.nix index d37a8e9..227ae21 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -17,6 +17,7 @@ ../modules/btop.nix ../modules/term/foot.nix ../modules/firefox.nix + ../modules/apps/thunderbird.nix #../modules/wm/hypr/hypridle.nix ../modules/wm/hypr/hyprlock.nix diff --git a/homes/modules/apps/thunderbird.nix b/homes/modules/apps/thunderbird.nix new file mode 100644 index 0000000..dd4f861 --- /dev/null +++ b/homes/modules/apps/thunderbird.nix @@ -0,0 +1,10 @@ +{...}: { + programs.thunderbird = { + enable = true; + profiles = { + "me" = { + isDefault = true; + }; + }; + }; +} From 596fcd5389f45bbc79e13e7a78631cb9625d37e9 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:52:24 +1000 Subject: [PATCH 055/107] add Tor Browser --- homes/me/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/homes/me/default.nix b/homes/me/default.nix index 227ae21..f264790 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -56,6 +56,7 @@ # for services.gnome-keyring pkgs.gcr # provides org.gnome.keyring.SystemPrompter seahorse # gui + tor-browser ]; }; From 46ed0778136576b1dbb33e8d7fe9934b2214f3b3 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:52:46 +1000 Subject: [PATCH 056/107] open minecraft server port 25565 (myputer) --- hosts/myputer/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 2ba674d..17bdc86 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -129,6 +129,7 @@ in { 80 # HTTP 443 # HTTPS 5678 # MikroTik WinBox + 25565 # Minecraft LAN ]; }; }; From 17807752e57ef6f56d552e5cda553a8ca19daf87 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 11:53:42 +1000 Subject: [PATCH 057/107] packaging JetBrains Rider (UNSTABLE) --- hosts/modules/apps/rider.nix | 47 ++++++++++++++++++++++++++++++++++++ hosts/myputer/default.nix | 8 ++++++ 2 files changed, 55 insertions(+) create mode 100644 hosts/modules/apps/rider.nix diff --git a/hosts/modules/apps/rider.nix b/hosts/modules/apps/rider.nix new file mode 100644 index 0000000..cf54c66 --- /dev/null +++ b/hosts/modules/apps/rider.nix @@ -0,0 +1,47 @@ +{ + pkgs, + pkgs-unstable, + ... +}: { + nixpkgs.overlays = [ + (self: super: { + # rider-override = super.jetbrains.rider.overrideAttrs ( + # final: prev: { + # # XXX: DEBUG + # buildInputs = prev.buildInputs ++ [pkgs.icu]; + # } + # ); + + # rider-fhs = super.buildFHSEnv { + # name = "rider-fhs"; + + # targetPkgs = pkgs: + # with pkgs; [ + # jetbrains.rider + # icu + # ]; + + # runScript = ''${super.jetbrains.rider}/bin/rider''; + + # profile = '' + # export DOTNET_CLI_TELEMETRY_OPTOUT=1 + # ''; + # }; + }) + ]; + + environment.systemPackages = [ + # rider-fhs + # rider-override + + # Unsure latest "stable" version + # pkgs-unstable.jetbrains.rider + ]; + + programs.nix-ld = { + enable = true; + libraries = with pkgs; [ + icu + ]; + }; +} diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 17bdc86..753899f 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -22,6 +22,7 @@ in { ../modules/steam.nix ../modules/obsidian.nix + ../modules/apps/rider.nix ../modules/apps/winbox.nix #../modules/flipperzero.nix @@ -62,6 +63,12 @@ in { vscext.ms-dotnettools.csdevkit vscext.github.copilot vscext.github.copilot-chat + + # XXX: DEBUG + # rider-override + # XXX: DEBUG + + # jetbrains.rider ]; in pkg: builtins.elem (lib.getName pkg) whitelist; @@ -327,6 +334,7 @@ in { dotnetCorePackages.dotnet_9.sdk dotnetCorePackages.dotnet_9.aspnetcore dotnetCorePackages.dotnet_9.runtime + mono omnisharp-roslyn netcoredbg From 09db1c47e18c2c79ba5960c91249884b8b65a55e Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 17:22:27 +1000 Subject: [PATCH 058/107] progress flake inputs to latest --- flake.lock | 80 +++++++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/flake.lock b/flake.lock index 4785725..14e353a 100644 --- a/flake.lock +++ b/flake.lock @@ -2,15 +2,15 @@ "nodes": { "ags": { "inputs": { - "nixpkgs": "nixpkgs", - "systems": "systems" + "astal": "astal", + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1728326430, - "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=", + "lastModified": 1761132437, + "narHash": "sha256-ODNtCB3BHSv0EEA6AT3YDCELPeFX1n8e9lU1yL+s+Hk=", "owner": "Aylur", "repo": "ags", - "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d", + "rev": "63df72508c7d334c8f9f65d2e80e9db02838378b", "type": "github" }, "original": { @@ -19,6 +19,27 @@ "type": "github" } }, + "astal": { + "inputs": { + "nixpkgs": [ + "ags", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761075011, + "narHash": "sha256-gQFgsJz2RQUMFdaHrbqRPYackAZYF3chcsZp8rUctVU=", + "owner": "aylur", + "repo": "astal", + "rev": "c8df34d0e5fc4f3a36f72bae7dfc5ecf0000e1c8", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "astal", + "type": "github" + } + }, "colmena": { "inputs": { "flake-compat": "flake-compat", @@ -78,11 +99,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1730004881, - "narHash": "sha256-8xVIqIW25o2uCL0fxAmP4Sj9sdebarQXmd1+64yMe8o=", + "lastModified": 1757136219, + "narHash": "sha256-tKU+vq34KHu/A2wD7WdgP5A4/RCmSD8hB0TyQAUlixA=", "owner": "vinceliuice", "repo": "grub2-themes", - "rev": "42c232dfb46bf93c17506cbc1a574e5e89b5e09f", + "rev": "80dd04ddf3ba7b284a7b1a5df2b1e95ee2aad606", "type": "github" }, "original": { @@ -114,15 +135,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725634671, - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", - "owner": "NixOS", + "lastModified": 1760878510, + "narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", + "rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -130,11 +151,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1753939845, - "narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=", + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "94def634a20494ee057c76998843c015909d6311", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", "type": "github" }, "original": { @@ -162,11 +183,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1730808093, - "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=", + "lastModified": 1761269590, + "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1", + "rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40", "type": "github" }, "original": { @@ -178,11 +199,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1752620740, - "narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=", + "lastModified": 1761016216, + "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e", + "rev": "481cf557888e05d3128a76f14c76397b7d7cc869", "type": "github" }, "original": { @@ -216,21 +237,6 @@ "repo": "nixpkgs", "type": "github" } - }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } } }, "root": "root", From 11b4c920fc22c6c8fc50c4fc45c2cee79592cb78 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 17:23:28 +1000 Subject: [PATCH 059/107] patch mbedtls_2 now labelled insecure occurred due to flake.lock progression --- hosts/modules/steam.nix | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/hosts/modules/steam.nix b/hosts/modules/steam.nix index 5c72185..e554441 100644 --- a/hosts/modules/steam.nix +++ b/hosts/modules/steam.nix @@ -3,13 +3,25 @@ lib, ... }: { - nixpkgs.config.allowUnfreePredicate = pkg: - builtins.elem (lib.getName pkg) [ - "steam" - "steam-original" - "steam-unwrapped" - "steam-run" - ]; + # nixpkgs.config.allowUnfreePredicate = pkg: + # builtins.elem (lib.getName pkg) [ + # "steam" + # "steam-original" + # "steam-unwrapped" + # "steam-run" + # ]; + nixpkgs.overlays = [ + (self: super: { + lutris = super.lutris.overrideAttrs (final: prev: { + # WARNING: pkgs.mbedtls_2 is marked insecure! + # Replace pkgs.mbedtls_2 (v2.28.10) with pkgs.mbedtls (v3.6.4) + targetPkgs = pkgs: ( + (builtins.filter (p: p != pkgs.mbedtls_2) (prev.targetPkgs pkgs)) + ++ [pkgs.mbedtls] + ); + }); + }) + ]; programs = { steam = { @@ -33,7 +45,12 @@ mangohud protonup-qt - lutris + + # XXX: DEBUG: disable lutris + # XXX: NOTE: pkgs.lutris depends on pkgs.mbedtls_2 which is marked insecure! + # XXX: NOTE: Use the provided overlay to patch pkgs.mbedtls_2 -> pkgs.mbedtls + # lutris + bottles heroic ]; From 2fb9171d923761168d24776f855a6cb487bf6820 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 17:24:11 +1000 Subject: [PATCH 060/107] replace ags -> fuzzel ags usage changed after flake.lock progression --- config.temp/hyprland.conf | 5 +++-- homes/me/default.nix | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config.temp/hyprland.conf b/config.temp/hyprland.conf index 7243478..4876e8a 100755 --- a/config.temp/hyprland.conf +++ b/config.temp/hyprland.conf @@ -25,8 +25,9 @@ monitor=eDP-1, highres@highrr, auto, 1.0 # Set programs that you use $terminal = ghostty #rio $fileManager = thunar -#$menu = wofi --show drun -$menu = ags -t "applauncher" +# $menu = wofi --show drun +# $menu = ags -t "applauncher" +$menu = fuzzel $colorpicker = hyprpicker | head -c 7 | wl-copy ################# diff --git a/homes/me/default.nix b/homes/me/default.nix index f264790..6df442b 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -56,7 +56,10 @@ # for services.gnome-keyring pkgs.gcr # provides org.gnome.keyring.SystemPrompter seahorse # gui + tor-browser + + fuzzel ]; }; From ffb9b35d46342e71fba5150dd4da0004ba5859c0 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 17:24:58 +1000 Subject: [PATCH 061/107] clean rider install + progress to latest on pkgs-unstable --- hosts/modules/apps/rider.nix | 43 +++++++++++------------------------- hosts/myputer/default.nix | 8 ------- 2 files changed, 13 insertions(+), 38 deletions(-) diff --git a/hosts/modules/apps/rider.nix b/hosts/modules/apps/rider.nix index cf54c66..94ac874 100644 --- a/hosts/modules/apps/rider.nix +++ b/hosts/modules/apps/rider.nix @@ -3,39 +3,22 @@ pkgs-unstable, ... }: { - nixpkgs.overlays = [ - (self: super: { - # rider-override = super.jetbrains.rider.overrideAttrs ( - # final: prev: { - # # XXX: DEBUG - # buildInputs = prev.buildInputs ++ [pkgs.icu]; - # } - # ); + environment.systemPackages = with pkgs; [ + # Ensure latest stable Rider version (not necessarily stable on NixOS) + pkgs-unstable.jetbrains.rider - # rider-fhs = super.buildFHSEnv { - # name = "rider-fhs"; + # .NET + dotnetCorePackages.dotnet_9.sdk + dotnetCorePackages.dotnet_9.aspnetcore + dotnetCorePackages.dotnet_9.runtime - # targetPkgs = pkgs: - # with pkgs; [ - # jetbrains.rider - # icu - # ]; + # Mono + mono + msbuild - # runScript = ''${super.jetbrains.rider}/bin/rider''; - - # profile = '' - # export DOTNET_CLI_TELEMETRY_OPTOUT=1 - # ''; - # }; - }) - ]; - - environment.systemPackages = [ - # rider-fhs - # rider-override - - # Unsure latest "stable" version - # pkgs-unstable.jetbrains.rider + # .NET Framework Tools/Services + omnisharp-roslyn + netcoredbg ]; programs.nix-ld = { diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 753899f..7121aeb 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -330,14 +330,6 @@ in { # Sage sageWithDoc # SageMath + HTML Documentation - # .NET - dotnetCorePackages.dotnet_9.sdk - dotnetCorePackages.dotnet_9.aspnetcore - dotnetCorePackages.dotnet_9.runtime - mono - omnisharp-roslyn - netcoredbg - openvpn inetutils From 728f933f394bfe32f1ebcbc72e4ad114e698dcbd Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 17:25:15 +1000 Subject: [PATCH 062/107] increase nix.settings.download-buffer-size --- hosts/myputer/default.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 7121aeb..0ffa5d5 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -29,10 +29,13 @@ in { #../modules/chameleonultragui.nix ]; - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; + nix.settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + download-buffer-size = 524288000; # 500 MiB + }; # nixpkgs.overlays = [ # (self: super: { # jdk17 = super.jdk17.override (prev: { From e2f641e5535342db34fefb07bb261a32f626c1a5 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 17:31:23 +1000 Subject: [PATCH 063/107] use pkgs-unstable.msbuild pkgs.msbuild use .NET6 (marked insecure), pkgs-unstable.msbuild uses .NET8 --- hosts/modules/apps/rider.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hosts/modules/apps/rider.nix b/hosts/modules/apps/rider.nix index 94ac874..d7b3a1c 100644 --- a/hosts/modules/apps/rider.nix +++ b/hosts/modules/apps/rider.nix @@ -14,7 +14,9 @@ # Mono mono - msbuild + # NOTE: nixpkgs-unstable uses .NET8 SDK + # WARNING: nixpkgs-25.05 uses .NET6 SDK (now marked insecure) + pkgs-unstable.msbuild # .NET Framework Tools/Services omnisharp-roslyn From c8d3fe1e6b552a697ff2de3f198c9d1057227b97 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 23:39:00 +1000 Subject: [PATCH 064/107] add tmux --- homes/me/default.nix | 8 +++++--- homes/modules/tmux.nix | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 homes/modules/tmux.nix diff --git a/homes/me/default.nix b/homes/me/default.nix index 6df442b..5f4c039 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -8,14 +8,16 @@ ... } @ args: { imports = [ + ../modules/fish.nix + ../modules/btop.nix + ../modules/tmux.nix + ../modules/term/foot.nix ../modules/git.nix ../modules/bat.nix - ../modules/fish.nix + ../modules/editor/helix.nix (import ../modules/editor/vscode.nix args) - ../modules/btop.nix - ../modules/term/foot.nix ../modules/firefox.nix ../modules/apps/thunderbird.nix diff --git a/homes/modules/tmux.nix b/homes/modules/tmux.nix new file mode 100644 index 0000000..e5946c0 --- /dev/null +++ b/homes/modules/tmux.nix @@ -0,0 +1,5 @@ +{...}: { + programs.tmux = { + enable = true; + }; +} From ca3fd4093f9d25d6966bdc98f5bcbaa6dc60e696 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 23:44:56 +1000 Subject: [PATCH 065/107] fix ugly nixpkgs.config.allowUnfreePredicate --- hosts/myputer/default.nix | 44 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 0ffa5d5..8b5079b 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -45,34 +45,32 @@ in { # ]; nixpkgs.config.allowUnfreePredicate = let - whitelist = let - vscext = pkgs.vscode-extensions; - in - with pkgs; - map lib.getName [ - discord - steam - steamcmd - steam-unwrapped - dwarf-fortress + vscext = pkgs.vscode-extensions; + whitelist = with pkgs; + map lib.getName [ + discord + steam + steamcmd + steam-unwrapped + dwarf-fortress - winbox + winbox - obsidian - gitkraken + obsidian + gitkraken - vscode - vscext.ms-dotnettools.csharp - vscext.ms-dotnettools.csdevkit - vscext.github.copilot - vscext.github.copilot-chat + vscode + vscext.ms-dotnettools.csharp + vscext.ms-dotnettools.csdevkit + vscext.github.copilot + vscext.github.copilot-chat - # XXX: DEBUG - # rider-override - # XXX: DEBUG + # XXX: DEBUG + # rider-override + # XXX: DEBUG - # jetbrains.rider - ]; + # jetbrains.rider + ]; in pkg: builtins.elem (lib.getName pkg) whitelist; From 8f222f454ad6c49ca2b67e6de33ae63471b13e66 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 23:45:29 +1000 Subject: [PATCH 066/107] add vscode + extensions to lolcathost nixpkgs allowed unfree --- hosts/lolcathost/default.nix | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 9075286..b09a29c 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -35,14 +35,32 @@ in { ]; nixpkgs.config.allowUnfreePredicate = let - whitelist = map lib.getName [ - pkgs.obsidian - pkgs.gitkraken - pkgs.steam - pkgs.steamcmd - pkgs.steam-unwrapped - pkgs.dwarf-fortress - ]; + vscext = pkgs.vscode-extensions; + whitelist = with pkgs; + map lib.getName [ + discord + steam + steamcmd + steam-unwrapped + dwarf-fortress + + winbox + + obsidian + gitkraken + + vscode + vscext.ms-dotnettools.csharp + vscext.ms-dotnettools.csdevkit + vscext.github.copilot + vscext.github.copilot-chat + + # XXX: DEBUG + # rider-override + # XXX: DEBUG + + # jetbrains.rider + ]; in pkg: builtins.elem (lib.getName pkg) whitelist; From 8a14f7e2fc78d40dddb499a79d088f2b8896b3b9 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 24 Oct 2025 23:46:17 +1000 Subject: [PATCH 067/107] remove dwarf-fortress & mindustry --- hosts/lolcathost/default.nix | 3 --- hosts/myputer/default.nix | 1 - 2 files changed, 4 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index b09a29c..dbf965d 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -42,7 +42,6 @@ in { steam steamcmd steam-unwrapped - dwarf-fortress winbox @@ -382,8 +381,6 @@ in { libargon2 # Games - mindustry - dwarf-fortress prismlauncher # minecraft ]; diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 8b5079b..6986a31 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -52,7 +52,6 @@ in { steam steamcmd steam-unwrapped - dwarf-fortress winbox From 8f7a725fd591ac63a5dec2f27826e88f5136a5da Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 1 Nov 2025 12:08:58 +1000 Subject: [PATCH 068/107] JetBrains Rider requires Chromium browser --- hosts/modules/apps/rider.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/modules/apps/rider.nix b/hosts/modules/apps/rider.nix index d7b3a1c..adf8885 100644 --- a/hosts/modules/apps/rider.nix +++ b/hosts/modules/apps/rider.nix @@ -7,6 +7,10 @@ # Ensure latest stable Rider version (not necessarily stable on NixOS) pkgs-unstable.jetbrains.rider + # NOTE: Blazor requires a Chromium-based browser + chromium + # arc-browser + # .NET dotnetCorePackages.dotnet_9.sdk dotnetCorePackages.dotnet_9.aspnetcore From 91afb320497611681ed4fffa5d33b0008f8f867c Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 1 Nov 2025 12:09:28 +1000 Subject: [PATCH 069/107] add speedtest-cli --- homes/me/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/homes/me/default.nix b/homes/me/default.nix index 5f4c039..6998e63 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -62,6 +62,8 @@ tor-browser fuzzel + + speedtest-cli ]; }; From a03ea35af7cf5a8c50deec0bacf4b091f897ebc2 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 1 Nov 2025 12:27:00 +1000 Subject: [PATCH 070/107] begin working on my nib library <3 --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 31f728a..81b47aa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ ISSUES/ secrets/ +nib/ result rebuild*.log From 540fd9c2a99e1317375a0849b4de670d76c086bf Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 1 Nov 2025 13:21:32 +1000 Subject: [PATCH 071/107] begin migrating hyprland config to home-manager --- homes/modules/wm/hypr/hyprland.nix | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/homes/modules/wm/hypr/hyprland.nix b/homes/modules/wm/hypr/hyprland.nix index 40a1d99..b9ca1f7 100755 --- a/homes/modules/wm/hypr/hyprland.nix +++ b/homes/modules/wm/hypr/hyprland.nix @@ -1,2 +1,43 @@ # NOTE: hyprland must be enabled in BOTH your host config (for running hyprland) # and your home-manager config (for managing hyprland's config files) +{ + pkgs, + pkgs-unstable, + inputs, + config, + lib, + ... +}: { + options.hyprland = { + enable = lib.mkEnableOption "Hyprland"; + }; + + config = lib.mkIf config.hyprland.enable { + wayland.windowManager.hyprland = { + enable = true; + package = pkgs.hyprland; # pkgs-unstable.hyprland; + + xwayland.enable = true; + + systemd = { + enable = true; + # enable autostart of applications + # REF: `man 8 systemd-xdg-autostart-generator` + enableXdgAutostart = true; + }; + + plugins = with inputs; [ + split-monitor-workspaces.packages.${pkgs.system}.split + ]; + }; + + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + ]; + }; + + # TODO: finish this + }; +} From f0c7f565c3435cedd17859dfce0acdb1d7da0f03 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 1 Nov 2025 13:21:55 +1000 Subject: [PATCH 072/107] remove flake.nix:inputs.ags --- flake.lock | 75 +++++++----------------------------------------------- flake.nix | 6 ++--- 2 files changed, 11 insertions(+), 70 deletions(-) diff --git a/flake.lock b/flake.lock index 14e353a..e1ab303 100644 --- a/flake.lock +++ b/flake.lock @@ -1,51 +1,11 @@ { "nodes": { - "ags": { - "inputs": { - "astal": "astal", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1761132437, - "narHash": "sha256-ODNtCB3BHSv0EEA6AT3YDCELPeFX1n8e9lU1yL+s+Hk=", - "owner": "Aylur", - "repo": "ags", - "rev": "63df72508c7d334c8f9f65d2e80e9db02838378b", - "type": "github" - }, - "original": { - "owner": "Aylur", - "repo": "ags", - "type": "github" - } - }, - "astal": { - "inputs": { - "nixpkgs": [ - "ags", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1761075011, - "narHash": "sha256-gQFgsJz2RQUMFdaHrbqRPYackAZYF3chcsZp8rUctVU=", - "owner": "aylur", - "repo": "astal", - "rev": "c8df34d0e5fc4f3a36f72bae7dfc5ecf0000e1c8", - "type": "github" - }, - "original": { - "owner": "aylur", - "repo": "astal", - "type": "github" - } - }, "colmena": { "inputs": { "flake-compat": "flake-compat", "flake-utils": "flake-utils", "nix-github-actions": "nix-github-actions", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "stable": "stable" }, "locked": { @@ -96,7 +56,7 @@ }, "grub2-themes": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1757136219, @@ -135,15 +95,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1760878510, - "narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=", - "owner": "nixos", + "lastModified": 1734119587, + "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67", + "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -166,22 +126,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1734119587, - "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1761269590, "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", @@ -197,7 +141,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1761016216, "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", @@ -215,10 +159,9 @@ }, "root": { "inputs": { - "ags": "ags", "colmena": "colmena", "grub2-themes": "grub2-themes", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "nixpkgs-unstable": "nixpkgs-unstable" } }, diff --git a/flake.nix b/flake.nix index 3d40a53..e339ce6 100644 --- a/flake.nix +++ b/flake.nix @@ -5,11 +5,9 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; - grub2-themes.url = "github:vinceliuice/grub2-themes"; - - ags.url = "github:Aylur/ags"; - colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a"; + + grub2-themes.url = "github:vinceliuice/grub2-themes"; }; outputs = { From 6439764717b43ef6bf1a81792483c0bf8c32742b Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 7 Jan 2026 10:22:47 +1000 Subject: [PATCH 073/107] (temp) remove ChameleonUltraGUI+FlipperZero --- hosts/lolcathost/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index dbf965d..72e307a 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -25,8 +25,8 @@ in { ../modules/obsidian.nix ../modules/angryoxide.nix - ../modules/flipperzero.nix - ../modules/chameleonultragui.nix + # ../modules/flipperzero.nix + # ../modules/chameleonultragui.nix ]; nix.settings.experimental-features = [ From 4bc40a1d37b26c074bafe17aed3ee568e5023e63 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 7 Jan 2026 10:23:04 +1000 Subject: [PATCH 074/107] i be gaming frfr --- hosts/lolcathost/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 72e307a..32e9b2f 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -382,6 +382,8 @@ in { # Games prismlauncher # minecraft + pkgs-unstable.olympus # celeste + discord ]; programs = { From 86bdcf2d397ca71c1c8562074c95ec4fd3693147 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 7 Jan 2026 10:23:14 +1000 Subject: [PATCH 075/107] is this necessary? --- hosts/lolcathost/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 32e9b2f..b0f5fe6 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -170,6 +170,7 @@ in { # With backwards compatability for alsa/pulseaudio/jack pipewire = { enable = true; + audio.enable = true; wireplumber.enable = true; alsa.enable = true; From 0c15fb78440b1472f44f619e945375f40a623618 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 7 Jan 2026 10:23:30 +1000 Subject: [PATCH 076/107] add hyprpicker + hyprshot to laptop --- hosts/lolcathost/default.nix | 2 ++ hosts/myputer/default.nix | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index b0f5fe6..93bce3b 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -262,6 +262,8 @@ in { ani-cli bluetui wl-clipboard # clipboard for wayland + hyprpicker # color picker + hyprshot # screenshot utility qbittorrent # torrenting signal-desktop diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 6986a31..d1999b2 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -255,7 +255,7 @@ in { ani-cli bluetui wl-clipboard # clipboard for wayland - hyprpicker + hyprpicker # color picker hyprshot # screenshot utility qbittorrent signal-desktop From 9c5af6a83d28f617ff2bd4e78d7ea362a815fa62 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Wed, 7 Jan 2026 10:24:49 +1000 Subject: [PATCH 077/107] add more url.insteadOf identifiers for git --- homes/modules/git.nix | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/homes/modules/git.nix b/homes/modules/git.nix index fdf6afb..6751849 100755 --- a/homes/modules/git.nix +++ b/homes/modules/git.nix @@ -27,7 +27,7 @@ defaultBranch = "main"; }; url = { - "https://github.com/" = { + "git@github.com:" = { insteadOf = [ "gh:" "github:" @@ -39,6 +39,24 @@ "gitlab:" ]; }; + "git@github.com:/Agribit/" = { + insteadOf = [ + "agri:" + "Agri:" + "agribit:" + "Agribit:" + ]; + }; + "ssh://forgejo@forge.imbored.dev:2222/" = { + insteadOf = [ + "forge" + ]; + }; + "ssh://forgejo@forge.imbored.dev:2222/emileclarkb/" = { + insteadOf = [ + "cry" + ]; + }; }; }; From fecb0c441f91bc27f6747df5bffc615601ddc60d Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:17:55 +1000 Subject: [PATCH 078/107] progress home-manager --- hosts/lolcathost/default.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 93bce3b..846d34a 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -8,7 +8,7 @@ }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "1y919cqrlmq0k44rgnacaq4zq37jj4rdh6f2swp6y2jiz28xb0iq"; + sha256 = "07pk5m6mxi666dclaxdwf7xrinifv01vvgxn49bjr8rsbh31syaq"; }; in { imports = [ @@ -232,9 +232,7 @@ in { home-manager = { users.me = import ../../homes/me; extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;}; - sharedModules = [ - inputs.ags.homeManagerModules.default - ]; + # sharedModules = [ ]; }; # ---- ENVIRONMENT VARIABLES ---- @@ -274,6 +272,7 @@ in { # Shell bash fish + elvish # reference for crysh development shellcheck grc # colorise command outputs moreutils @@ -301,6 +300,8 @@ in { # Rust cargo rustc + rustfmt + rust-analyzer # Go go # Nim @@ -319,6 +320,7 @@ in { nixd # lsp for nix nix-prefetch-git nix-index + deploy-rs # Python python312 # I use 3.12 since it's in a pretty stable state now From 1971078bf836cf32b3b2c0f472a1839af9f928e5 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:18:03 +1000 Subject: [PATCH 079/107] support pipe-operators on lolcathost --- hosts/lolcathost/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 846d34a..3c88d97 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -32,6 +32,7 @@ in { nix.settings.experimental-features = [ "nix-command" "flakes" + "pipe-operators" ]; nixpkgs.config.allowUnfreePredicate = let From 51557ebd652bcdb38517e7ae9d92277b3a5bcf0e Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:18:19 +1000 Subject: [PATCH 080/107] remove ags --- homes/me/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homes/me/default.nix b/homes/me/default.nix index 6998e63..9e436a3 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -24,7 +24,7 @@ #../modules/wm/hypr/hypridle.nix ../modules/wm/hypr/hyprlock.nix ../modules/kanshi.nix - ../modules/ags + # ../modules/ags ../modules/mako.nix ]; From bde48193073a8023ccc212b3c86d95c85862a605 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:18:27 +1000 Subject: [PATCH 081/107] helix support rust --- homes/modules/editor/helix.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index 8d6e22c..30dad17 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -142,6 +142,16 @@ formatter.command = "${pkgs.ormolu}/bin/ormolu"; language-servers = ["haskell-language-server"]; } + { + name = "rust"; + indent = { + tab-width = 2; + unit = " "; + }; + auto-format = true; + formatter.command = "${pkgs.rustfmt}/bin/rustfmt"; + language-servers = ["rust-analyzer"]; + } # { # name = "c-sharp"; # source = "source.cs"; @@ -176,6 +186,10 @@ command = "${pkgs.haskell-language-server}/bin/haskell-language-server-wrapper"; }; + rust-analyzer = { + command = "${pkgs.rust-analyzer}/bin/rust-analyzer"; + }; + # C# language services OmniSharp = { command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; From 5153b1d54b97c5bf2d951908f4fb344f61828a7e Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:20:25 +1000 Subject: [PATCH 082/107] ignore nib --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 81b47aa..31f728a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ ISSUES/ secrets/ -nib/ result rebuild*.log From c4464eeba2b3b2b75767917eeaf602dc2ce5e8c4 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:20:55 +1000 Subject: [PATCH 083/107] remove ags --- homes/me/default.nix | 1 - hosts/lolcathost/default.nix | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/homes/me/default.nix b/homes/me/default.nix index 6998e63..a6e5745 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -24,7 +24,6 @@ #../modules/wm/hypr/hypridle.nix ../modules/wm/hypr/hyprlock.nix ../modules/kanshi.nix - ../modules/ags ../modules/mako.nix ]; diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index dbf965d..be32da0 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -231,9 +231,7 @@ in { home-manager = { users.me = import ../../homes/me; extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;}; - sharedModules = [ - inputs.ags.homeManagerModules.default - ]; + sharedModules = []; }; # ---- ENVIRONMENT VARIABLES ---- From 5bae1d546a25d42f92d3fc23fac163c7ab8f8b3d Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:23:02 +1000 Subject: [PATCH 084/107] progress home-manager (hyrule) --- hosts/hyrule/default.nix | 53 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index 325e467..72cf59f 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -7,7 +7,7 @@ }: let home-manager = builtins.fetchTarball { url = "https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz"; - sha256 = "0d41gr0c89a4y4lllzdgmbm54h9kn9fjnmavwpgw0w9xwqwnzpax"; + sha256 = "07pk5m6mxi666dclaxdwf7xrinifv01vvgxn49bjr8rsbh31syaq"; }; in { imports = [ @@ -87,6 +87,56 @@ in { # 8222 (INTERNAL) vaultwarden 45000 # minecaft server ]; + allowedUDPPorts = [ + 54231 # Wireguard + ]; + }; + + # wireguard.interfaces = { + # wg0 = { + # ips = ["10.10.10.4/24"]; # my IP and the subnet (keyword: "AND") + # listenPort = 54231; + # + # privateKeyFile = "/root/wg_agrivpn_hyrule"; + # + # peers = [ + # { + # # peer's public key + # publicKey = "iZ4aqYjbT8O8tfUHEuV+yWLtdoQbdBb6Nt0M4usMSiY="; + # + # # choose which traffic to forward + # allowedIPs = ["10.0.51.0/24" "10.10.10.0/24"]; + # + # # TODO: route to endpoint not automatically configured https://wiki.archlinux.org/index.php/WireGuard#Loop_routing https://discourse.nixos.org/t/solved-minimal-firewall-setup-for-wireguard-client/7577 + # endpoint = "150.242.34.33:54231"; + # + # # send keepalives every 25 seconds. Important to keep NAT tables alive. + # persistentKeepalive = 25; + # } + # ]; + # }; + # }; + wg-quick.interfaces = { + wg0 = { + address = [ + "10.10.10.4/24" + ]; + dns = ["10.10.10.1"]; + privateKeyFile = "/root/wg_agrivpn_hyrule"; + peers = [ + { + # peer's public key + publicKey = "iZ4aqYjbT8O8tfUHEuV+yWLtdoQbdBb6Nt0M4usMSiY="; + + # choose which traffic to forward + allowedIPs = [ + "10.0.51.0/24" + "10.10.10.0/24" + ]; + endpoint = "150.242.34.33:54231"; + } + ]; + }; }; }; @@ -451,6 +501,7 @@ in { }; environment.systemPackages = with pkgs; [ + eza git vim helix From 9bbb8fa58534c62a94c092b7c702067d1bb021ec Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:23:16 +1000 Subject: [PATCH 085/107] add dotnet module --- hosts/modules/langs/dotnet.nix | 61 ++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 hosts/modules/langs/dotnet.nix diff --git a/hosts/modules/langs/dotnet.nix b/hosts/modules/langs/dotnet.nix new file mode 100644 index 0000000..d9c3177 --- /dev/null +++ b/hosts/modules/langs/dotnet.nix @@ -0,0 +1,61 @@ +{ + lib, + pkgs, + pkgs-unstable, + ... +}: let + dotnetVersions = [8 9 10]; + + dotnetCombined = + pkgs.dotnetCorePackages.combinePackages + (builtins.concatMap + (v: let + # dotnet = pkgs.dotnetCorePackages."dotnet_${builtins.toString x}"; + in [ + # dotnet.sdk + + # the runtime+aspnetcore packaged with the sdk + pkgs.dotnetCorePackages."sdk_${builtins.toString v}_0" + ]) + dotnetVersions); + + # Custom packaged tools + dotnetTools = with lib; { + uno-check = with pkgs.dotnetCorePackages; + buildDotnetGlobalTool { + pname = "Uno.Check"; + version = "1.32.17"; + + nugetHash = "sha256-BfTVF5uHu9/nyLXqdDEOHCxq6BVQWhsnDBbARzdLDAE="; + + executables = "uno-check"; + + dotnet-sdk = dotnet_9.sdk; + dotnet-runtime = dotnet_9.runtime; + + meta = { + homepage = "https://github.com/unoplatform/uno.check"; + license = licenses.mit; + maintainers = [maintainers.emileclarkb]; + }; + }; + }; +in { + environment.systemPackages = with pkgs; [ + # .NET + dotnetCombined + + # .NET Tools + dotnetTools.uno-check + + # Mono + mono + # NOTE: nixpkgs-unstable uses .NET8 SDK + # WARNING: nixpkgs-25.05 uses .NET6 SDK (now marked insecure) + pkgs-unstable.msbuild + + # .NET Framework Tools/Services + omnisharp-roslyn + netcoredbg + ]; +} From aa17215adf210eae4e83ceb58d88f51d42543d45 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:23:50 +1000 Subject: [PATCH 086/107] prefer final: prev: convention crywl module --- hosts/modules/wm/crywl.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hosts/modules/wm/crywl.nix b/hosts/modules/wm/crywl.nix index 1454af2..ed719a6 100644 --- a/hosts/modules/wm/crywl.nix +++ b/hosts/modules/wm/crywl.nix @@ -37,8 +37,8 @@ in { ]; nixpkgs.overlays = [ - (self: super: { - crywl = super.dwl.overrideAttrs (oldAttrs: rec { + (final: prev: { + crywl = prev.dwl.overrideAttrs (oldAttrs: rec { pname = "crywl"; version = "0.1-unstable"; @@ -101,6 +101,7 @@ in { command = "crywl -v 2>&1; return 0"; }; }; + meta = { homepage = "https://forge.imbored.dev/emileclarkb/crywl"; description = "Personal fork of DWL"; From 2ef679f30f7a755b6ce23957e1e95d7d758fbff8 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:24:12 +1000 Subject: [PATCH 087/107] use dotnet module in rider module --- hosts/modules/apps/rider.nix | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/hosts/modules/apps/rider.nix b/hosts/modules/apps/rider.nix index adf8885..5a4edce 100644 --- a/hosts/modules/apps/rider.nix +++ b/hosts/modules/apps/rider.nix @@ -1,30 +1,19 @@ { pkgs, pkgs-unstable, + dotnetVersions ? [8 9 10], ... }: { + imports = [ + ../langs/dotnet.nix + ]; + environment.systemPackages = with pkgs; [ # Ensure latest stable Rider version (not necessarily stable on NixOS) pkgs-unstable.jetbrains.rider # NOTE: Blazor requires a Chromium-based browser chromium - # arc-browser - - # .NET - dotnetCorePackages.dotnet_9.sdk - dotnetCorePackages.dotnet_9.aspnetcore - dotnetCorePackages.dotnet_9.runtime - - # Mono - mono - # NOTE: nixpkgs-unstable uses .NET8 SDK - # WARNING: nixpkgs-25.05 uses .NET6 SDK (now marked insecure) - pkgs-unstable.msbuild - - # .NET Framework Tools/Services - omnisharp-roslyn - netcoredbg ]; programs.nix-ld = { From 676b3d367cae54b22316817978d160197cd04cb0 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 20 Jan 2026 09:24:19 +1000 Subject: [PATCH 088/107] support pipe-operators --- hosts/myputer/default.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index 6986a31..47e8169 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -31,8 +31,9 @@ in { nix.settings = { experimental-features = [ - "nix-command" "flakes" + "nix-command" + "pipe-operators" ]; download-buffer-size = 524288000; # 500 MiB }; @@ -226,9 +227,7 @@ in { home-manager = { users.me = import ../../homes/me; extraSpecialArgs = {inherit inputs pkgs pkgs-unstable;}; - sharedModules = [ - inputs.ags.homeManagerModules.default - ]; + sharedModules = []; }; # ---- ENVIRONMENT VARIABLES ---- @@ -354,6 +353,8 @@ in { viddy # modern `watch` command thefuck + deploy-rs + tesseract # for my work with Agribit # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) @@ -389,6 +390,7 @@ in { # Games prismlauncher # minecraft + pkgs-unstable.olympus ]; # DEBUG: configuring xdg portal here instead? From 51a67d039fefdf08f9fc45b84e842783cff918b4 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Thu, 29 Jan 2026 14:39:15 +1000 Subject: [PATCH 089/107] add nix-unit --- hosts/lolcathost/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 1c9c270..f3c5943 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -321,6 +321,7 @@ in { nixd # lsp for nix nix-prefetch-git nix-index + nix-unit deploy-rs # Python From ba1a3fe07e3af0c56527b1f8123371e2cd4519d3 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Thu, 29 Jan 2026 14:39:59 +1000 Subject: [PATCH 090/107] helix module remove redudancy --- homes/modules/editor/helix.nix | 117 ++++++++++++++++++++------------- hosts/lolcathost/default.nix | 8 +-- hosts/myputer/default.nix | 15 ----- 3 files changed, 74 insertions(+), 66 deletions(-) diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index 30dad17..81f7959 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -1,5 +1,55 @@ -{pkgs, ...}: { - # read https://docs.helix-editor.com/editor.html +{ + pkgs, + pkgs-unstable, + ... +}: let + lsps = let + mkLsp = pkg: path: {inherit pkg path;}; + in { + bash-language-server = + mkLsp + pkgs.bash-language-server + "/bin/bash-language-server"; + + clangd = + mkLsp + pkgs.clang-tools + "/bin/clangd"; + + haskell-language-server = + mkLsp + pkgs.haskell-language-server + "/bin/haskell-language-server-wrapper"; + + # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) + # helix will support nixd by default + # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix + nixd = + mkLsp + pkgs.nixd + "/bin/nixd"; + + OmniSharp = + mkLsp + pkgs.omnisharp-roslyn + "/bin/OmniSharp"; + + rust-analyzer = + mkLsp + pkgs.rust-analyzer + "/bin/rust-analyzer"; + + ty = + mkLsp + pkgs.ty + "/bin/ty"; + }; +in { + environment.systemPackages = + lsps + |> map (lsp: lsp.pkg); + + # REF: https://docs.helix-editor.com/editor.html programs.helix = { enable = true; settings = { @@ -128,11 +178,12 @@ }; auto-format = false; # my python is beautiful ^_^ rulers = [80]; + language-servers = ["ty"]; } { name = "c"; file-types = ["c" "h"]; # use .hpp for C++ - auto-format = false; + auto-format = true; formatter.command = "${pkgs.clang-tools}/bin/clang-format"; language-servers = ["clangd"]; } @@ -152,49 +203,27 @@ formatter.command = "${pkgs.rustfmt}/bin/rustfmt"; language-servers = ["rust-analyzer"]; } - # { - # name = "c-sharp"; - # source = "source.cs"; - # file-types = ["cs"]; - # indent = { - # tab-width = 4; - # unit = " "; - # }; - # block-comment-tokens = { - # start = "/*"; - # end = "*/"; - # }; - # # auto-format = false; - # # formatter.command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; - # # language-servers = ["OmniSharp"]; - # } + { + name = "c-sharp"; + source = "source.cs"; + file-types = ["cs"]; + indent = { + tab-width = 4; + unit = " "; + }; + block-comment-tokens = { + start = "/*"; + end = "*/"; + }; + # auto-format = false; + # formatter.command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; + # language-servers = ["OmniSharp"]; + } ]; - language-server = { - # use nixd as default nix lsp (I haven't tried nil yet) - # NOTE: nixd will be supported by default after nix 24.07 - # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix - nixd = { - command = "${pkgs.nixd}/bin/nixd"; - }; - # clangd for C - clangd = { - command = "${pkgs.clang-tools}/bin/clangd"; - }; - - haskell-language-server = { - command = "${pkgs.haskell-language-server}/bin/haskell-language-server-wrapper"; - }; - - rust-analyzer = { - command = "${pkgs.rust-analyzer}/bin/rust-analyzer"; - }; - - # C# language services - OmniSharp = { - command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; - }; - }; + language-server = + lsps + |> builtins.mapAttrs (_: lsp: "${lsp.pkg}${lsp.path}"); }; }; } diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index f3c5943..4119d78 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -296,13 +296,12 @@ in { # C Family gcc clang - clang-tools + # Rust cargo rustc rustfmt - rust-analyzer # Go go # Nim @@ -311,14 +310,9 @@ in { # Haskell ghc ghcid - haskell-language-server ormolu # Nix - # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) - # helix will support nixd by default - # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix - nixd # lsp for nix nix-prefetch-git nix-index nix-unit diff --git a/hosts/myputer/default.nix b/hosts/myputer/default.nix index aecd7ce..60098b1 100755 --- a/hosts/myputer/default.nix +++ b/hosts/myputer/default.nix @@ -307,19 +307,9 @@ in { # Haskell ghc ghcid - haskell-language-server ormolu # Java - # jdk17 - # (jre8.overrideAttrs - # (oldAttrs: { - # enableJavaFX = true; - # })) - # (jdk8.overrideAttrs - # (oldAttrs: { - # enableJavaFX = true; - # })) visualvm # Python @@ -357,11 +347,6 @@ in { tesseract # for my work with Agribit - # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) - # helix will support nixd by default - # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix - # nixd # lsp for nix # DEBUG - # Pretty necessary git git-filter-repo From 3a5e6dcbed3d815992af5b9621b73ef85d2024e2 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Thu, 29 Jan 2026 14:40:18 +1000 Subject: [PATCH 091/107] ./deploy use --intend-to-add on call to `git add` --- deploy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy b/deploy index 911d054..08b95d0 100755 --- a/deploy +++ b/deploy @@ -19,7 +19,8 @@ collect_garbage () { rebuild_flake () { # make sure all changes are visible to nixos - git add . --verbose + # (--intent-to-add tracks files but DOES NOT stage them) + git add . --intent-to-add --verbose local FLAGS= if [ "$1" = "reinstall-bootloader" ]; then FLAGS="--install-bootloader" From 7d4353bffeb5740f4b76aef1b1222d6a8bcc84d1 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 08:36:10 +1000 Subject: [PATCH 092/107] major buff to the helix module --- homes/modules/editor/helix.nix | 59 ++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index 81f7959..3d831c1 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -3,50 +3,56 @@ pkgs-unstable, ... }: let - lsps = let - mkLsp = pkg: path: {inherit pkg path;}; - in { + lsps = { bash-language-server = - mkLsp - pkgs.bash-language-server - "/bin/bash-language-server"; + { + pkg = pkgs.bash-language-server; + cmd = "bash-language-server"; + }; clangd = - mkLsp - pkgs.clang-tools - "/bin/clangd"; + { + pkg = pkgs.clang-tools; + cmd = "clangd"; + }; haskell-language-server = - mkLsp - pkgs.haskell-language-server - "/bin/haskell-language-server-wrapper"; + { + pkg = pkgs.haskell-language-server; + cmd = "haskell-language-server-wrapper"; + }; # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) # helix will support nixd by default # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix nixd = - mkLsp - pkgs.nixd - "/bin/nixd"; + { + pkg = pkgs.nixd; + cmd = "nixd"; + }; OmniSharp = - mkLsp - pkgs.omnisharp-roslyn - "/bin/OmniSharp"; + { + pkg = pkgs.omnisharp-roslyn; + cmd = "OmniSharp"; + }; rust-analyzer = - mkLsp - pkgs.rust-analyzer - "/bin/rust-analyzer"; + { + pkg = pkgs.rust-analyzer; + cmd = "rust-analyzer"; + }; ty = - mkLsp - pkgs.ty - "/bin/ty"; + { + pkg = pkgs-unstable.ty; + cmd = "ty"; + }; }; in { - environment.systemPackages = + home.packages = lsps + |> builtins.attrValues |> map (lsp: lsp.pkg); # REF: https://docs.helix-editor.com/editor.html @@ -205,7 +211,6 @@ in { } { name = "c-sharp"; - source = "source.cs"; file-types = ["cs"]; indent = { tab-width = 4; @@ -223,7 +228,7 @@ in { language-server = lsps - |> builtins.mapAttrs (_: lsp: "${lsp.pkg}${lsp.path}"); + |> builtins.mapAttrs (_: lsp: { command = "${lsp.pkg}/bin/${lsp.cmd}"; }); }; }; } From 6b6ce26c66e849096d5f06d828151216ad926184 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 08:36:33 +1000 Subject: [PATCH 093/107] move hyrule services to services/ --- hosts/hyrule/{ => services}/mailserver.nix | 1 + hosts/hyrule/{ => services}/minecraft-server.nix | 0 2 files changed, 1 insertion(+) rename hosts/hyrule/{ => services}/mailserver.nix (95%) rename hosts/hyrule/{ => services}/minecraft-server.nix (100%) diff --git a/hosts/hyrule/mailserver.nix b/hosts/hyrule/services/mailserver.nix similarity index 95% rename from hosts/hyrule/mailserver.nix rename to hosts/hyrule/services/mailserver.nix index 49274f2..cd2adfc 100644 --- a/hosts/hyrule/mailserver.nix +++ b/hosts/hyrule/services/mailserver.nix @@ -28,6 +28,7 @@ aliases = ["emile@imbored.dev"]; hashedPasswordFile = let CWD = builtins.getEnv "PWD"; + # XXX: TODO: use a secrets manager! in "${CWD}/secrets/passwd/me"; }; }; diff --git a/hosts/hyrule/minecraft-server.nix b/hosts/hyrule/services/minecraft-server.nix similarity index 100% rename from hosts/hyrule/minecraft-server.nix rename to hosts/hyrule/services/minecraft-server.nix From 83e9a001db75d37742612958c27407294c527fab Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 08:37:39 +1000 Subject: [PATCH 094/107] hyrule use bashistrans.nix --- hosts/hyrule/default.nix | 29 ++--------------------------- hosts/modules/bashistrans.nix | 32 ++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 41 deletions(-) diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index 72cf59f..c87d1ba 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -1,8 +1,6 @@ { pkgs, pkgs-unstable, - inputs, - lib, ... }: let home-manager = builtins.fetchTarball { @@ -20,6 +18,7 @@ in { #../modules/server/nginx.nix #../modules/server/ssh.nix #../modules/server/fail2ban.nix + ../modules/bashistrans.nix ]; nix.settings = { @@ -33,15 +32,6 @@ in { ]; }; - # nixpkgs.config.allowUnfreePredicate = let - # whitelist = map lib.getName [ - # "minecraft-server" - # pkgs.minecraft-server - # pkgs-unstable.minecraft-server - # ]; - # in - # pkg: builtins.elem (lib.getName pkg) whitelist; - time.timeZone = "Australia/Brisbane"; i18n.defaultLocale = "en_US.UTF-8"; @@ -480,6 +470,7 @@ in { }; }; }; + security = { # accept Lets Encrypt's security policy (for nginx) acme = { @@ -507,21 +498,5 @@ in { helix ]; - programs = { - fish.enable = true; - - bash = { - completion.enable = true; - - interactiveShellInit = '' - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] - then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION - fi - ''; - }; - }; - system.stateVersion = "24.11"; # DO NOT MODIFY } diff --git a/hosts/modules/bashistrans.nix b/hosts/modules/bashistrans.nix index d3b285c..e9d74ae 100644 --- a/hosts/modules/bashistrans.nix +++ b/hosts/modules/bashistrans.nix @@ -2,22 +2,26 @@ # I want to use fish as my login shell but it always goes terrible # cause it isn't POSIX compliant, so instead Bash is my login and # will just exec fish (^-^) - programs.bash = { - blesh.enable = false; # ble.sh replacement for GNU readline - completion.enable = true; + programs = { + fish.enable = true; - interactiveShellInit = '' - # help bash transition into a beautiful fish! - if [[ -z $CRY_BASH_IS_TRANS ]] - then - if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + bash = { + blesh.enable = false; # ble.sh replacement for GNU readline + completion.enable = true; + + interactiveShellInit = '' + # help bash transition into a beautiful fish! + if [[ -z $CRY_BASH_IS_TRANS ]] then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" - exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] + then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" + exec ${pkgs.fish}/bin/fish $LOGIN_OPTION + fi fi - fi - # bash is trans now! (no more transitioning required) - export CRY_BASH_IS_TRANS=true - ''; + # bash is trans now! (no more transitioning required) + export CRY_BASH_IS_TRANS=true + ''; + }; }; } From 56af3c8919a817ea06f3613ef692f7a03567a93a Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 08:38:36 +1000 Subject: [PATCH 095/107] split hyrule config --- hosts/hyrule/default.nix | 324 +------------------------- hosts/hyrule/services/forgejo.nix | 150 ++++++++++++ hosts/hyrule/services/nginx.nix | 99 ++++++++ hosts/hyrule/services/vaultwarden.nix | 25 ++ 4 files changed, 278 insertions(+), 320 deletions(-) create mode 100644 hosts/hyrule/services/forgejo.nix create mode 100644 hosts/hyrule/services/nginx.nix create mode 100644 hosts/hyrule/services/vaultwarden.nix diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index c87d1ba..837fc4d 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -12,12 +12,12 @@ in { ./hardware-configuration.nix (import "${home-manager}/nixos") + ./services/forgejo.nix + ./services/vaultwarden.nix + ./services/nginx.nix # ./mailserver.nix # TEMP: location # ./minecraft-server.nix # TEMP: location - #../modules/server/nginx.nix - #../modules/server/ssh.nix - #../modules/server/fail2ban.nix ../modules/bashistrans.nix ]; @@ -82,30 +82,6 @@ in { ]; }; - # wireguard.interfaces = { - # wg0 = { - # ips = ["10.10.10.4/24"]; # my IP and the subnet (keyword: "AND") - # listenPort = 54231; - # - # privateKeyFile = "/root/wg_agrivpn_hyrule"; - # - # peers = [ - # { - # # peer's public key - # publicKey = "iZ4aqYjbT8O8tfUHEuV+yWLtdoQbdBb6Nt0M4usMSiY="; - # - # # choose which traffic to forward - # allowedIPs = ["10.0.51.0/24" "10.10.10.0/24"]; - # - # # TODO: route to endpoint not automatically configured https://wiki.archlinux.org/index.php/WireGuard#Loop_routing https://discourse.nixos.org/t/solved-minimal-firewall-setup-for-wireguard-client/7577 - # endpoint = "150.242.34.33:54231"; - # - # # send keepalives every 25 seconds. Important to keep NAT tables alive. - # persistentKeepalive = 25; - # } - # ]; - # }; - # }; wg-quick.interfaces = { wg0 = { address = [ @@ -140,7 +116,7 @@ in { extraGroups = ["wheel"]; shell = pkgs.bash; openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsUZY45rgezi+8iROdcR5vPeacJ2fbMjlDijfUrH9hRX2FzCsg/4e3aFKhi2seZMmyTfbstxmDrrH8paUS5TibFgLFBGNngaF3CTjg85i5pm25Hr4IVo31oziBnTWaG6j3buYKtz5e1qSPzXywinJR+5+FCUJU7Fxa+EWTZcOX4wYgArSj4q73rZmvk5N0X44Mudt4nvpD2chvxygsdTzD6ph92qCuaJ/AbfmOoC7b/xvOaOVydUfgDLpHi9VZbd3akvvKxRfW6ZklldgXEzPXKMuastN0mwcBxvIb5G1Vkj8jtSVtKPc5psZ9/NWA5l38xH4qZ6z7eib6thtEMdtcKmTZEEWDADjqTea5Gj61c1n18cr6f3Tff+0bn/cxsl4Y0esi+aDeuCXYiIYNmeKBx0ttDNIxpk4J5Fdh6Xs+AZif5lnJErtu8TPy2aC0bc9wehTjMyvilTHfyerOD1ZJXhN2XwRVDGN7t7leAJZISJlPjqTDcw3Vfvzte/5JqS+FR+hbpG4uz2ix8kUa20u5YF2oSdGl8+zsdozVsdQm10Iv9WSXBV7t4m+oyodgtfzydBpmXq7aBXudCiEKw+7TC7F+1a4YFrVrCNXKFgKUpd1MiVLl7DIbzm5U9MD2BB3Fy7BPCzr3tW6/ExOhhpBWY+HnzVGQfkNr7dRcqfipKw== ae@imbored.dev" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsUZY45rgezi+8iROdcR5vPeacJ2fbMjlDijfUrH9hRX2FzCsg/4e3aFKhi2seZMmyTfbstxmDrrH8paUS5TibFgLFBGNngaF3CTjg85i5pm25Hr4IVo31oziBnTWaG6j3buYKtz5e1qSPzXywinJR+5+FCUJU7Fxa+EWTZcOX4wYgArSj4q73rZmvk5N0X44Mudt4nvpD2chvxygsdTzD6ph92qCuaJ/AbfmOoC7b/xvOaOVydUfgDLpHi9VZbd3akvvKxRfW6ZklldgXEzPXKMuastN0mwcBxvIb5G1Vkj8jtSVtKPc5psZ9/NWA5l38xH4qZ6z7eib6thtEMdtcKmTZEEWDADjqTea5Gj61c1n18cr6f3Tff+0bn/cxsl4Y0esi+aDeuCXYiIYNmeKBx0ttDNIxpk4J5Fdh6Xs+AZif5lnJErtu8TPy2aC0bc9wehTjMyvilTHfyerOD1ZJXhN2XwRVDGN7t7leAJZISJlPjqTDcw3Vfvzte/5JqS+FR+hbpG4uz2ix8kUa20u5YF2oSdGl8+zsdozVsdQm10Iv9WSXBV7t4m+oyodgtfzydBpmXq7aBXudCiEKw+7TC7F+1a4YFrVrCNXKFgKUpd1MiVLl7DIbzm5U9MD2BB3Fy7BPCzr3tW6/ExOhhpBWY+HnzVGQfkNr7dRcqfipKw== ae@dobutterfliescry.net" ]; }; @@ -166,70 +142,6 @@ in { }; services = { - # simple nginx instance to host static construction page - # TODO: I want sshd and forgejo's ssh server to both be bound to port 22 - # So change sshd to listen on a different address/port (ie 2222 or 127.0.0.3:22, etc) - # and change forgejo to use 127.0.0.2:22 (use port 22, ONLY change loopback address) - nginx = { - enable = true; - # in wake of CVE-2022-3602/CVE-2022-3786 - package = pkgs.nginxStable.override {openssl = pkgs.libressl;}; - - recommendedGzipSettings = true; - recommendedZstdSettings = true; - recommendedOptimisation = true; - recommendedProxySettings = true; - recommendedTlsSettings = true; - - # streamConfig = '' - # server { - # listen 127.0.0.1:53 udp reuseport; - # proxy_timeout 20s; - # proxy_pass 192.168.0.1:53535; - # } - # ''; - - virtualHosts = let - localhost = "http://127.0.0.1"; - std = { - # TODO: should I run over QUIC+HTTP3? (experimental) - # quic = true; - # http3 = true; - enableACME = true; - # kTLS = true; # offload TLS to the linux kernel - }; - in { - "imbored.dev" = - { - default = true; - addSSL = true; # not strictly enforced <3 - root = "/var/www/imbored"; - # extraConfig = '' - # error_page 404 /custom_404.html; - # ''; - } - // std; - # Route "vault" subdomain to vaultwarden - "vault.imbored.dev" = - { - forceSSL = true; - locations."/".proxyPass = "${localhost}:8222"; - } - // std; - # Route "forge" subdomain to forgejo - # TODO: use `forgejo.settings.server.ENABLE_ACME` instead? - "forge.imbored.dev" = - { - forceSSL = true; - extraConfig = '' - client_max_body_size 512M; - ''; - locations."/".proxyPass = "${localhost}:3000"; - } - // std; - }; - }; - openssh = { enable = true; ports = [22]; @@ -241,234 +153,6 @@ in { X11Forwarding = false; }; }; - - vaultwarden = { - enable = true; - dbBackend = "sqlite"; - - # backupDir = "/var/backup/vaultwarden"; # disable with null - - # https://mynixos.com/nixpkgs/option/services.vaultwarden.config - config = { - # internal address and port to listen on - ROCKET_ADDRESS = "127.0.0.1"; - ROCKET_PORT = 8222; - - # hostname to listen for - DOMAIN = "https://vault.imbored.dev"; - - # signup policy - SIGNUPS_ALLOWED = false; - SIGNUPS_VERIFY = true; - INVITATIONS_ALLOWED = true; - }; - # https://mynixos.com/nixpkgs/option/services.vaultwarden.environmentFile - environmentFile = "/var/lib/vaultwarden/vaultwarden.env"; - }; - - # stalwart-mail = let - # domain = "imbored.dev"; - # in { - # enable = false; # true; - # # openFirewall = true; # im doing this manually rn - # settings = { - # certificate."${domain}" = { - # cert = "file://${certs.${domain}.cert}"; - # private-key = "file://${certs.${domain}.key}"; - # }; - # server = { - # hostname = domain; - # tls = { - # certificate = "${domain}"; - # enable = true; - # implicit = false; - # }; - # listener = { - # "smtp-submission" = { - # bind = ["127.0.0.1:587"]; - # protocol = "smtp"; - # }; - # "imap" = { - # bind = ["127.0.0.1:143"]; - # protocol = "imap"; - # }; - # }; - # }; - # session = { - # rcpt.directory = "in-memory"; - # auth = { - # mechanisms = ["PLAIN"]; - # directory = "in-memory"; - # }; - # }; - # jmap.directory = "in-memory"; - # queue.outbound.next-hop = ["local"]; - # directory."in-memory" = { - # type = "memory"; - # users = [ - # { - # name = "me"; - # secret = "foobar"; - # email = ["me@${domain}"]; - # } - # { - # name = "Emile"; - # secret = "foobar"; - # email = ["emile@${domain}"]; - # } - # ]; - # }; - # }; - # }; - - # more options here: https://mynixos.com/nixpkgs/options/services.forgejo - # TODO: set a favicon https://forgejo.org/docs/next/contributor/customization/#changing-the-logo - # (might need me to override settings in the nixpkg) - # TODO: create a custom theme for forgejo (modify the source files most likely) - forgejo = { - enable = true; - # enable support for Git Large File Storage - lfs.enable = true; - database = { - type = "sqlite3"; # postgres - host = "127.0.0.1"; - port = "3306"; # 5432 if postgres - }; - # settings are written directly to the `app.ini` config file - # refer to: https://forgejo.org/docs/latest/admin/config-cheat-sheet/ - settings = { - server = { - # ENABLE_ACME = true; - # ACME_EMAIL = "eclarkboman@gmail.com"; # change this to "me@imbored.dev" - DOMAIN = "forge.imbored.dev"; # should this be "imbored.dev"? - ROOT_URL = "https://forge.imbored.dev"; # full public URL of the Forgejo server - # address and port to listen on - HTTP_ADDR = "127.0.0.1"; - HTTP_PORT = 3000; - PROTOCOL = "http"; # http internally, reverse proxy uses https externally - - START_SSH_SERVER = true; - DISABLE_SSH = false; - SSH_PORT = 2222; - }; - - DEFAULT = { - APP_NAME = "tearforge"; - APP_SLOGIN = "but cozy"; - APP_DISPLAY_NAME_FORMAT = "{APP_NAME} ::{APP_SLOGAN}::"; - }; - - repository = { - DEFAULT_PRIVATE = "private"; # last, private, public - # repo/org created on push to non-existent - ENABLE_PUSH_CREATE_USER = true; - ENABLE_PUSH_CREATE_ORG = false; - DEFAULT_PUSH_CREATE_PRIVATE = true; - MAX_CREATION_LIMIT = -1; - }; - - "repository.upload" = { - # max per-file size in MB - FILE_MAX_SIZE = 50; - # max number of files per upload - MAX_FILES = 5; - }; - - badges = let - # flat, flat-square, plastic, for-the-badge, social - style = "for-the-badge"; - in { - ENABLED = true; - GENERATOR_URL_TEMPLATE = "https://img.shields.io/badge/{{.label}}-{{.text}}-{{.color}}?style=${style}"; - }; - - ui = { - DEFAULT_THEME = "forgejo-dark"; - THEMES = "forgejo-auto,forgejo-light,forgejo-dark"; - }; - "ui.meta" = { - AUTHOR = "Emile Clark-Boman - emileclarkb"; - DESCRIPTION = "This is my personal self-hosted git forge, where I keep and maintain personal projects! PS do butterflies cry when they're sad?"; - KEYWORDS = "emile,clark,boman,clarkboman,emileclarkb,git,forge,forgejo,self-hosted,dobutterfliescry,butterfly,butterflies"; - }; - - markdown = { - ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true; - ENABLE_MATH = true; - }; - - admin = { - DEFAULT_EMAIL_NOTIFICATIONS = "enabled"; - SEND_NOTIFICATION_EMAIL_ON_NEW_USER = true; - }; - - security = { - # Controls access to the installation page. - # When set to “true”, the installation page is not accessible. - #INSTALL_LOCK = false; - - PASSWORD_HASH_ALGO = "argon2"; # ARGON2 BEST ALGO FR!! (default: argon2$2$65536$8$50) - MIN_PASSWORD_LENGTH = 12; - PASSWORD_COMPLEXITY = "lower,upper,digit,spec"; - PASSWORD_CHECK_PWN = true; - }; - - service = { - DISABLE_REGISTRATION = true; # toggle for new users - #DEFAULT_USER_IS_RESTRICTED = true; - # Forbid login with third-party services (ie github) - ALLOW_ONLY_INTERNAL_REGISTRATION = true; - ENABLE_CAPTCHA = true; - REQUIRE_CAPTCHA_FOR_LOGIN = true; - REQUIRE_EXTERNAL_REGISTRATION_CAPTCHA = true; - LOGIN_REMEMBER_DAYS = 365; - ENABLE_NOTIFY_MAIL = true; - }; - "service.explore" = { - REQUIRE_SIGNIN_VIEW = false; - DISABLE_USERS_PAGE = false; - DISABLE_ORGANIZATIONS_PAGE = false; - DISABLE_CODE_PAGE = false; - }; - - cache = { - ADAPTER = "twoqueue"; - HOST = "{\"size\":100, \"recent_ratio\":0.25, \"ghost_ratio\":0.5}"; - ITEM_TTL = "16h"; - }; - - # TODO: fill this in once my mail server is configured - # email.incoming = { ... }; - - # optional - # TODO: fill this in once my mail server is configured - mailer = { - ENABLED = false; - SMTP_ADDR = "mail.imbored.dev"; - FROM = "noreply@imbored.dev"; - USER = "noreply@imbored.dev"; - }; - - log = { - MODE = "file"; - LEVEL = "Info"; # "Trace", "Debug", "Info", "Warn", "Error", "Critical" - ENABLE_SSH_LOG = true; - }; - - cron = { - ENABLED = true; - RUN_AT_START = false; - }; - - other = { - SHOW_FOOTER_VERSION = true; - SHOW_FOOTER_TEMPLATE_LOAD_TIME = true; - SHOW_FOOTER_POWERED_BY = true; - ENABLE_SITEMAP = true; - ENABLE_FEED = true; - }; - }; - }; }; security = { diff --git a/hosts/hyrule/services/forgejo.nix b/hosts/hyrule/services/forgejo.nix new file mode 100644 index 0000000..f228116 --- /dev/null +++ b/hosts/hyrule/services/forgejo.nix @@ -0,0 +1,150 @@ +{...}: { + # more options here: https://mynixos.com/nixpkgs/options/services.forgejo + # TODO: set a favicon https://forgejo.org/docs/next/contributor/customization/#changing-the-logo + # (might need me to override settings in the nixpkg) + # TODO: create a custom theme for forgejo (modify the source files most likely) + services.forgejo = { + enable = true; + # enable support for Git Large File Storage + lfs.enable = true; + database = { + type = "sqlite3"; # postgres + host = "127.0.0.1"; + port = "3306"; # 5432 if postgres + }; + # settings are written directly to the `app.ini` config file + # refer to: https://forgejo.org/docs/latest/admin/config-cheat-sheet/ + settings = { + server = { + # ENABLE_ACME = true; + # ACME_EMAIL = "eclarkboman@gmail.com"; # change this to "me@imbored.dev" + DOMAIN = "forge.imbored.dev"; # should this be "imbored.dev"? + ROOT_URL = "https://forge.imbored.dev"; # full public URL of the Forgejo server + # address and port to listen on + HTTP_ADDR = "127.0.0.1"; + HTTP_PORT = 3000; + PROTOCOL = "http"; # http internally, reverse proxy uses https externally + + START_SSH_SERVER = true; + DISABLE_SSH = false; + SSH_PORT = 2222; + }; + + DEFAULT = { + APP_NAME = "tearforge"; + APP_SLOGIN = "but cozy"; + APP_DISPLAY_NAME_FORMAT = "{APP_NAME} ::{APP_SLOGAN}::"; + }; + + repository = { + DEFAULT_PRIVATE = "private"; # last, private, public + # repo/org created on push to non-existent + ENABLE_PUSH_CREATE_USER = true; + ENABLE_PUSH_CREATE_ORG = false; + DEFAULT_PUSH_CREATE_PRIVATE = true; + MAX_CREATION_LIMIT = -1; + }; + + "repository.upload" = { + # max per-file size in MB + FILE_MAX_SIZE = 50; + # max number of files per upload + MAX_FILES = 5; + }; + + badges = let + # flat, flat-square, plastic, for-the-badge, social + style = "for-the-badge"; + in { + ENABLED = true; + GENERATOR_URL_TEMPLATE = "https://img.shields.io/badge/{{.label}}-{{.text}}-{{.color}}?style=${style}"; + }; + + ui = { + DEFAULT_THEME = "forgejo-dark"; + THEMES = "forgejo-auto,forgejo-light,forgejo-dark"; + }; + "ui.meta" = { + AUTHOR = "Emile Clark-Boman - emileclarkb"; + DESCRIPTION = "This is my personal self-hosted git forge, where I keep and maintain personal projects! PS do butterflies cry when they're sad?"; + KEYWORDS = "emile,clark,boman,clarkboman,emileclarkb,git,forge,forgejo,self-hosted,dobutterfliescry,butterfly,butterflies"; + }; + + markdown = { + ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true; + ENABLE_MATH = true; + }; + + admin = { + DEFAULT_EMAIL_NOTIFICATIONS = "enabled"; + SEND_NOTIFICATION_EMAIL_ON_NEW_USER = true; + }; + + security = { + # Controls access to the installation page. + # When set to “true”, the installation page is not accessible. + #INSTALL_LOCK = false; + + PASSWORD_HASH_ALGO = "argon2"; # ARGON2 BEST ALGO FR!! (default: argon2$2$65536$8$50) + MIN_PASSWORD_LENGTH = 12; + PASSWORD_COMPLEXITY = "lower,upper,digit,spec"; + PASSWORD_CHECK_PWN = true; + }; + + service = { + DISABLE_REGISTRATION = true; # toggle for new users + #DEFAULT_USER_IS_RESTRICTED = true; + # Forbid login with third-party services (ie github) + ALLOW_ONLY_INTERNAL_REGISTRATION = true; + ENABLE_CAPTCHA = true; + REQUIRE_CAPTCHA_FOR_LOGIN = true; + REQUIRE_EXTERNAL_REGISTRATION_CAPTCHA = true; + LOGIN_REMEMBER_DAYS = 365; + ENABLE_NOTIFY_MAIL = true; + }; + "service.explore" = { + REQUIRE_SIGNIN_VIEW = false; + DISABLE_USERS_PAGE = false; + DISABLE_ORGANIZATIONS_PAGE = false; + DISABLE_CODE_PAGE = false; + }; + + cache = { + ADAPTER = "twoqueue"; + HOST = "{\"size\":100, \"recent_ratio\":0.25, \"ghost_ratio\":0.5}"; + ITEM_TTL = "16h"; + }; + + # TODO: fill this in once my mail server is configured + # email.incoming = { ... }; + + # optional + # TODO: fill this in once my mail server is configured + mailer = { + ENABLED = false; + SMTP_ADDR = "mail.dobutterfliescry.net"; + FROM = "iforgor@dobutterfliescry.net"; + USER = "iforgor@dobutterfliescry.net"; + }; + + log = { + MODE = "file"; + LEVEL = "Info"; # "Trace", "Debug", "Info", "Warn", "Error", "Critical" + ENABLE_SSH_LOG = true; + }; + + cron = { + ENABLED = true; + RUN_AT_START = false; + }; + + other = { + SHOW_FOOTER_VERSION = true; + SHOW_FOOTER_TEMPLATE_LOAD_TIME = true; + SHOW_FOOTER_POWERED_BY = true; + ENABLE_SITEMAP = true; + ENABLE_FEED = true; + }; + }; + }; +} diff --git a/hosts/hyrule/services/nginx.nix b/hosts/hyrule/services/nginx.nix new file mode 100644 index 0000000..d719841 --- /dev/null +++ b/hosts/hyrule/services/nginx.nix @@ -0,0 +1,99 @@ +{pkgs, ...}: { + nixpkgs.overlays = [ + (self: super: { + # in wake of CVE-2022-3602/CVE-2022-3786 + nginxStable = super.nginxStable.override {openssl = pkgs.libressl;}; + }) + ]; + + # simple nginx instance to host static construction page + # TODO: I want sshd and forgejo's ssh server to both be bound to port 22 + # So change sshd to listen on a different address/port (ie 2222 or 127.0.0.3:22, etc) + # and change forgejo to use 127.0.0.2:22 (use port 22, ONLY change loopback address) + services.nginx = { + enable = true; + # XXX: TODO: this should auto use the nginxStable overlay no? + # in wake of CVE-2022-3602/CVE-2022-3786 + # package = pkgs.nginxStable.override {openssl = pkgs.libressl;}; + + recommendedGzipSettings = true; + recommendedZstdSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + + # streamConfig = '' + # server { + # listen 127.0.0.1:53 udp reuseport; + # proxy_timeout 20s; + # proxy_pass 192.168.0.1:53535; + # } + # ''; + + virtualHosts = let + localhost = "http://127.0.0.1"; + std = { + # TODO: should I run over QUIC+HTTP3? (experimental) + # quic = true; + # http3 = true; + enableACME = true; + # kTLS = true; # offload TLS to the linux kernel + }; + website = + { + default = true; + addSSL = true; # not strictly enforced <3 + root = "/var/www/imbored"; + # extraConfig = '' + # error_page 404 /custom_404.html; + # ''; + } + // std; + + vault = + { + forceSSL = true; + locations."/".proxyPass = "${localhost}:8222"; + } + // std; + forge = + { + forceSSL = true; + extraConfig = '' + client_max_body_size 512M; + ''; + locations."/".proxyPass = "${localhost}:3000"; + } + // std; + in { + # XXX: TODO: imbored.dev and dobutterfliescry.net can't + # XXX: TODO: be active at the same time??? why?? + # "imbored.dev" = + # { + # default = true; + # addSSL = true; # not strictly enforced <3 + # root = "/var/www/imbored"; + # # extraConfig = '' + # # error_page 404 /custom_404.html; + # # ''; + # } + # // std; + "dobutterfliescry.net" = + { + default = true; + addSSL = true; # not strictly enforced <3 + root = "/var/www/cry"; + # extraConfig = '' + # error_page 404 /custom_404.html; + # ''; + } + // std; + # Route "vault" subdomain to vaultwarden + "vault.imbored.dev" = vault; + # Route "forge" subdomain to forgejo + # TODO: use `forgejo.settings.server.ENABLE_ACME` instead? + "forge.imbored.dev" = forge; + # "forge.dobutterfliescry.net" = forge; + }; + }; +} diff --git a/hosts/hyrule/services/vaultwarden.nix b/hosts/hyrule/services/vaultwarden.nix new file mode 100644 index 0000000..6cde9ab --- /dev/null +++ b/hosts/hyrule/services/vaultwarden.nix @@ -0,0 +1,25 @@ +{...}: { + services.vaultwarden = { + enable = true; + dbBackend = "sqlite"; + + # backupDir = "/var/backup/vaultwarden"; # disable with null + + # https://mynixos.com/nixpkgs/option/services.vaultwarden.config + config = { + # internal address and port to listen on + ROCKET_ADDRESS = "127.0.0.1"; + ROCKET_PORT = 8222; + + # hostname to listen for + DOMAIN = "https://vault.imbored.dev"; + + # signup policy + SIGNUPS_ALLOWED = false; + SIGNUPS_VERIFY = true; + INVITATIONS_ALLOWED = true; + }; + # https://mynixos.com/nixpkgs/option/services.vaultwarden.environmentFile + environmentFile = "/var/lib/vaultwarden/vaultwarden.env"; + }; +} From 964b3b596fc84b6b8f91df5601387d74d206f949 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 09:42:35 +1000 Subject: [PATCH 096/107] ensure flake inputs follow --- flake.nix | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index e339ce6..91f5a24 100644 --- a/flake.nix +++ b/flake.nix @@ -2,10 +2,19 @@ description = "Emile's Nix Dotfiles"; inputs = { + systems = "github:nix-systems/default"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; - colmena.url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a"; + colmena = { + url = "github:zhaofengli/colmena/?rev=47b6414d800c8471e98ca072bc0835345741a56a"; + inputs = { + nixpkgs.follows = "nixpkgs-unstable"; + stable.follows = "nixpkgs"; + flake-utils.inputs.systems.follows = "systems"; + }; + }; grub2-themes.url = "github:vinceliuice/grub2-themes"; }; @@ -30,12 +39,15 @@ pkgs-unstable = import nixpkgs-unstable { inherit system; config = { - allowUnfree = true; # TODO: bandaid solution... (for minecraft-server) + # allowUnfree = true; # TODO: bandaid solution... (for minecraft-server) + allowUnfree = false; }; }; # TODO: come back to this its really cool # this is just something I'm experimenting with - # PROJECT_ROOT = builtins.toString ./.; + # ROOT = ./.; + + specialArgs = {inherit inputs pkgs-unstable;}; in { devShells."x86_64-linux".default = pkgs.mkShell { shell = "${pkgs.bash}/bin/bash"; @@ -50,7 +62,7 @@ # i be on my puter fr myputer = nixpkgs.lib.nixosSystem { # nix passes these to every single module - specialArgs = {inherit inputs pkgs-unstable;}; + inherit specialArgs; modules = [ ./hosts/myputer @@ -60,7 +72,7 @@ # my laptop 0w0 lolcathost = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs pkgs-unstable;}; + inherit specialArgs; modules = [ ./hosts/lolcathost @@ -73,7 +85,7 @@ colmenaHive = colmena.lib.makeHive { meta = { nixpkgs = pkgs; - specialArgs = {inherit pkgs-unstable;}; + inherit specialArgs; # set nixpkgs per server nodeNixpkgs = { From 7e4959352a3ba725c5482e6434dcf987ac4ad292 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 09:42:44 +1000 Subject: [PATCH 097/107] add dobutterfliescry.net input --- flake.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/flake.nix b/flake.nix index 91f5a24..9667548 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,15 @@ }; grub2-themes.url = "github:vinceliuice/grub2-themes"; + + dobutterfliescry-net = { + url = "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net"; + inputs = { + nixpkgs.follows = "nixpkgs"; + nixpkgs-unstable.follows = "nixpkgs-unstable"; + systems.follows = "systems"; + }; + }; }; outputs = { From 0eec0a9adeb20c14b56e4f229c138594c9a0d36d Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 09:57:24 +1000 Subject: [PATCH 098/107] fix bad inputs --- flake.lock | 112 ++++++++++++++++++++++++++++++++++------------------- flake.nix | 4 +- 2 files changed, 74 insertions(+), 42 deletions(-) diff --git a/flake.lock b/flake.lock index e1ab303..8d37b6f 100644 --- a/flake.lock +++ b/flake.lock @@ -5,8 +5,12 @@ "flake-compat": "flake-compat", "flake-utils": "flake-utils", "nix-github-actions": "nix-github-actions", - "nixpkgs": "nixpkgs", - "stable": "stable" + "nixpkgs": [ + "nixpkgs-unstable" + ], + "stable": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1734374287, @@ -23,6 +27,32 @@ "type": "github" } }, + "dobutterfliescry-net": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-unstable": [ + "nixpkgs-unstable" + ], + "systems": [ + "systems" + ] + }, + "locked": { + "lastModified": 1769815774, + "narHash": "sha256-77XLfci6EK+zenuJkHuyt8gh0MI2mlJYEPVRPu0Ufcc=", + "ref": "refs/heads/main", + "rev": "c4049313d442538a60edca4aba5e71b963d2bc40", + "revCount": 55, + "type": "git", + "url": "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net" + }, + "original": { + "type": "git", + "url": "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net" + } + }, "flake-compat": { "flake": false, "locked": { @@ -40,23 +70,25 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "flake-utils", + "type": "indirect" } }, "grub2-themes": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1757136219, @@ -95,16 +127,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1734119587, - "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", + "lastModified": 1761269590, + "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5", + "rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "master", "repo": "nixpkgs", "type": "github" } @@ -126,22 +158,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1761269590, - "narHash": "sha256-yTr+PCi4wGbOEidrm8XyXBobLxLMqIBsbUyhwsN6wrc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d792a6e0cd4ba35c90ea787b717d72410f56dc40", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1761016216, "narHash": "sha256-G/iC4t/9j/52i/nm+0/4ybBmAF4hzR8CNHC75qEhjHo=", @@ -160,24 +176,40 @@ "root": { "inputs": { "colmena": "colmena", + "dobutterfliescry-net": "dobutterfliescry-net", "grub2-themes": "grub2-themes", - "nixpkgs": "nixpkgs_3", - "nixpkgs-unstable": "nixpkgs-unstable" + "nixpkgs": "nixpkgs_2", + "nixpkgs-unstable": "nixpkgs-unstable", + "systems": "systems_2" } }, - "stable": { + "systems": { "locked": { - "lastModified": 1730883749, - "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", "type": "github" } } diff --git a/flake.nix b/flake.nix index 9667548..85de2d0 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "Emile's Nix Dotfiles"; inputs = { - systems = "github:nix-systems/default"; + systems.url = "github:nix-systems/default"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; @@ -19,7 +19,7 @@ grub2-themes.url = "github:vinceliuice/grub2-themes"; dobutterfliescry-net = { - url = "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net"; + url = "git+https://forge.imbored.dev/emileclarkb/dobutterfliescry.net"; inputs = { nixpkgs.follows = "nixpkgs"; nixpkgs-unstable.follows = "nixpkgs-unstable"; From e14ebf98ca0b6adb5abdcf87a4caaf7acb07227a Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 10:14:46 +1000 Subject: [PATCH 099/107] add --show-flags and EXTRA_FLAGS to ./deploy --- deploy | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/deploy b/deploy index 08b95d0..fcd6f85 100755 --- a/deploy +++ b/deploy @@ -9,6 +9,7 @@ Options: -f, --fresh Remove old content in the nixstore (good for debugging) -b, --bootloader Reinstall the bootloader -r, --remote Locally build and remotely deploy Colmena hive + --show-trace Show nix stack trace on error -h, --help Show this message (^_^)" # delete all cached entries @@ -31,7 +32,7 @@ rebuild_flake () { # LOG="$(mktemp /tmp/rebuild-XXXXXXXX)" LOG="./rebuild.log" echo "[*] Logging to $LOG" - sudo nixos-rebuild switch --flake . $FLAGS 2>&1 | tee "$LOG" + sudo nixos-rebuild switch --flake . $FLAGS $EXTRA_FLAGS 2>&1 | tee "$LOG" #nixos-rebuild build --flake .# --cores 8 -j 1 } @@ -42,19 +43,22 @@ deploy_hive () { git add . --verbose # Deploy to all Colmena hives - colmena build --experimental-flake-eval - colmena apply --experimental-flake-eval + colmena build --experimental-flake-eval $EXTRA_FLAGS + colmena apply --experimental-flake-eval $EXTRA_FLAGS # colmena apply --on hyrule --experimental-flake-eval } # check which flags were given flag_fresh=false flag_bootloader=false +flag_remote=false +flag_trace=false for flag in "$@"; do case "$flag" in -r|--remote) - deploy_hive - exit 0 ;; + flag_remote=true ;; + --show-trace) + flag_trace=true ;; -f|--fresh) flag_fresh=true ;; -b|--bootloader) @@ -68,6 +72,16 @@ for flag in "$@"; do esac done +EXTRA_FLAGS="" +if [ "$flag_trace" = true ]; then + EXTRA_FLAGS="$EXTRA_FLAGS --show-trace" +fi + +if [ "$flag_remote" = true ]; then + deploy_hive + exit 0 +fi + # delete cached items in nixstore if [ "$flag_fresh" = true ]; then collect_garbage From 47bc060da7def6aa54faa5e7cb37fda5306c5139 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 10:26:17 +1000 Subject: [PATCH 100/107] fix nginx bad root --- flake.lock | 8 ++++---- hosts/hyrule/services/nginx.nix | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 8d37b6f..bfa8133 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1769815774, - "narHash": "sha256-77XLfci6EK+zenuJkHuyt8gh0MI2mlJYEPVRPu0Ufcc=", + "lastModified": 1769819040, + "narHash": "sha256-sFtlxsSXGH3BFkM7REuwntmKQ9f1SeDQIqEK8jTdz34=", "ref": "refs/heads/main", - "rev": "c4049313d442538a60edca4aba5e71b963d2bc40", - "revCount": 55, + "rev": "e001182489cea3e4cb2a461eb83a7c163f38b7e7", + "revCount": 56, "type": "git", "url": "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net" }, diff --git a/hosts/hyrule/services/nginx.nix b/hosts/hyrule/services/nginx.nix index d719841..a923245 100644 --- a/hosts/hyrule/services/nginx.nix +++ b/hosts/hyrule/services/nginx.nix @@ -1,9 +1,14 @@ -{pkgs, ...}: { +{ + inputs, + pkgs, + ... +}: { nixpkgs.overlays = [ (self: super: { # in wake of CVE-2022-3602/CVE-2022-3786 nginxStable = super.nginxStable.override {openssl = pkgs.libressl;}; }) + inputs.dobutterfliescry-net.overlays.default ]; # simple nginx instance to host static construction page @@ -82,7 +87,8 @@ { default = true; addSSL = true; # not strictly enforced <3 - root = "/var/www/cry"; + # root = "/var/www/cry"; + root = "${pkgs.dobutterfliescry-net}/www"; # extraConfig = '' # error_page 404 /custom_404.html; # ''; From de526f42a0a1619ad6ea0a6f735d8869990111a1 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 10:57:49 +1000 Subject: [PATCH 101/107] progress input dobutterfliescry-net --- flake.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index bfa8133..6c38971 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1769819040, - "narHash": "sha256-sFtlxsSXGH3BFkM7REuwntmKQ9f1SeDQIqEK8jTdz34=", + "lastModified": 1769819491, + "narHash": "sha256-hMr47pVjBGd9Jk0zlKL66GWBlS6E50Mp4sW0OBvneSk=", "ref": "refs/heads/main", - "rev": "e001182489cea3e4cb2a461eb83a7c163f38b7e7", - "revCount": 56, + "rev": "c0f53e00c1888ff9bd92055f0bdc3fe9f218d387", + "revCount": 57, "type": "git", "url": "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net" }, From f1224c8cf80edc2d1e63cdd8e81b00329ab94cf4 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 10:57:59 +1000 Subject: [PATCH 102/107] add helix js/ts lsp --- homes/modules/editor/helix.nix | 84 +++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index 3d831c1..80ea265 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -4,50 +4,48 @@ ... }: let lsps = { - bash-language-server = - { - pkg = pkgs.bash-language-server; - cmd = "bash-language-server"; - }; + bash-language-server = { + pkg = pkgs.bash-language-server; + cmd = "bash-language-server"; + }; - clangd = - { - pkg = pkgs.clang-tools; - cmd = "clangd"; - }; + clangd = { + pkg = pkgs.clang-tools; + cmd = "clangd"; + }; - haskell-language-server = - { - pkg = pkgs.haskell-language-server; - cmd = "haskell-language-server-wrapper"; - }; + haskell-language-server = { + pkg = pkgs.haskell-language-server; + cmd = "haskell-language-server-wrapper"; + }; # TODO: once upgraded past Nix-24.07 this line won't be necessary (I think) # helix will support nixd by default # SOURCE: https://github.com/nix-community/nixd/blob/main/nixd/docs/editor-setup.md#Helix - nixd = - { - pkg = pkgs.nixd; - cmd = "nixd"; - }; + nixd = { + pkg = pkgs.nixd; + cmd = "nixd"; + }; - OmniSharp = - { - pkg = pkgs.omnisharp-roslyn; - cmd = "OmniSharp"; - }; + OmniSharp = { + pkg = pkgs.omnisharp-roslyn; + cmd = "OmniSharp"; + }; - rust-analyzer = - { - pkg = pkgs.rust-analyzer; - cmd = "rust-analyzer"; - }; + rust-analyzer = { + pkg = pkgs.rust-analyzer; + cmd = "rust-analyzer"; + }; - ty = - { - pkg = pkgs-unstable.ty; - cmd = "ty"; - }; + ty = { + pkg = pkgs-unstable.ty; + cmd = "ty"; + }; + + typescript-language-server = { + pkg = pkgs.typescript-language-server; + cmd = "typescript-language-server"; + }; }; in { home.packages = @@ -224,11 +222,25 @@ in { # formatter.command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; # language-servers = ["OmniSharp"]; } + { + name = "javascript"; + file-types = ["js"]; + indent = { + tab-width = 2; + unit = " "; + }; + block-comment-tokens = { + start = "/*"; + end = "*/"; + }; + auto-format = true; + language-servers = ["typescript-language-server"]; + } ]; language-server = lsps - |> builtins.mapAttrs (_: lsp: { command = "${lsp.pkg}/bin/${lsp.cmd}"; }); + |> builtins.mapAttrs (_: lsp: {command = "${lsp.pkg}/bin/${lsp.cmd}";}); }; }; } From e628d59c72d74cfa5caf369bc18912f96fb9d814 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sat, 31 Jan 2026 11:07:09 +1000 Subject: [PATCH 103/107] add helix glsl lsp --- homes/modules/editor/helix.nix | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/homes/modules/editor/helix.nix b/homes/modules/editor/helix.nix index 80ea265..1014cca 100755 --- a/homes/modules/editor/helix.nix +++ b/homes/modules/editor/helix.nix @@ -14,6 +14,11 @@ cmd = "clangd"; }; + glsl_analyzer = { + pkg = pkgs.glsl_analyzer; + cmd = "glsl_analyzer"; + }; + haskell-language-server = { pkg = pkgs.haskell-language-server; cmd = "haskell-language-server-wrapper"; @@ -218,7 +223,7 @@ in { start = "/*"; end = "*/"; }; - # auto-format = false; + # auto-format = true; # formatter.command = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; # language-servers = ["OmniSharp"]; } @@ -236,6 +241,20 @@ in { auto-format = true; language-servers = ["typescript-language-server"]; } + { + name = "glsl"; + file-types = ["glsl"]; + indent = { + tab-width = 2; + unit = " "; + }; + block-comment-tokens = { + start = "/*"; + end = "*/"; + }; + auto-format = false; + language-servers = ["glsl_analyzer"]; + } ]; language-server = From 42d2e37aedf9763568e8b55831d016327e4f1737 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 3 Feb 2026 12:24:40 +1000 Subject: [PATCH 104/107] add clocktown host --- flake.lock | 8 ++++---- homes/me/default.nix | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 6c38971..b10fff6 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ ] }, "locked": { - "lastModified": 1769819491, - "narHash": "sha256-hMr47pVjBGd9Jk0zlKL66GWBlS6E50Mp4sW0OBvneSk=", + "lastModified": 1769832488, + "narHash": "sha256-mYNFYj3Ed7l6MbuFIMd9ahlyNuav5X8q9siKwVkPxUQ=", "ref": "refs/heads/main", - "rev": "c0f53e00c1888ff9bd92055f0bdc3fe9f218d387", - "revCount": 57, + "rev": "efdedb23b8becfdaf7b43b431007fc369bae318d", + "revCount": 77, "type": "git", "url": "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net" }, diff --git a/homes/me/default.nix b/homes/me/default.nix index a6e5745..2c4e918 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -130,6 +130,12 @@ TERM = "linux"; }; }; + clocktown = { + hostname = "clocktown.dobutterfliescry.net"; + user = "root"; + port = 22; + identityFile = "~/.ssh/id_clocktown"; + }; subspace = { hostname = "imbored.dev"; user = "subspace"; From d64357365928ba1d1ecae49ae4501b2716820b26 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 3 Feb 2026 12:24:59 +1000 Subject: [PATCH 105/107] add wl-screenrec, video-trimmer, cmake --- hosts/lolcathost/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 4119d78..997eb05 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -263,8 +263,10 @@ in { wl-clipboard # clipboard for wayland hyprpicker # color picker hyprshot # screenshot utility + wl-screenrec # screen recording utility qbittorrent # torrenting signal-desktop + video-trimmer (callPackage ../sddm-theme-corners.nix {}).sddm-theme-corners # dependencies for my sddm theme: @@ -280,8 +282,6 @@ in { # Systems Emulation qemu # Fellice Bellard's Quick Emulator - # GNU Utils - gnumake # Binaries binutils strace @@ -297,6 +297,8 @@ in { gcc clang clang-tools + gnumake + cmake # Rust cargo From 502e4a82c0caeef4223fd5b14ea0f6412ea25d4a Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 3 Feb 2026 12:25:10 +1000 Subject: [PATCH 106/107] migrate to dobutterfliescry.net --- hosts/hyrule/services/nginx.nix | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/hosts/hyrule/services/nginx.nix b/hosts/hyrule/services/nginx.nix index a923245..945724e 100644 --- a/hosts/hyrule/services/nginx.nix +++ b/hosts/hyrule/services/nginx.nix @@ -44,16 +44,6 @@ enableACME = true; # kTLS = true; # offload TLS to the linux kernel }; - website = - { - default = true; - addSSL = true; # not strictly enforced <3 - root = "/var/www/imbored"; - # extraConfig = '' - # error_page 404 /custom_404.html; - # ''; - } - // std; vault = { @@ -71,18 +61,6 @@ } // std; in { - # XXX: TODO: imbored.dev and dobutterfliescry.net can't - # XXX: TODO: be active at the same time??? why?? - # "imbored.dev" = - # { - # default = true; - # addSSL = true; # not strictly enforced <3 - # root = "/var/www/imbored"; - # # extraConfig = '' - # # error_page 404 /custom_404.html; - # # ''; - # } - # // std; "dobutterfliescry.net" = { default = true; @@ -98,8 +76,7 @@ "vault.imbored.dev" = vault; # Route "forge" subdomain to forgejo # TODO: use `forgejo.settings.server.ENABLE_ACME` instead? - "forge.imbored.dev" = forge; - # "forge.dobutterfliescry.net" = forge; + "forge.dobutterfliescry.net" = forge; }; }; } From e7fdc3af6b9eb9c4dfe158c547c5b3764c2f1258 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Tue, 3 Feb 2026 22:27:23 +1000 Subject: [PATCH 107/107] update dobutterfliescry-net upstream --- flake.lock | 12 ++++++------ flake.nix | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index b10fff6..3cf7a06 100644 --- a/flake.lock +++ b/flake.lock @@ -40,17 +40,17 @@ ] }, "locked": { - "lastModified": 1769832488, - "narHash": "sha256-mYNFYj3Ed7l6MbuFIMd9ahlyNuav5X8q9siKwVkPxUQ=", + "lastModified": 1770121583, + "narHash": "sha256-BI9UgaWtIHqyV8L4Vfh5Vrakax65QOG6m0a28L05YzM=", "ref": "refs/heads/main", - "rev": "efdedb23b8becfdaf7b43b431007fc369bae318d", - "revCount": 77, + "rev": "d511138e76f03990da593d1d0129f58c1ec3f570", + "revCount": 100, "type": "git", - "url": "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net" + "url": "https://forge.dobutterfliescry.net/cry/site" }, "original": { "type": "git", - "url": "https://forge.imbored.dev/emileclarkb/dobutterfliescry.net" + "url": "https://forge.dobutterfliescry.net/cry/site" } }, "flake-compat": { diff --git a/flake.nix b/flake.nix index 85de2d0..b6d5a67 100644 --- a/flake.nix +++ b/flake.nix @@ -19,7 +19,7 @@ grub2-themes.url = "github:vinceliuice/grub2-themes"; dobutterfliescry-net = { - url = "git+https://forge.imbored.dev/emileclarkb/dobutterfliescry.net"; + url = "git+https://forge.dobutterfliescry.net/cry/site"; inputs = { nixpkgs.follows = "nixpkgs"; nixpkgs-unstable.follows = "nixpkgs-unstable";