Compare changes

Choose any two refs to compare.

Changed files
+740 -4323
.direnv
dns
home
hosts
modules
overlays
pkgs
-8
.direnv/bin/nix-direnv-reload
··· 1 - #!/usr/bin/env bash 2 - dir="$(realpath $(dirname ${BASH_SOURCE[0]})/../..)" 3 - _nix_direnv_force_reload=1 direnv exec "$dir" true 4 - direnv reload 5 - # direnv reload updates the mtime of .envrc. Also update the timestamp of the 6 - # profile_rc file to keep track that we actually are up to date. 7 - touch $dir/.direnv/{nix,flake}-profile-*.rc 8 -
-1863
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
··· 1 - unset shellHook 2 - PATH=${PATH:-} 3 - nix_saved_PATH="$PATH" 4 - XDG_DATA_DIRS=${XDG_DATA_DIRS:-} 5 - nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS" 6 - AR='ar' 7 - export AR 8 - AS='as' 9 - export AS 10 - BASH='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash' 11 - CC='gcc' 12 - export CC 13 - CONFIG_SHELL='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash' 14 - export CONFIG_SHELL 15 - CXX='g++' 16 - export CXX 17 - HOSTTYPE='x86_64' 18 - HOST_PATH='/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3/bin:/nix/store/01znf87kiw5xx1dj0f7djrnrbg84ij28-findutils-4.9.0/bin:/nix/store/vq4vmndw555m7ld2bi6pq8kr348qvb6a-diffutils-3.10/bin:/nix/store/rwa7qyds01qzxvq7zq3kgnkrzzpw4s66-gnused-4.9/bin:/nix/store/n062zcsmfl9gfp6vfkcg0asb8jjwmy5i-gnugrep-3.11/bin:/nix/store/4v7m4yx07b3anmbznfhihjc8xiizyna9-gawk-5.2.2/bin:/nix/store/mi3pm67ps7c7k11aqki9182ygzg8j503-gnutar-1.35/bin:/nix/store/5c0ancqnpi0cf1h49mv13w68a950s9z0-gzip-1.13/bin:/nix/store/q5cv7r1sh3s4niyq7vm6h1j74394naxs-bzip2-1.0.8-bin/bin:/nix/store/bh7sbl99ygfvw9w96936nrhw46jmcmqq-gnumake-4.4.1/bin:/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin:/nix/store/mbh9gx43gsc5av019vsdkazbyiic3f0f-patch-2.7.6/bin:/nix/store/3q6fnwcm677l1q60vkhcf9m1gxhv83jm-xz-5.4.4-bin/bin:/nix/store/a5s2dmba16pw8l52f496gw0b7nli7mbn-file-5.45/bin' 19 - export HOST_PATH 20 - IFS=' 21 - ' 22 - IN_NIX_SHELL='impure' 23 - export IN_NIX_SHELL 24 - LD='ld' 25 - export LD 26 - LINENO='76' 27 - MACHTYPE='x86_64-pc-linux-gnu' 28 - NIX_BINTOOLS='/nix/store/qcg3rpl1l103zb1xfsw40wm9j5hzrp7y-binutils-wrapper-2.40' 29 - export NIX_BINTOOLS 30 - NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' 31 - export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu 32 - NIX_BUILD_CORES='4' 33 - export NIX_BUILD_CORES 34 - NIX_CC='/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0' 35 - export NIX_CC 36 - NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' 37 - export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu 38 - NIX_CFLAGS_COMPILE=' -frandom-seed=q6hnwi6rdy -isystem /nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev/include -isystem /nix/store/gdz3j02p6mfzmxs9zsssszwpppigb70g-boehm-gc-8.2.2-dev/include -isystem /nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2/include -isystem /nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev/include -isystem /nix/store/gdz3j02p6mfzmxs9zsssszwpppigb70g-boehm-gc-8.2.2-dev/include -isystem /nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2/include' 39 - export NIX_CFLAGS_COMPILE 40 - NIX_CONFIG='experimental-features = nix-command flakes' 41 - export NIX_CONFIG 42 - NIX_ENFORCE_NO_NATIVE='1' 43 - export NIX_ENFORCE_NO_NATIVE 44 - NIX_HARDENING_ENABLE='fortify fortify3 stackprotector pic strictoverflow format relro bindnow' 45 - export NIX_HARDENING_ENABLE 46 - NIX_LDFLAGS='-rpath /home/anish/usr/helm/outputs/out/lib -L/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2/lib -L/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/lib -L/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2/lib -L/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/lib' 47 - export NIX_LDFLAGS 48 - NIX_NO_SELF_RPATH='1' 49 - NIX_STORE='/nix/store' 50 - export NIX_STORE 51 - NM='nm' 52 - export NM 53 - OBJCOPY='objcopy' 54 - export OBJCOPY 55 - OBJDUMP='objdump' 56 - export OBJDUMP 57 - OLDPWD='' 58 - export OLDPWD 59 - OPTERR='1' 60 - OSTYPE='linux-gnu' 61 - PATH='/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/bin:/nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31/bin:/nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0/bin:/nix/store/p8p72q6anyf0whaf9i75jynzk2z4ml36-agenix-0.13.0/bin:/nix/store/lfx4in7iqbbx5b6b85cndw268ria5512-deploy-rs-unstable-2023-12-20/bin:/nix/store/8nwmr2kmkrl1mnggka7fjibcglk68rc0-dnscontrol-4.6.0/bin:/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0/bin:/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0/bin:/nix/store/f94yr35af3xdiscbj6cp6kafvmn55gv9-gcc-12.3.0/bin:/nix/store/vksrk76p5cfbjxb0n95vdkxy7fl2cbcm-glibc-2.38-27-bin/bin:/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3/bin:/nix/store/qcg3rpl1l103zb1xfsw40wm9j5hzrp7y-binutils-wrapper-2.40/bin:/nix/store/idiaraknw071d20nlqp49s18gbvw4wa0-binutils-2.40/bin:/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3/bin:/nix/store/01znf87kiw5xx1dj0f7djrnrbg84ij28-findutils-4.9.0/bin:/nix/store/vq4vmndw555m7ld2bi6pq8kr348qvb6a-diffutils-3.10/bin:/nix/store/rwa7qyds01qzxvq7zq3kgnkrzzpw4s66-gnused-4.9/bin:/nix/store/n062zcsmfl9gfp6vfkcg0asb8jjwmy5i-gnugrep-3.11/bin:/nix/store/4v7m4yx07b3anmbznfhihjc8xiizyna9-gawk-5.2.2/bin:/nix/store/mi3pm67ps7c7k11aqki9182ygzg8j503-gnutar-1.35/bin:/nix/store/5c0ancqnpi0cf1h49mv13w68a950s9z0-gzip-1.13/bin:/nix/store/q5cv7r1sh3s4niyq7vm6h1j74394naxs-bzip2-1.0.8-bin/bin:/nix/store/bh7sbl99ygfvw9w96936nrhw46jmcmqq-gnumake-4.4.1/bin:/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin:/nix/store/mbh9gx43gsc5av019vsdkazbyiic3f0f-patch-2.7.6/bin:/nix/store/3q6fnwcm677l1q60vkhcf9m1gxhv83jm-xz-5.4.4-bin/bin:/nix/store/a5s2dmba16pw8l52f496gw0b7nli7mbn-file-5.45/bin' 62 - export PATH 63 - PS4='+ ' 64 - RANLIB='ranlib' 65 - export RANLIB 66 - READELF='readelf' 67 - export READELF 68 - SIZE='size' 69 - export SIZE 70 - SOURCE_DATE_EPOCH='315532800' 71 - export SOURCE_DATE_EPOCH 72 - STRINGS='strings' 73 - export STRINGS 74 - STRIP='strip' 75 - export STRIP 76 - XDG_DATA_DIRS='/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2/share:/nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2/share:/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/share:/nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31/share:/nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0/share:/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0/share' 77 - export XDG_DATA_DIRS 78 - __structuredAttrs='' 79 - export __structuredAttrs 80 - buildInputs='' 81 - export buildInputs 82 - buildPhase='{ echo "------------------------------------------------------------"; 83 - echo " WARNING: the existence of this path is not guaranteed."; 84 - echo " It is an internal implementation detail for pkgs.mkShell."; 85 - echo "------------------------------------------------------------"; 86 - echo; 87 - # Record all build inputs as runtime dependencies 88 - export; 89 - } >> "$out" 90 - ' 91 - export buildPhase 92 - builder='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash' 93 - export builder 94 - cmakeFlags='' 95 - export cmakeFlags 96 - configureFlags='' 97 - export configureFlags 98 - defaultBuildInputs='' 99 - defaultNativeBuildInputs='/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0 /nix/store/v5qyd49a256y44pz75qnsp9741mg336k-update-autotools-gnu-config-scripts-hook /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh /nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh /nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0' 100 - depsBuildBuild='' 101 - export depsBuildBuild 102 - depsBuildBuildPropagated='' 103 - export depsBuildBuildPropagated 104 - depsBuildTarget='' 105 - export depsBuildTarget 106 - depsBuildTargetPropagated='' 107 - export depsBuildTargetPropagated 108 - depsHostHost='' 109 - export depsHostHost 110 - depsHostHostPropagated='' 111 - export depsHostHostPropagated 112 - depsTargetTarget='' 113 - export depsTargetTarget 114 - depsTargetTargetPropagated='' 115 - export depsTargetTargetPropagated 116 - doCheck='' 117 - export doCheck 118 - doInstallCheck='' 119 - export doInstallCheck 120 - dontAddDisableDepTrack='1' 121 - export dontAddDisableDepTrack 122 - declare -a envBuildBuildHooks=() 123 - declare -a envBuildHostHooks=() 124 - declare -a envBuildTargetHooks=() 125 - declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) 126 - declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) 127 - declare -a envTargetTargetHooks=() 128 - declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) 129 - guess='4' 130 - initialPath='/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3 /nix/store/01znf87kiw5xx1dj0f7djrnrbg84ij28-findutils-4.9.0 /nix/store/vq4vmndw555m7ld2bi6pq8kr348qvb6a-diffutils-3.10 /nix/store/rwa7qyds01qzxvq7zq3kgnkrzzpw4s66-gnused-4.9 /nix/store/n062zcsmfl9gfp6vfkcg0asb8jjwmy5i-gnugrep-3.11 /nix/store/4v7m4yx07b3anmbznfhihjc8xiizyna9-gawk-5.2.2 /nix/store/mi3pm67ps7c7k11aqki9182ygzg8j503-gnutar-1.35 /nix/store/5c0ancqnpi0cf1h49mv13w68a950s9z0-gzip-1.13 /nix/store/q5cv7r1sh3s4niyq7vm6h1j74394naxs-bzip2-1.0.8-bin /nix/store/bh7sbl99ygfvw9w96936nrhw46jmcmqq-gnumake-4.4.1 /nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15 /nix/store/mbh9gx43gsc5av019vsdkazbyiic3f0f-patch-2.7.6 /nix/store/3q6fnwcm677l1q60vkhcf9m1gxhv83jm-xz-5.4.4-bin /nix/store/a5s2dmba16pw8l52f496gw0b7nli7mbn-file-5.45' 131 - mesonFlags='' 132 - export mesonFlags 133 - name='nix-shell-env' 134 - export name 135 - nativeBuildInputs='/nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev /nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31 /nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0 /nix/store/p8p72q6anyf0whaf9i75jynzk2z4ml36-agenix-0.13.0 /nix/store/lfx4in7iqbbx5b6b85cndw268ria5512-deploy-rs-unstable-2023-12-20 /nix/store/8nwmr2kmkrl1mnggka7fjibcglk68rc0-dnscontrol-4.6.0' 136 - export nativeBuildInputs 137 - out='/home/anish/usr/helm/outputs/out' 138 - export out 139 - outputBin='out' 140 - outputDev='out' 141 - outputDevdoc='REMOVE' 142 - outputDevman='out' 143 - outputDoc='out' 144 - outputInclude='out' 145 - outputInfo='out' 146 - outputLib='out' 147 - outputMan='out' 148 - outputs='out' 149 - export outputs 150 - patches='' 151 - export patches 152 - phases='buildPhase' 153 - export phases 154 - pkg='/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0' 155 - declare -a pkgsBuildBuild=() 156 - declare -a pkgsBuildHost=('/nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev' '/nix/store/gdz3j02p6mfzmxs9zsssszwpppigb70g-boehm-gc-8.2.2-dev' '/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2' '/nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2' '/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1' '/nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31' '/nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0' '/nix/store/p8p72q6anyf0whaf9i75jynzk2z4ml36-agenix-0.13.0' '/nix/store/lfx4in7iqbbx5b6b85cndw268ria5512-deploy-rs-unstable-2023-12-20' '/nix/store/8nwmr2kmkrl1mnggka7fjibcglk68rc0-dnscontrol-4.6.0' '/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0' '/nix/store/v5qyd49a256y44pz75qnsp9741mg336k-update-autotools-gnu-config-scripts-hook' '/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh' '/nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh' '/nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh' '/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0' '/nix/store/qcg3rpl1l103zb1xfsw40wm9j5hzrp7y-binutils-wrapper-2.40' ) 157 - declare -a pkgsBuildTarget=() 158 - declare -a pkgsHostHost=() 159 - declare -a pkgsHostTarget=() 160 - declare -a pkgsTargetTarget=() 161 - declare -a postFixupHooks=('_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' ) 162 - declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) 163 - declare -a preConfigureHooks=('_multioutConfig' ) 164 - preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' 165 - declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) 166 - preferLocalBuild='1' 167 - export preferLocalBuild 168 - prefix='/home/anish/usr/helm/outputs/out' 169 - declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) 170 - propagatedBuildInputs='' 171 - export propagatedBuildInputs 172 - declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' ) 173 - propagatedNativeBuildInputs='' 174 - export propagatedNativeBuildInputs 175 - declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) 176 - shell='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash' 177 - export shell 178 - shellHook='' 179 - export shellHook 180 - stdenv='/nix/store/kv5wkk7xgc8paw9azshzlmxraffqcg0i-stdenv-linux' 181 - export stdenv 182 - strictDeps='' 183 - export strictDeps 184 - system='x86_64-linux' 185 - export system 186 - declare -a unpackCmdHooks=('_defaultUnpack' ) 187 - _accumFlagsArray () 188 - { 189 - 190 - local name; 191 - if [ -n "$__structuredAttrs" ]; then 192 - for name in "$@"; 193 - do 194 - local -n nameref="$name"; 195 - flagsArray+=(${nameref+"${nameref[@]}"}); 196 - done; 197 - else 198 - for name in "$@"; 199 - do 200 - local -n nameref="$name"; 201 - case "$name" in 202 - *Array) 203 - flagsArray+=(${nameref+"${nameref[@]}"}) 204 - ;; 205 - *) 206 - flagsArray+=(${nameref-}) 207 - ;; 208 - esac; 209 - done; 210 - fi 211 - } 212 - _activatePkgs () 213 - { 214 - 215 - local hostOffset targetOffset; 216 - local pkg; 217 - for hostOffset in "${allPlatOffsets[@]}"; 218 - do 219 - local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"; 220 - for targetOffset in "${allPlatOffsets[@]}"; 221 - do 222 - (( hostOffset <= targetOffset )) || continue; 223 - local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"; 224 - local pkgsSlice="${!pkgsRef}[@]"; 225 - for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; 226 - do 227 - activatePackage "$pkg" "$hostOffset" "$targetOffset"; 228 - done; 229 - done; 230 - done 231 - } 232 - _addRpathPrefix () 233 - { 234 - 235 - if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then 236 - export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}"; 237 - fi 238 - } 239 - _addToEnv () 240 - { 241 - 242 - local depHostOffset depTargetOffset; 243 - local pkg; 244 - for depHostOffset in "${allPlatOffsets[@]}"; 245 - do 246 - local hookVar="${pkgHookVarVars[depHostOffset + 1]}"; 247 - local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"; 248 - for depTargetOffset in "${allPlatOffsets[@]}"; 249 - do 250 - (( depHostOffset <= depTargetOffset )) || continue; 251 - local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"; 252 - if [[ -z "${strictDeps-}" ]]; then 253 - local visitedPkgs=""; 254 - for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}"; 255 - do 256 - if [[ "$visitedPkgs" = *"$pkg"* ]]; then 257 - continue; 258 - fi; 259 - runHook "${!hookRef}" "$pkg"; 260 - visitedPkgs+=" $pkg"; 261 - done; 262 - else 263 - local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]"; 264 - local pkgsSlice="${!pkgsRef}[@]"; 265 - for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; 266 - do 267 - runHook "${!hookRef}" "$pkg"; 268 - done; 269 - fi; 270 - done; 271 - done 272 - } 273 - _allFlags () 274 - { 275 - 276 - export system pname name version; 277 - for varName in $(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }'); 278 - do 279 - if (( "${NIX_DEBUG:-0}" >= 1 )); then 280 - printf "@%s@ -> %q\n" "${varName}" "${!varName}" 1>&2; 281 - fi; 282 - args+=("--subst-var" "$varName"); 283 - done 284 - } 285 - _assignFirst () 286 - { 287 - 288 - local varName="$1"; 289 - local _var; 290 - local REMOVE=REMOVE; 291 - shift; 292 - for _var in "$@"; 293 - do 294 - if [ -n "${!_var-}" ]; then 295 - eval "${varName}"="${_var}"; 296 - return; 297 - fi; 298 - done; 299 - echo; 300 - echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}."; 301 - echo " The following variables were all unset or empty:"; 302 - echo " $*"; 303 - if [ -z "${out:-}" ]; then 304 - echo ' If you do not want an "out" output in your derivation, make sure to define'; 305 - echo ' the other specific required outputs. This can be achieved by picking one'; 306 - echo " of the above as an output."; 307 - echo ' You do not have to remove "out" if you want to have a different default'; 308 - echo ' output, because the first output is taken as a default.'; 309 - echo; 310 - fi; 311 - return 1 312 - } 313 - _callImplicitHook () 314 - { 315 - 316 - local def="$1"; 317 - local hookName="$2"; 318 - if declare -F "$hookName" > /dev/null; then 319 - "$hookName"; 320 - else 321 - if type -p "$hookName" > /dev/null; then 322 - source "$hookName"; 323 - else 324 - if [ -n "${!hookName:-}" ]; then 325 - eval "${!hookName}"; 326 - else 327 - return "$def"; 328 - fi; 329 - fi; 330 - fi 331 - } 332 - _defaultUnpack () 333 - { 334 - 335 - local fn="$1"; 336 - local destination; 337 - if [ -d "$fn" ]; then 338 - destination="$(stripHash "$fn")"; 339 - if [ -e "$destination" ]; then 340 - echo "Cannot copy $fn to $destination: destination already exists!"; 341 - echo "Did you specify two \"srcs\" with the same \"name\"?"; 342 - return 1; 343 - fi; 344 - cp -pr --reflink=auto -- "$fn" "$destination"; 345 - else 346 - case "$fn" in 347 - *.tar.xz | *.tar.lzma | *.txz) 348 - xz -d < "$fn" | tar xf - --warning=no-timestamp 349 - ;; 350 - *.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz) 351 - tar xf "$fn" --warning=no-timestamp 352 - ;; 353 - *) 354 - return 1 355 - ;; 356 - esac; 357 - fi 358 - } 359 - _doStrip () 360 - { 361 - 362 - local -ra flags=(dontStripHost dontStripTarget); 363 - local -ra debugDirs=(stripDebugList stripDebugListTarget); 364 - local -ra allDirs=(stripAllList stripAllListTarget); 365 - local -ra stripCmds=(STRIP STRIP_FOR_TARGET); 366 - local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET); 367 - stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin}; 368 - stripDebugListTarget=${stripDebugListTarget[*]:-}; 369 - stripAllList=${stripAllList[*]:-}; 370 - stripAllListTarget=${stripAllListTarget[*]:-}; 371 - local i; 372 - for i in ${!stripCmds[@]}; 373 - do 374 - local -n flag="${flags[$i]}"; 375 - local -n debugDirList="${debugDirs[$i]}"; 376 - local -n allDirList="${allDirs[$i]}"; 377 - local -n stripCmd="${stripCmds[$i]}"; 378 - local -n ranlibCmd="${ranlibCmds[$i]}"; 379 - if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then 380 - continue; 381 - fi; 382 - stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}"; 383 - stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}"; 384 - done 385 - } 386 - _eval () 387 - { 388 - 389 - if declare -F "$1" > /dev/null 2>&1; then 390 - "$@"; 391 - else 392 - eval "$1"; 393 - fi 394 - } 395 - _makeSymlinksRelative () 396 - { 397 - 398 - local symlinkTarget; 399 - if [ "${dontRewriteSymlinks-}" ] || [ ! -e "$prefix" ]; then 400 - return; 401 - fi; 402 - while IFS= read -r -d '' f; do 403 - symlinkTarget=$(readlink "$f"); 404 - if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then 405 - continue; 406 - fi; 407 - if [ ! -e "$symlinkTarget" ]; then 408 - echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)"; 409 - fi; 410 - echo "rewriting symlink $f to be relative to $prefix"; 411 - ln -snrf "$symlinkTarget" "$f"; 412 - done < <(find $prefix -type l -print0) 413 - } 414 - _makeSymlinksRelativeInAllOutputs () 415 - { 416 - 417 - local output; 418 - for output in $(getAllOutputNames); 419 - do 420 - prefix="${!output}" _makeSymlinksRelative; 421 - done 422 - } 423 - _moveLib64 () 424 - { 425 - 426 - if [ "${dontMoveLib64-}" = 1 ]; then 427 - return; 428 - fi; 429 - if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then 430 - return; 431 - fi; 432 - echo "moving $prefix/lib64/* to $prefix/lib"; 433 - mkdir -p $prefix/lib; 434 - shopt -s dotglob; 435 - for i in $prefix/lib64/*; 436 - do 437 - mv --no-clobber "$i" $prefix/lib; 438 - done; 439 - shopt -u dotglob; 440 - rmdir $prefix/lib64; 441 - ln -s lib $prefix/lib64 442 - } 443 - _moveSbin () 444 - { 445 - 446 - if [ "${dontMoveSbin-}" = 1 ]; then 447 - return; 448 - fi; 449 - if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then 450 - return; 451 - fi; 452 - echo "moving $prefix/sbin/* to $prefix/bin"; 453 - mkdir -p $prefix/bin; 454 - shopt -s dotglob; 455 - for i in $prefix/sbin/*; 456 - do 457 - mv "$i" $prefix/bin; 458 - done; 459 - shopt -u dotglob; 460 - rmdir $prefix/sbin; 461 - ln -s bin $prefix/sbin 462 - } 463 - _moveSystemdUserUnits () 464 - { 465 - 466 - if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then 467 - return; 468 - fi; 469 - if [ ! -e "${prefix:?}/lib/systemd/user" ]; then 470 - return; 471 - fi; 472 - local source="$prefix/lib/systemd/user"; 473 - local target="$prefix/share/systemd/user"; 474 - echo "moving $source/* to $target"; 475 - mkdir -p "$target"; 476 - ( shopt -s dotglob; 477 - for i in "$source"/*; 478 - do 479 - mv "$i" "$target"; 480 - done ); 481 - rmdir "$source"; 482 - ln -s "$target" "$source" 483 - } 484 - _moveToShare () 485 - { 486 - 487 - if [ -n "$__structuredAttrs" ]; then 488 - if [ -z "${forceShare-}" ]; then 489 - forceShare=(man doc info); 490 - fi; 491 - else 492 - forceShare=(${forceShare:-man doc info}); 493 - fi; 494 - if [[ -z "$out" ]]; then 495 - return; 496 - fi; 497 - for d in "${forceShare[@]}"; 498 - do 499 - if [ -d "$out/$d" ]; then 500 - if [ -d "$out/share/$d" ]; then 501 - echo "both $d/ and share/$d/ exist!"; 502 - else 503 - echo "moving $out/$d to $out/share/$d"; 504 - mkdir -p $out/share; 505 - mv $out/$d $out/share/; 506 - fi; 507 - fi; 508 - done 509 - } 510 - _multioutConfig () 511 - { 512 - 513 - if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then 514 - return; 515 - fi; 516 - if [ -z "${shareDocName:-}" ]; then 517 - local confScript="${configureScript:-}"; 518 - if [ -z "$confScript" ] && [ -x ./configure ]; then 519 - confScript=./configure; 520 - fi; 521 - if [ -f "$confScript" ]; then 522 - local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")"; 523 - fi; 524 - if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then 525 - shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')"; 526 - fi; 527 - fi; 528 - prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --oldincludedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale; 529 - prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal 530 - } 531 - _multioutDevs () 532 - { 533 - 534 - if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then 535 - return; 536 - fi; 537 - moveToOutput include "${!outputInclude}"; 538 - moveToOutput lib/pkgconfig "${!outputDev}"; 539 - moveToOutput share/pkgconfig "${!outputDev}"; 540 - moveToOutput lib/cmake "${!outputDev}"; 541 - moveToOutput share/aclocal "${!outputDev}"; 542 - for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc; 543 - do 544 - echo "Patching '$f' includedir to output ${!outputInclude}"; 545 - sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f"; 546 - done 547 - } 548 - _multioutDocs () 549 - { 550 - 551 - local REMOVE=REMOVE; 552 - moveToOutput share/info "${!outputInfo}"; 553 - moveToOutput share/doc "${!outputDoc}"; 554 - moveToOutput share/gtk-doc "${!outputDevdoc}"; 555 - moveToOutput share/devhelp/books "${!outputDevdoc}"; 556 - moveToOutput share/man "${!outputMan}"; 557 - moveToOutput share/man/man3 "${!outputDevman}" 558 - } 559 - _multioutPropagateDev () 560 - { 561 - 562 - if [ "$(getAllOutputNames)" = "out" ]; then 563 - return; 564 - fi; 565 - local outputFirst; 566 - for outputFirst in $(getAllOutputNames); 567 - do 568 - break; 569 - done; 570 - local propagaterOutput="$outputDev"; 571 - if [ -z "$propagaterOutput" ]; then 572 - propagaterOutput="$outputFirst"; 573 - fi; 574 - if [ -z "${propagatedBuildOutputs+1}" ]; then 575 - local po_dirty="$outputBin $outputInclude $outputLib"; 576 - set +o pipefail; 577 - propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `; 578 - set -o pipefail; 579 - fi; 580 - if [ -z "$propagatedBuildOutputs" ]; then 581 - return; 582 - fi; 583 - mkdir -p "${!propagaterOutput}"/nix-support; 584 - for output in $propagatedBuildOutputs; 585 - do 586 - echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs; 587 - done 588 - } 589 - _overrideFirst () 590 - { 591 - 592 - if [ -z "${!1-}" ]; then 593 - _assignFirst "$@"; 594 - fi 595 - } 596 - _pruneLibtoolFiles () 597 - { 598 - 599 - if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then 600 - return; 601 - fi; 602 - find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \; 603 - } 604 - _updateSourceDateEpochFromSourceRoot () 605 - { 606 - 607 - if [ -n "$sourceRoot" ]; then 608 - updateSourceDateEpoch "$sourceRoot"; 609 - fi 610 - } 611 - activatePackage () 612 - { 613 - 614 - local pkg="$1"; 615 - local -r hostOffset="$2"; 616 - local -r targetOffset="$3"; 617 - (( hostOffset <= targetOffset )) || exit 1; 618 - if [ -f "$pkg" ]; then 619 - source "$pkg"; 620 - fi; 621 - if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then 622 - addToSearchPath _PATH "$pkg/bin"; 623 - fi; 624 - if (( hostOffset <= -1 )); then 625 - addToSearchPath _XDG_DATA_DIRS "$pkg/share"; 626 - fi; 627 - if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then 628 - addToSearchPath _HOST_PATH "$pkg/bin"; 629 - fi; 630 - if [[ -f "$pkg/nix-support/setup-hook" ]]; then 631 - source "$pkg/nix-support/setup-hook"; 632 - fi 633 - } 634 - addEnvHooks () 635 - { 636 - 637 - local depHostOffset="$1"; 638 - shift; 639 - local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]"; 640 - local pkgHookVar; 641 - for pkgHookVar in "${!pkgHookVarsSlice}"; 642 - do 643 - eval "${pkgHookVar}s"'+=("$@")'; 644 - done 645 - } 646 - addToSearchPath () 647 - { 648 - 649 - addToSearchPathWithCustomDelimiter ":" "$@" 650 - } 651 - addToSearchPathWithCustomDelimiter () 652 - { 653 - 654 - local delimiter="$1"; 655 - local varName="$2"; 656 - local dir="$3"; 657 - if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then 658 - export "${varName}=${!varName:+${!varName}${delimiter}}${dir}"; 659 - fi 660 - } 661 - appendToVar () 662 - { 663 - 664 - local -n nameref="$1"; 665 - local useArray type; 666 - if [ -n "$__structuredAttrs" ]; then 667 - useArray=true; 668 - else 669 - useArray=false; 670 - fi; 671 - if declare -p "$1" 2> /dev/null | grep -q '^'; then 672 - type="$(declare -p "$1")"; 673 - if [[ "$type" =~ "declare -A" ]]; then 674 - echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2; 675 - return 1; 676 - else 677 - if [[ "$type" =~ "declare -a" ]]; then 678 - useArray=true; 679 - else 680 - useArray=false; 681 - fi; 682 - fi; 683 - fi; 684 - shift; 685 - if $useArray; then 686 - nameref=(${nameref+"${nameref[@]}"} "$@"); 687 - else 688 - nameref="${nameref-} $*"; 689 - fi 690 - } 691 - auditTmpdir () 692 - { 693 - 694 - local dir="$1"; 695 - [ -e "$dir" ] || return 0; 696 - echo "checking for references to $TMPDIR/ in $dir..."; 697 - local i; 698 - find "$dir" -type f -print0 | while IFS= read -r -d '' i; do 699 - if [[ "$i" =~ .build-id ]]; then 700 - continue; 701 - fi; 702 - if isELF "$i"; then 703 - if { 704 - printf :; 705 - patchelf --print-rpath "$i" 706 - } | grep -q -F ":$TMPDIR/"; then 707 - echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/"; 708 - exit 1; 709 - fi; 710 - fi; 711 - if isScript "$i"; then 712 - if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then 713 - if grep -q -F "$TMPDIR/" "$i"; then 714 - echo "wrapper script $i contains a forbidden reference to $TMPDIR/"; 715 - exit 1; 716 - fi; 717 - fi; 718 - fi; 719 - done 720 - } 721 - bintoolsWrapper_addLDVars () 722 - { 723 - 724 - local role_post; 725 - getHostRoleEnvHook; 726 - if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then 727 - export NIX_LDFLAGS${role_post}+=" -L$1/lib64"; 728 - fi; 729 - if [[ -d "$1/lib" ]]; then 730 - local -a glob=($1/lib/lib*); 731 - if [ "${#glob[*]}" -gt 0 ]; then 732 - export NIX_LDFLAGS${role_post}+=" -L$1/lib"; 733 - fi; 734 - fi 735 - } 736 - buildPhase () 737 - { 738 - 739 - runHook preBuild; 740 - if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then 741 - echo "no Makefile or custom buildPhase, doing nothing"; 742 - else 743 - foundMakefile=1; 744 - local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); 745 - _accumFlagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray; 746 - echoCmd 'build flags' "${flagsArray[@]}"; 747 - make ${makefile:+-f $makefile} "${flagsArray[@]}"; 748 - unset flagsArray; 749 - fi; 750 - runHook postBuild 751 - } 752 - ccWrapper_addCVars () 753 - { 754 - 755 - local role_post; 756 - getHostRoleEnvHook; 757 - if [ -d "$1/include" ]; then 758 - export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include"; 759 - fi; 760 - if [ -d "$1/Library/Frameworks" ]; then 761 - export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks"; 762 - fi 763 - } 764 - checkPhase () 765 - { 766 - 767 - runHook preCheck; 768 - if [[ -z "${foundMakefile:-}" ]]; then 769 - echo "no Makefile or custom checkPhase, doing nothing"; 770 - runHook postCheck; 771 - return; 772 - fi; 773 - if [[ -z "${checkTarget:-}" ]]; then 774 - if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then 775 - checkTarget=check; 776 - else 777 - if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then 778 - checkTarget=test; 779 - fi; 780 - fi; 781 - fi; 782 - if [[ -z "${checkTarget:-}" ]]; then 783 - echo "no check/test target in ${makefile:-Makefile}, doing nothing"; 784 - else 785 - local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); 786 - _accumFlagsArray makeFlags makeFlagsArray; 787 - if [ -n "$__structuredAttrs" ]; then 788 - flagsArray+=("${checkFlags[@]:-VERBOSE=y}"); 789 - else 790 - flagsArray+=(${checkFlags:-VERBOSE=y}); 791 - fi; 792 - _accumFlagsArray checkFlagsArray; 793 - flagsArray+=(${checkTarget}); 794 - echoCmd 'check flags' "${flagsArray[@]}"; 795 - make ${makefile:+-f $makefile} "${flagsArray[@]}"; 796 - unset flagsArray; 797 - fi; 798 - runHook postCheck 799 - } 800 - compressManPages () 801 - { 802 - 803 - local dir="$1"; 804 - if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then 805 - return; 806 - fi; 807 - echo "gzipping man pages under $dir/share/man/"; 808 - find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do 809 - if gzip -c -n "$f" > "$f".gz; then 810 - rm "$f"; 811 - else 812 - rm "$f".gz; 813 - fi; 814 - done; 815 - find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do 816 - local target; 817 - target="$(readlink -f "$f")"; 818 - if [ -f "$target".gz ]; then 819 - ln -sf "$target".gz "$f".gz && rm "$f"; 820 - fi; 821 - done 822 - } 823 - configurePhase () 824 - { 825 - 826 - runHook preConfigure; 827 - : "${configureScript=}"; 828 - if [[ -z "$configureScript" && -x ./configure ]]; then 829 - configureScript=./configure; 830 - fi; 831 - if [ -z "${dontFixLibtool:-}" ]; then 832 - export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}"; 833 - local i; 834 - find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do 835 - echo "fixing libtool script $i"; 836 - fixLibtool "$i"; 837 - done; 838 - CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX); 839 - find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;; 840 - rm -f "$CONFIGURE_MTIME_REFERENCE"; 841 - fi; 842 - if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then 843 - prependToVar configureFlags "${prefixKey:---prefix=}$prefix"; 844 - fi; 845 - if [[ -f "$configureScript" ]]; then 846 - if [ -z "${dontAddDisableDepTrack:-}" ]; then 847 - if grep -q dependency-tracking "$configureScript"; then 848 - prependToVar configureFlags --disable-dependency-tracking; 849 - fi; 850 - fi; 851 - if [ -z "${dontDisableStatic:-}" ]; then 852 - if grep -q enable-static "$configureScript"; then 853 - prependToVar configureFlags --disable-static; 854 - fi; 855 - fi; 856 - fi; 857 - if [ -n "$configureScript" ]; then 858 - local -a flagsArray; 859 - _accumFlagsArray configureFlags configureFlagsArray; 860 - echoCmd 'configure flags' "${flagsArray[@]}"; 861 - $configureScript "${flagsArray[@]}"; 862 - unset flagsArray; 863 - else 864 - echo "no configure script, doing nothing"; 865 - fi; 866 - runHook postConfigure 867 - } 868 - consumeEntire () 869 - { 870 - 871 - if IFS='' read -r -d '' "$1"; then 872 - echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2; 873 - return 1; 874 - fi 875 - } 876 - distPhase () 877 - { 878 - 879 - runHook preDist; 880 - local flagsArray=(); 881 - _accumFlagsArray distFlags distFlagsArray; 882 - flagsArray+=(${distTarget:-dist}); 883 - echo 'dist flags: %q' "${flagsArray[@]}"; 884 - make ${makefile:+-f $makefile} "${flagsArray[@]}"; 885 - if [ "${dontCopyDist:-0}" != 1 ]; then 886 - mkdir -p "$out/tarballs"; 887 - cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs"; 888 - fi; 889 - runHook postDist 890 - } 891 - dumpVars () 892 - { 893 - 894 - if [ "${noDumpEnvVars:-0}" != 1 ]; then 895 - export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars" || true; 896 - fi 897 - } 898 - echoCmd () 899 - { 900 - 901 - printf "%s:" "$1"; 902 - shift; 903 - printf ' %q' "$@"; 904 - echo 905 - } 906 - exitHandler () 907 - { 908 - 909 - exitCode="$?"; 910 - set +e; 911 - if [ -n "${showBuildStats:-}" ]; then 912 - read -r -d '' -a buildTimes < <(times); 913 - echo "build times:"; 914 - echo "user time for the shell ${buildTimes[0]}"; 915 - echo "system time for the shell ${buildTimes[1]}"; 916 - echo "user time for all child processes ${buildTimes[2]}"; 917 - echo "system time for all child processes ${buildTimes[3]}"; 918 - fi; 919 - if (( "$exitCode" != 0 )); then 920 - runHook failureHook; 921 - if [ -n "${succeedOnFailure:-}" ]; then 922 - echo "build failed with exit code $exitCode (ignored)"; 923 - mkdir -p "$out/nix-support"; 924 - printf "%s" "$exitCode" > "$out/nix-support/failed"; 925 - exit 0; 926 - fi; 927 - else 928 - runHook exitHook; 929 - fi; 930 - return "$exitCode" 931 - } 932 - findInputs () 933 - { 934 - 935 - local -r pkg="$1"; 936 - local -r hostOffset="$2"; 937 - local -r targetOffset="$3"; 938 - (( hostOffset <= targetOffset )) || exit 1; 939 - local varVar="${pkgAccumVarVars[hostOffset + 1]}"; 940 - local varRef="$varVar[$((targetOffset - hostOffset))]"; 941 - local var="${!varRef}"; 942 - unset -v varVar varRef; 943 - local varSlice="$var[*]"; 944 - case "${!varSlice-}" in 945 - *" $pkg "*) 946 - return 0 947 - ;; 948 - esac; 949 - unset -v varSlice; 950 - eval "$var"'+=("$pkg")'; 951 - if ! [ -e "$pkg" ]; then 952 - echo "build input $pkg does not exist" 1>&2; 953 - exit 1; 954 - fi; 955 - function mapOffset () 956 - { 957 - local -r inputOffset="$1"; 958 - local -n outputOffset="$2"; 959 - if (( inputOffset <= 0 )); then 960 - outputOffset=$((inputOffset + hostOffset)); 961 - else 962 - outputOffset=$((inputOffset - 1 + targetOffset)); 963 - fi 964 - }; 965 - local relHostOffset; 966 - for relHostOffset in "${allPlatOffsets[@]}"; 967 - do 968 - local files="${propagatedDepFilesVars[relHostOffset + 1]}"; 969 - local hostOffsetNext; 970 - mapOffset "$relHostOffset" hostOffsetNext; 971 - (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; 972 - local relTargetOffset; 973 - for relTargetOffset in "${allPlatOffsets[@]}"; 974 - do 975 - (( "$relHostOffset" <= "$relTargetOffset" )) || continue; 976 - local fileRef="${files}[$relTargetOffset - $relHostOffset]"; 977 - local file="${!fileRef}"; 978 - unset -v fileRef; 979 - local targetOffsetNext; 980 - mapOffset "$relTargetOffset" targetOffsetNext; 981 - (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue; 982 - [[ -f "$pkg/nix-support/$file" ]] || continue; 983 - local pkgNext; 984 - read -r -d '' pkgNext < "$pkg/nix-support/$file" || true; 985 - for pkgNext in $pkgNext; 986 - do 987 - findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"; 988 - done; 989 - done; 990 - done 991 - } 992 - fixLibtool () 993 - { 994 - 995 - local search_path; 996 - for flag in $NIX_LDFLAGS; 997 - do 998 - case $flag in 999 - -L*) 1000 - search_path+=" ${flag#-L}" 1001 - ;; 1002 - esac; 1003 - done; 1004 - sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^' 1005 - } 1006 - fixupPhase () 1007 - { 1008 - 1009 - local output; 1010 - for output in $(getAllOutputNames); 1011 - do 1012 - if [ -e "${!output}" ]; then 1013 - chmod -R u+w "${!output}"; 1014 - fi; 1015 - done; 1016 - runHook preFixup; 1017 - local output; 1018 - for output in $(getAllOutputNames); 1019 - do 1020 - prefix="${!output}" runHook fixupOutput; 1021 - done; 1022 - recordPropagatedDependencies; 1023 - if [ -n "${setupHook:-}" ]; then 1024 - mkdir -p "${!outputDev}/nix-support"; 1025 - substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook"; 1026 - fi; 1027 - if [ -n "${setupHooks:-}" ]; then 1028 - mkdir -p "${!outputDev}/nix-support"; 1029 - local hook; 1030 - for hook in ${setupHooks[@]}; 1031 - do 1032 - local content; 1033 - consumeEntire content < "$hook"; 1034 - substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook"; 1035 - unset -v content; 1036 - done; 1037 - unset -v hook; 1038 - fi; 1039 - if [ -n "${propagatedUserEnvPkgs:-}" ]; then 1040 - mkdir -p "${!outputBin}/nix-support"; 1041 - printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages"; 1042 - fi; 1043 - runHook postFixup 1044 - } 1045 - genericBuild () 1046 - { 1047 - 1048 - export GZIP_NO_TIMESTAMPS=1; 1049 - if [ -f "${buildCommandPath:-}" ]; then 1050 - source "$buildCommandPath"; 1051 - return; 1052 - fi; 1053 - if [ -n "${buildCommand:-}" ]; then 1054 - eval "$buildCommand"; 1055 - return; 1056 - fi; 1057 - if [ -z "${phases[*]:-}" ]; then 1058 - phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}"; 1059 - fi; 1060 - for curPhase in ${phases[*]}; 1061 - do 1062 - runPhase "$curPhase"; 1063 - done 1064 - } 1065 - getAllOutputNames () 1066 - { 1067 - 1068 - if [ -n "$__structuredAttrs" ]; then 1069 - echo "${!outputs[*]}"; 1070 - else 1071 - echo "$outputs"; 1072 - fi 1073 - } 1074 - getHostRole () 1075 - { 1076 - 1077 - getRole "$hostOffset" 1078 - } 1079 - getHostRoleEnvHook () 1080 - { 1081 - 1082 - getRole "$depHostOffset" 1083 - } 1084 - getRole () 1085 - { 1086 - 1087 - case $1 in 1088 - -1) 1089 - role_post='_FOR_BUILD' 1090 - ;; 1091 - 0) 1092 - role_post='' 1093 - ;; 1094 - 1) 1095 - role_post='_FOR_TARGET' 1096 - ;; 1097 - *) 1098 - echo "binutils-wrapper-2.40: used as improper sort of dependency" 1>&2; 1099 - return 1 1100 - ;; 1101 - esac 1102 - } 1103 - getTargetRole () 1104 - { 1105 - 1106 - getRole "$targetOffset" 1107 - } 1108 - getTargetRoleEnvHook () 1109 - { 1110 - 1111 - getRole "$depTargetOffset" 1112 - } 1113 - getTargetRoleWrapper () 1114 - { 1115 - 1116 - case $targetOffset in 1117 - -1) 1118 - export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1 1119 - ;; 1120 - 0) 1121 - export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1 1122 - ;; 1123 - 1) 1124 - export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1 1125 - ;; 1126 - *) 1127 - echo "binutils-wrapper-2.40: used as improper sort of dependency" 1>&2; 1128 - return 1 1129 - ;; 1130 - esac 1131 - } 1132 - installCheckPhase () 1133 - { 1134 - 1135 - runHook preInstallCheck; 1136 - if [[ -z "${foundMakefile:-}" ]]; then 1137 - echo "no Makefile or custom installCheckPhase, doing nothing"; 1138 - else 1139 - if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then 1140 - echo "no installcheck target in ${makefile:-Makefile}, doing nothing"; 1141 - else 1142 - local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); 1143 - _accumFlagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray; 1144 - flagsArray+=(${installCheckTarget:-installcheck}); 1145 - echoCmd 'installcheck flags' "${flagsArray[@]}"; 1146 - make ${makefile:+-f $makefile} "${flagsArray[@]}"; 1147 - unset flagsArray; 1148 - fi; 1149 - fi; 1150 - runHook postInstallCheck 1151 - } 1152 - installPhase () 1153 - { 1154 - 1155 - runHook preInstall; 1156 - if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then 1157 - echo "no Makefile or custom installPhase, doing nothing"; 1158 - runHook postInstall; 1159 - return; 1160 - else 1161 - foundMakefile=1; 1162 - fi; 1163 - if [ -n "$prefix" ]; then 1164 - mkdir -p "$prefix"; 1165 - fi; 1166 - local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL=$SHELL); 1167 - _accumFlagsArray makeFlags makeFlagsArray installFlags installFlagsArray; 1168 - if [ -n "$__structuredAttrs" ]; then 1169 - flagsArray+=("${installTargets[@]:-install}"); 1170 - else 1171 - flagsArray+=(${installTargets:-install}); 1172 - fi; 1173 - echoCmd 'install flags' "${flagsArray[@]}"; 1174 - make ${makefile:+-f $makefile} "${flagsArray[@]}"; 1175 - unset flagsArray; 1176 - runHook postInstall 1177 - } 1178 - isELF () 1179 - { 1180 - 1181 - local fn="$1"; 1182 - local fd; 1183 - local magic; 1184 - exec {fd}< "$fn"; 1185 - read -r -n 4 -u "$fd" magic; 1186 - exec {fd}>&-; 1187 - if [ "$magic" = 'ELF' ]; then 1188 - return 0; 1189 - else 1190 - return 1; 1191 - fi 1192 - } 1193 - isMachO () 1194 - { 1195 - 1196 - local fn="$1"; 1197 - local fd; 1198 - local magic; 1199 - exec {fd}< "$fn"; 1200 - read -r -n 4 -u "$fd" magic; 1201 - exec {fd}>&-; 1202 - if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then 1203 - return 0; 1204 - else 1205 - if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then 1206 - return 0; 1207 - else 1208 - if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then 1209 - return 0; 1210 - else 1211 - return 1; 1212 - fi; 1213 - fi; 1214 - fi 1215 - } 1216 - isScript () 1217 - { 1218 - 1219 - local fn="$1"; 1220 - local fd; 1221 - local magic; 1222 - exec {fd}< "$fn"; 1223 - read -r -n 2 -u "$fd" magic; 1224 - exec {fd}>&-; 1225 - if [[ "$magic" =~ \#! ]]; then 1226 - return 0; 1227 - else 1228 - return 1; 1229 - fi 1230 - } 1231 - mapOffset () 1232 - { 1233 - 1234 - local -r inputOffset="$1"; 1235 - local -n outputOffset="$2"; 1236 - if (( inputOffset <= 0 )); then 1237 - outputOffset=$((inputOffset + hostOffset)); 1238 - else 1239 - outputOffset=$((inputOffset - 1 + targetOffset)); 1240 - fi 1241 - } 1242 - moveToOutput () 1243 - { 1244 - 1245 - local patt="$1"; 1246 - local dstOut="$2"; 1247 - local output; 1248 - for output in $(getAllOutputNames); 1249 - do 1250 - if [ "${!output}" = "$dstOut" ]; then 1251 - continue; 1252 - fi; 1253 - local srcPath; 1254 - for srcPath in "${!output}"/$patt; 1255 - do 1256 - if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then 1257 - continue; 1258 - fi; 1259 - if [ "$dstOut" = REMOVE ]; then 1260 - echo "Removing $srcPath"; 1261 - rm -r "$srcPath"; 1262 - else 1263 - local dstPath="$dstOut${srcPath#${!output}}"; 1264 - echo "Moving $srcPath to $dstPath"; 1265 - if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then 1266 - rmdir "$srcPath" --ignore-fail-on-non-empty; 1267 - if [ -d "$srcPath" ]; then 1268 - mv -t "$dstPath" "$srcPath"/*; 1269 - rmdir "$srcPath"; 1270 - fi; 1271 - else 1272 - mkdir -p "$(readlink -m "$dstPath/..")"; 1273 - mv "$srcPath" "$dstPath"; 1274 - fi; 1275 - fi; 1276 - local srcParent="$(readlink -m "$srcPath/..")"; 1277 - if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then 1278 - echo "Removing empty $srcParent/ and (possibly) its parents"; 1279 - rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true; 1280 - fi; 1281 - done; 1282 - done 1283 - } 1284 - patchELF () 1285 - { 1286 - 1287 - local dir="$1"; 1288 - [ -e "$dir" ] || return 0; 1289 - echo "shrinking RPATHs of ELF executables and libraries in $dir"; 1290 - local i; 1291 - while IFS= read -r -d '' i; do 1292 - if [[ "$i" =~ .build-id ]]; then 1293 - continue; 1294 - fi; 1295 - if ! isELF "$i"; then 1296 - continue; 1297 - fi; 1298 - echo "shrinking $i"; 1299 - patchelf --shrink-rpath "$i" || true; 1300 - done < <(find "$dir" -type f -print0) 1301 - } 1302 - patchPhase () 1303 - { 1304 - 1305 - runHook prePatch; 1306 - local -a patchesArray; 1307 - if [ -n "$__structuredAttrs" ]; then 1308 - patchesArray=(${patches:+"${patches[@]}"}); 1309 - else 1310 - patchesArray=(${patches:-}); 1311 - fi; 1312 - for i in "${patchesArray[@]}"; 1313 - do 1314 - echo "applying patch $i"; 1315 - local uncompress=cat; 1316 - case "$i" in 1317 - *.gz) 1318 - uncompress="gzip -d" 1319 - ;; 1320 - *.bz2) 1321 - uncompress="bzip2 -d" 1322 - ;; 1323 - *.xz) 1324 - uncompress="xz -d" 1325 - ;; 1326 - *.lzma) 1327 - uncompress="lzma -d" 1328 - ;; 1329 - esac; 1330 - local -a flagsArray; 1331 - if [ -n "$__structuredAttrs" ]; then 1332 - flagsArray=("${patchFlags[@]:--p1}"); 1333 - else 1334 - flagsArray=(${patchFlags:--p1}); 1335 - fi; 1336 - $uncompress < "$i" 2>&1 | patch "${flagsArray[@]}"; 1337 - done; 1338 - runHook postPatch 1339 - } 1340 - patchShebangs () 1341 - { 1342 - 1343 - local pathName; 1344 - local update; 1345 - while [[ $# -gt 0 ]]; do 1346 - case "$1" in 1347 - --host) 1348 - pathName=HOST_PATH; 1349 - shift 1350 - ;; 1351 - --build) 1352 - pathName=PATH; 1353 - shift 1354 - ;; 1355 - --update) 1356 - update=true; 1357 - shift 1358 - ;; 1359 - --) 1360 - shift; 1361 - break 1362 - ;; 1363 - -* | --*) 1364 - echo "Unknown option $1 supplied to patchShebangs" 1>&2; 1365 - return 1 1366 - ;; 1367 - *) 1368 - break 1369 - ;; 1370 - esac; 1371 - done; 1372 - echo "patching script interpreter paths in $@"; 1373 - local f; 1374 - local oldPath; 1375 - local newPath; 1376 - local arg0; 1377 - local args; 1378 - local oldInterpreterLine; 1379 - local newInterpreterLine; 1380 - if [[ $# -eq 0 ]]; then 1381 - echo "No arguments supplied to patchShebangs" 1>&2; 1382 - return 0; 1383 - fi; 1384 - local f; 1385 - while IFS= read -r -d '' f; do 1386 - isScript "$f" || continue; 1387 - read -r oldInterpreterLine < "$f"; 1388 - read -r oldPath arg0 args <<< "${oldInterpreterLine:2}"; 1389 - if [[ -z "${pathName:-}" ]]; then 1390 - if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then 1391 - pathName=HOST_PATH; 1392 - else 1393 - pathName=PATH; 1394 - fi; 1395 - fi; 1396 - if [[ "$oldPath" == *"/bin/env" ]]; then 1397 - if [[ $arg0 == "-S" ]]; then 1398 - arg0=${args%% *}; 1399 - args=${args#* }; 1400 - newPath="$(PATH="${!pathName}" command -v "env" || true)"; 1401 - args="-S $(PATH="${!pathName}" command -v "$arg0" || true) $args"; 1402 - else 1403 - if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then 1404 - echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2; 1405 - exit 1; 1406 - else 1407 - newPath="$(PATH="${!pathName}" command -v "$arg0" || true)"; 1408 - fi; 1409 - fi; 1410 - else 1411 - if [[ -z $oldPath ]]; then 1412 - oldPath="/bin/sh"; 1413 - fi; 1414 - newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)"; 1415 - args="$arg0 $args"; 1416 - fi; 1417 - newInterpreterLine="$newPath $args"; 1418 - newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}}; 1419 - if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then 1420 - if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then 1421 - echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\""; 1422 - escapedInterpreterLine=${newInterpreterLine//\\/\\\\}; 1423 - timestamp=$(stat --printf "%y" "$f"); 1424 - sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f"; 1425 - touch --date "$timestamp" "$f"; 1426 - fi; 1427 - fi; 1428 - done < <(find "$@" -type f -perm -0100 -print0) 1429 - } 1430 - patchShebangsAuto () 1431 - { 1432 - 1433 - if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then 1434 - if [[ "$output" != out && "$output" = "$outputDev" ]]; then 1435 - patchShebangs --build "$prefix"; 1436 - else 1437 - patchShebangs --host "$prefix"; 1438 - fi; 1439 - fi 1440 - } 1441 - prependToVar () 1442 - { 1443 - 1444 - local -n nameref="$1"; 1445 - local useArray type; 1446 - if [ -n "$__structuredAttrs" ]; then 1447 - useArray=true; 1448 - else 1449 - useArray=false; 1450 - fi; 1451 - if declare -p "$1" 2> /dev/null | grep -q '^'; then 1452 - type="$(declare -p "$1")"; 1453 - if [[ "$type" =~ "declare -A" ]]; then 1454 - echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2; 1455 - return 1; 1456 - else 1457 - if [[ "$type" =~ "declare -a" ]]; then 1458 - useArray=true; 1459 - else 1460 - useArray=false; 1461 - fi; 1462 - fi; 1463 - fi; 1464 - shift; 1465 - if $useArray; then 1466 - nameref=("$@" ${nameref+"${nameref[@]}"}); 1467 - else 1468 - nameref="$* ${nameref-}"; 1469 - fi 1470 - } 1471 - printLines () 1472 - { 1473 - 1474 - (( "$#" > 0 )) || return 0; 1475 - printf '%s\n' "$@" 1476 - } 1477 - printWords () 1478 - { 1479 - 1480 - (( "$#" > 0 )) || return 0; 1481 - printf '%s ' "$@" 1482 - } 1483 - recordPropagatedDependencies () 1484 - { 1485 - 1486 - declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated); 1487 - declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}"); 1488 - local propagatedInputsIndex; 1489 - for propagatedInputsIndex in "${!flatVars[@]}"; 1490 - do 1491 - local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]"; 1492 - local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}"; 1493 - [[ -n "${!propagatedInputsSlice}" ]] || continue; 1494 - mkdir -p "${!outputDev}/nix-support"; 1495 - printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile"; 1496 - done 1497 - } 1498 - runHook () 1499 - { 1500 - 1501 - local hookName="$1"; 1502 - shift; 1503 - local hooksSlice="${hookName%Hook}Hooks[@]"; 1504 - local hook; 1505 - for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"}; 1506 - do 1507 - _eval "$hook" "$@"; 1508 - done; 1509 - return 0 1510 - } 1511 - runOneHook () 1512 - { 1513 - 1514 - local hookName="$1"; 1515 - shift; 1516 - local hooksSlice="${hookName%Hook}Hooks[@]"; 1517 - local hook ret=1; 1518 - for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"}; 1519 - do 1520 - if _eval "$hook" "$@"; then 1521 - ret=0; 1522 - break; 1523 - fi; 1524 - done; 1525 - return "$ret" 1526 - } 1527 - runPhase () 1528 - { 1529 - 1530 - local curPhase="$*"; 1531 - if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then 1532 - return; 1533 - fi; 1534 - if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then 1535 - return; 1536 - fi; 1537 - if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then 1538 - return; 1539 - fi; 1540 - if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then 1541 - return; 1542 - fi; 1543 - if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then 1544 - return; 1545 - fi; 1546 - if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then 1547 - return; 1548 - fi; 1549 - if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then 1550 - return; 1551 - fi; 1552 - if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then 1553 - return; 1554 - fi; 1555 - if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then 1556 - return; 1557 - fi; 1558 - if [[ -n $NIX_LOG_FD ]]; then 1559 - echo "@nix { \"action\": \"setPhase\", \"phase\": \"$curPhase\" }" >&"$NIX_LOG_FD"; 1560 - fi; 1561 - showPhaseHeader "$curPhase"; 1562 - dumpVars; 1563 - local startTime=$(date +"%s"); 1564 - eval "${!curPhase:-$curPhase}"; 1565 - local endTime=$(date +"%s"); 1566 - showPhaseFooter "$curPhase" "$startTime" "$endTime"; 1567 - if [ "$curPhase" = unpackPhase ]; then 1568 - [ -n "${sourceRoot:-}" ] && chmod +x "${sourceRoot}"; 1569 - cd "${sourceRoot:-.}"; 1570 - fi 1571 - } 1572 - showPhaseFooter () 1573 - { 1574 - 1575 - local phase="$1"; 1576 - local startTime="$2"; 1577 - local endTime="$3"; 1578 - local delta=$(( endTime - startTime )); 1579 - (( delta < 30 )) && return; 1580 - local H=$((delta/3600)); 1581 - local M=$((delta%3600/60)); 1582 - local S=$((delta%60)); 1583 - echo -n "$phase completed in "; 1584 - (( H > 0 )) && echo -n "$H hours "; 1585 - (( M > 0 )) && echo -n "$M minutes "; 1586 - echo "$S seconds" 1587 - } 1588 - showPhaseHeader () 1589 - { 1590 - 1591 - local phase="$1"; 1592 - echo "Running phase: $phase" 1593 - } 1594 - stripDirs () 1595 - { 1596 - 1597 - local cmd="$1"; 1598 - local ranlibCmd="$2"; 1599 - local paths="$3"; 1600 - local stripFlags="$4"; 1601 - local excludeFlags=(); 1602 - local pathsNew=; 1603 - [ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1; 1604 - [ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1; 1605 - local pattern; 1606 - if [ -n "${stripExclude:-}" ]; then 1607 - for pattern in "${stripExclude[@]}"; 1608 - do 1609 - excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')'); 1610 - done; 1611 - fi; 1612 - local p; 1613 - for p in ${paths}; 1614 - do 1615 - if [ -e "$prefix/$p" ]; then 1616 - pathsNew="${pathsNew} $prefix/$p"; 1617 - fi; 1618 - done; 1619 - paths=${pathsNew}; 1620 - if [ -n "${paths}" ]; then 1621 - echo "stripping (with command $cmd and flags $stripFlags) in $paths"; 1622 - local striperr; 1623 - striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')"; 1624 - find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -print0 | xargs -r -0 -n1 -- realpath -z | sort -u -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?; 1625 - [[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 ); 1626 - rm "$striperr"; 1627 - find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null; 1628 - fi 1629 - } 1630 - stripHash () 1631 - { 1632 - 1633 - local strippedName casematchOpt=0; 1634 - strippedName="$(basename -- "$1")"; 1635 - shopt -q nocasematch && casematchOpt=1; 1636 - shopt -u nocasematch; 1637 - if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then 1638 - echo "${strippedName:33}"; 1639 - else 1640 - echo "$strippedName"; 1641 - fi; 1642 - if (( casematchOpt )); then 1643 - shopt -s nocasematch; 1644 - fi 1645 - } 1646 - substitute () 1647 - { 1648 - 1649 - local input="$1"; 1650 - local output="$2"; 1651 - shift 2; 1652 - if [ ! -f "$input" ]; then 1653 - echo "substitute(): ERROR: file '$input' does not exist" 1>&2; 1654 - return 1; 1655 - fi; 1656 - local content; 1657 - consumeEntire content < "$input"; 1658 - if [ -e "$output" ]; then 1659 - chmod +w "$output"; 1660 - fi; 1661 - substituteStream content "file '$input'" "$@" > "$output" 1662 - } 1663 - substituteAll () 1664 - { 1665 - 1666 - local input="$1"; 1667 - local output="$2"; 1668 - local -a args=(); 1669 - _allFlags; 1670 - substitute "$input" "$output" "${args[@]}" 1671 - } 1672 - substituteAllInPlace () 1673 - { 1674 - 1675 - local fileName="$1"; 1676 - shift; 1677 - substituteAll "$fileName" "$fileName" "$@" 1678 - } 1679 - substituteAllStream () 1680 - { 1681 - 1682 - local -a args=(); 1683 - _allFlags; 1684 - substituteStream "$1" "$2" "${args[@]}" 1685 - } 1686 - substituteInPlace () 1687 - { 1688 - 1689 - local -a fileNames=(); 1690 - for arg in "$@"; 1691 - do 1692 - if [[ "$arg" = "--"* ]]; then 1693 - break; 1694 - fi; 1695 - fileNames+=("$arg"); 1696 - shift; 1697 - done; 1698 - for file in "${fileNames[@]}"; 1699 - do 1700 - substitute "$file" "$file" "$@"; 1701 - done 1702 - } 1703 - substituteStream () 1704 - { 1705 - 1706 - local var=$1; 1707 - local description=$2; 1708 - shift 2; 1709 - while (( "$#" )); do 1710 - case "$1" in 1711 - --replace) 1712 - pattern="$2"; 1713 - replacement="$3"; 1714 - shift 3; 1715 - local savedvar; 1716 - savedvar="${!var}"; 1717 - eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; 1718 - if [ "$pattern" != "$replacement" ]; then 1719 - if [ "${!var}" == "$savedvar" ]; then 1720 - echo "substituteStream(): WARNING: pattern '$pattern' doesn't match anything in $description" 1>&2; 1721 - fi; 1722 - fi 1723 - ;; 1724 - --subst-var) 1725 - local varName="$2"; 1726 - shift 2; 1727 - if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then 1728 - echo "substituteStream(): ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2; 1729 - return 1; 1730 - fi; 1731 - if [ -z ${!varName+x} ]; then 1732 - echo "substituteStream(): ERROR: variable \$$varName is unset" 1>&2; 1733 - return 1; 1734 - fi; 1735 - pattern="@$varName@"; 1736 - replacement="${!varName}"; 1737 - eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}' 1738 - ;; 1739 - --subst-var-by) 1740 - pattern="@$2@"; 1741 - replacement="$3"; 1742 - eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'; 1743 - shift 3 1744 - ;; 1745 - *) 1746 - echo "substituteStream(): ERROR: Invalid command line argument: $1" 1>&2; 1747 - return 1 1748 - ;; 1749 - esac; 1750 - done; 1751 - printf "%s" "${!var}" 1752 - } 1753 - unpackFile () 1754 - { 1755 - 1756 - curSrc="$1"; 1757 - echo "unpacking source archive $curSrc"; 1758 - if ! runOneHook unpackCmd "$curSrc"; then 1759 - echo "do not know how to unpack source archive $curSrc"; 1760 - exit 1; 1761 - fi 1762 - } 1763 - unpackPhase () 1764 - { 1765 - 1766 - runHook preUnpack; 1767 - if [ -z "${srcs:-}" ]; then 1768 - if [ -z "${src:-}" ]; then 1769 - echo 'variable $src or $srcs should point to the source'; 1770 - exit 1; 1771 - fi; 1772 - srcs="$src"; 1773 - fi; 1774 - local -a srcsArray; 1775 - if [ -n "$__structuredAttrs" ]; then 1776 - srcsArray=("${srcs[@]}"); 1777 - else 1778 - srcsArray=($srcs); 1779 - fi; 1780 - local dirsBefore=""; 1781 - for i in *; 1782 - do 1783 - if [ -d "$i" ]; then 1784 - dirsBefore="$dirsBefore $i "; 1785 - fi; 1786 - done; 1787 - for i in "${srcsArray[@]}"; 1788 - do 1789 - unpackFile "$i"; 1790 - done; 1791 - : "${sourceRoot=}"; 1792 - if [ -n "${setSourceRoot:-}" ]; then 1793 - runOneHook setSourceRoot; 1794 - else 1795 - if [ -z "$sourceRoot" ]; then 1796 - for i in *; 1797 - do 1798 - if [ -d "$i" ]; then 1799 - case $dirsBefore in 1800 - *\ $i\ *) 1801 - 1802 - ;; 1803 - *) 1804 - if [ -n "$sourceRoot" ]; then 1805 - echo "unpacker produced multiple directories"; 1806 - exit 1; 1807 - fi; 1808 - sourceRoot="$i" 1809 - ;; 1810 - esac; 1811 - fi; 1812 - done; 1813 - fi; 1814 - fi; 1815 - if [ -z "$sourceRoot" ]; then 1816 - echo "unpacker appears to have produced no directories"; 1817 - exit 1; 1818 - fi; 1819 - echo "source root is $sourceRoot"; 1820 - if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then 1821 - chmod -R u+w -- "$sourceRoot"; 1822 - fi; 1823 - runHook postUnpack 1824 - } 1825 - updateAutotoolsGnuConfigScriptsPhase () 1826 - { 1827 - 1828 - if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then 1829 - return; 1830 - fi; 1831 - for script in config.sub config.guess; 1832 - do 1833 - for f in $(find . -type f -name "$script"); 1834 - do 1835 - echo "Updating Autotools / GNU config script to a newer upstream version: $f"; 1836 - cp -f "/nix/store/7lk76vdawbx478qq9lvi3mgf73rvcyhd-gnu-config-2023-09-19/$script" "$f"; 1837 - done; 1838 - done 1839 - } 1840 - updateSourceDateEpoch () 1841 - { 1842 - 1843 - local path="$1"; 1844 - local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1)); 1845 - local time="${res[0]//\.[0-9]*/}"; 1846 - local newestFile="${res[1]}"; 1847 - if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then 1848 - echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"; 1849 - export SOURCE_DATE_EPOCH="$time"; 1850 - local now="$(date +%s)"; 1851 - if [ "$time" -gt $((now - 60)) ]; then 1852 - echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"; 1853 - fi; 1854 - fi 1855 - } 1856 - PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}" 1857 - XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}" 1858 - export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)" 1859 - export TMP="$NIX_BUILD_TOP" 1860 - export TMPDIR="$NIX_BUILD_TOP" 1861 - export TEMP="$NIX_BUILD_TOP" 1862 - export TEMPDIR="$NIX_BUILD_TOP" 1863 - eval "$shellHook"
-2
.envrc
··· 1 - export HE_PASSWORD=SuperDuper 2 - use flake
-2
.gitignore
··· 1 - .worktrees/* 2 - .direnv/
+4 -5
dns/dnsconfig.js
··· 6 6 7 7 D("lakhwara.com", REG_NONE, 8 8 DnsProvider(DNS_HEDNS), 9 - DefaultTTL(300), 9 + DefaultTTL(86400), 10 10 //SOA('@', 'ns1.he.net.', 'hostmaster.he.net.', 2022041702, 86400, 7200, 3600000, 86400, TTL(172800)), 11 - A('anish', '69.61.2.203'), 12 - A('@', '69.61.2.203'), 13 - //A('coaching', '103.16.130.98'), 11 + A('anish', '103.16.130.98'), 12 + A('coaching', '103.16.130.98'), 14 13 TXT('anish', 'datkey=dat://1a240a14fab2bae9c85ebad29bddc04505aaba24e5fb809c2ccb4cdf71e3a7d5'), 15 14 CNAME('fm1._domainkey', 'fm1.lakhwara.com.dkim.fmhosted.com.'), 16 15 CNAME('fm2._domainkey', 'fm2.lakhwara.com.dkim.fmhosted.com.'), 17 16 CNAME('fm3._domainkey', 'fm3.lakhwara.com.dkim.fmhosted.com.'), 17 + A('@', '103.16.130.98'), 18 18 MX('@', 10, 'in1-smtp.messagingengine.com.'), 19 19 MX('@', 20, 'in2-smtp.messagingengine.com.'), 20 20 //NAMESERVER('ns1.he.net.'), ··· 39 39 A('git', '69.61.2.203', TTL(300)), 40 40 A('bin', '69.61.2.203', TTL(300)), 41 41 A('ci', '69.61.2.203', TTL(300)), 42 - A('write', '69.61.2.203', TTL(300)), 43 42 // vultr -> nulled: lituus 44 43 A('@', '45.77.48.108', TTL(300)), 45 44 A('jitsi', '45.77.48.108', TTL(300)),
dns/test_nullhex.sh
+275 -428
flake.lock
··· 6 6 "home-manager": "home-manager", 7 7 "nixpkgs": [ 8 8 "nixpkgs" 9 - ], 10 - "systems": "systems" 9 + ] 11 10 }, 12 11 "locked": { 13 - "lastModified": 1747575206, 14 - "narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=", 12 + "lastModified": 1690228878, 13 + "narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=", 15 14 "owner": "ryantm", 16 15 "repo": "agenix", 17 - "rev": "4835b1dc898959d8547a871ef484930675cb47f1", 16 + "rev": "d8c973fd228949736dedf61b7f8cc1ece3236792", 18 17 "type": "github" 19 18 }, 20 19 "original": { ··· 35 34 }, 36 35 "locked": { 37 36 "lastModified": 1682226636, 38 - "narHash": "sha256-fmETHfUtQ5zOVr/4MT5wE7eNALCSQCnEUYZYmV3UEwg=", 37 + "narHash": "sha256-f/XuEoZYh+aubCfjeduvwZjd5X7IgRYnmuuhGsdfP/U=", 39 38 "ref": "main", 40 39 "rev": "095d14ff2469c8f3de7cbf45d229c0f46a733aae", 41 40 "revCount": 77, ··· 48 47 "url": "ssh://gitea@git.sealight.xyz/aynish/basant" 49 48 } 50 49 }, 51 - "breezy": { 52 - "inputs": { 53 - "flake-compat": "flake-compat", 54 - "flake-utils": "flake-utils_2", 55 - "nixpkgs": [ 56 - "unstable" 57 - ] 58 - }, 59 - "locked": { 60 - "lastModified": 1746128594, 61 - "narHash": "sha256-yynk80vxbBk3zhcGj/FT8lz2DBrjxb/1OoRy8JEbqtQ=", 62 - "owner": "shymega", 63 - "repo": "breezy-desktop", 64 - "rev": "77b9d4ef8dbf6a26427be6f3edae49d3c36fd5bc", 65 - "type": "github" 66 - }, 67 - "original": { 68 - "owner": "shymega", 69 - "ref": "shymega/add-nix-flake-support", 70 - "repo": "breezy-desktop", 71 - "type": "github" 72 - } 73 - }, 74 50 "brew-src": { 75 51 "flake": false, 76 52 "locked": { 77 - "lastModified": 1746795192, 78 - "narHash": "sha256-Cv+RXuzmn2iGBY2Ny/nXBTH+LFKDWIvMxf9a+btKI6M=", 53 + "lastModified": 1705326576, 54 + "narHash": "sha256-9PvMgHgdbpb5vBO8fHCRufodR731ynzGMF9+68vKWck=", 79 55 "owner": "Homebrew", 80 56 "repo": "brew", 81 - "rev": "6f39076b3c2251994419215279d0525ef667fc31", 57 + "rev": "1c612baa096c69f2fcb221c74e6f5b9979efdcee", 82 58 "type": "github" 83 59 }, 84 60 "original": { 85 61 "owner": "Homebrew", 86 - "ref": "4.5.2", 62 + "ref": "4.2.4", 87 63 "repo": "brew", 88 64 "type": "github" 89 65 } ··· 91 67 "crane": { 92 68 "flake": false, 93 69 "locked": { 94 - "lastModified": 1699217310, 95 - "narHash": "sha256-xpW3VFUG7yE6UE6Wl0dhqencuENSkV7qpnpe9I8VbPw=", 70 + "lastModified": 1686108916, 71 + "narHash": "sha256-looLH5MdY4erLiJw0XwQohGdr0fJL9y6TJY3898RA2U=", 96 72 "owner": "ipetkov", 97 73 "repo": "crane", 98 - "rev": "d535642bbe6f377077f7c23f0febb78b1463f449", 74 + "rev": "8ab1a49432695bd80ff4b7f6c6515da0e926d922", 99 75 "type": "github" 100 76 }, 101 77 "original": { 102 78 "owner": "ipetkov", 103 - "ref": "v0.15.0", 79 + "ref": "v0.12.2", 104 80 "repo": "crane", 105 81 "type": "github" 106 82 } ··· 113 89 ] 114 90 }, 115 91 "locked": { 116 - "lastModified": 1744478979, 117 - "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=", 92 + "lastModified": 1673295039, 93 + "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", 118 94 "owner": "lnl7", 119 95 "repo": "nix-darwin", 120 - "rev": "43975d782b418ebf4969e9ccba82466728c2851b", 96 + "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", 121 97 "type": "github" 122 98 }, 123 99 "original": { ··· 134 110 ] 135 111 }, 136 112 "locked": { 137 - "lastModified": 1748065210, 138 - "narHash": "sha256-dFqlLNW6UW19m0vg5FHWLH2G2LGkqYyPs/4YqfoZMoM=", 139 - "owner": "LnL7", 113 + "lastModified": 1747752302, 114 + "narHash": "sha256-XqNAcEFfe5tJZGlx+Su0G67ZwRwZmHNWwiMK0fji0Hw=", 115 + "owner": "nix-darwin", 140 116 "repo": "nix-darwin", 141 - "rev": "acd6aa5a9065c6695212be313e06f08f7184cb25", 117 + "rev": "74ecd01d2c122f8a4a48066ab1d48f3e01671671", 142 118 "type": "github" 143 119 }, 144 120 "original": { 145 - "owner": "LnL7", 146 - "ref": "master", 121 + "owner": "nix-darwin", 122 + "ref": "nix-darwin-25.05", 147 123 "repo": "nix-darwin", 148 124 "type": "github" 149 125 } 150 126 }, 151 127 "deploy-rs": { 152 128 "inputs": { 153 - "flake-compat": "flake-compat_2", 129 + "flake-compat": "flake-compat", 154 130 "nixpkgs": [ 155 131 "nixpkgs" 156 132 ], 157 133 "utils": "utils" 158 134 }, 159 135 "locked": { 160 - "lastModified": 1727447169, 161 - "narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=", 136 + "lastModified": 1704875591, 137 + "narHash": "sha256-eWRLbqRcrILgztU/m/k7CYLzETKNbv0OsT2GjkaNm8A=", 162 138 "owner": "serokell", 163 139 "repo": "deploy-rs", 164 - "rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76", 140 + "rev": "1776009f1f3fb2b5d236b84d9815f2edee463a9b", 165 141 "type": "github" 166 142 }, 167 143 "original": { ··· 188 164 "dirt-samples-src": { 189 165 "flake": false, 190 166 "locked": { 191 - "lastModified": 1698439458, 192 - "narHash": "sha256-Mp8qBpsOvW9Zguv95Kv7EU6S3ICaF2aO02Wz6xGURtE=", 167 + "lastModified": 1588278411, 168 + "narHash": "sha256-h8vQxRym6QzNLOTZU7A43VCHuG0H77l+BFwXnC0L1CE=", 193 169 "owner": "tidalcycles", 194 170 "repo": "dirt-samples", 195 - "rev": "9a6dff8f9ec3cd55b287290cf04e01afa6b8f532", 171 + "rev": "66d432418c9a7d82cf049d9246adfa62f46df2a6", 196 172 "type": "github" 197 173 }, 198 174 "original": { 199 175 "owner": "tidalcycles", 176 + "ref": "master", 200 177 "repo": "dirt-samples", 201 178 "type": "github" 202 179 } ··· 208 185 ] 209 186 }, 210 187 "locked": { 211 - "lastModified": 1747742835, 212 - "narHash": "sha256-kYL4GCwwznsypvsnA20oyvW8zB/Dvn6K5G/tgMjVMT4=", 188 + "lastModified": 1690739034, 189 + "narHash": "sha256-roW02IaiQ3gnEEDMCDWL5YyN+C4nBf/te6vfL7rG0jk=", 213 190 "owner": "nix-community", 214 191 "repo": "disko", 215 - "rev": "df522e787fdffc4f32ed3e1fca9ed0968a384d62", 192 + "rev": "4015740375676402a2ee6adebc3c30ea625b9a94", 216 193 "type": "github" 217 194 }, 218 195 "original": { ··· 223 200 }, 224 201 "dream2nix": { 225 202 "inputs": { 203 + "devshell": [ 204 + "sg-nvim", 205 + "nci" 206 + ], 207 + "flake-compat": [ 208 + "sg-nvim", 209 + "nci" 210 + ], 211 + "flake-parts": [ 212 + "sg-nvim", 213 + "nci", 214 + "parts" 215 + ], 216 + "nix-unit": [ 217 + "sg-nvim", 218 + "nci" 219 + ], 226 220 "nixpkgs": [ 227 221 "sg-nvim", 228 222 "nci", 229 223 "nixpkgs" 230 224 ], 231 - "purescript-overlay": "purescript-overlay", 232 - "pyproject-nix": "pyproject-nix" 225 + "pre-commit-hooks": [ 226 + "sg-nvim", 227 + "nci" 228 + ] 233 229 }, 234 230 "locked": { 235 - "lastModified": 1722526955, 236 - "narHash": "sha256-fFS8aDnfK9Qfm2FLnQ8pqWk8FzvFEv5LvTuZTZLREnc=", 231 + "lastModified": 1696373678, 232 + "narHash": "sha256-D5yaEkxi7VnoRsBDeHYB86FikFYDL/vq77ajo3Pa3Og=", 237 233 "owner": "nix-community", 238 234 "repo": "dream2nix", 239 - "rev": "3fd4c14d3683baac8d1f94286ae14fe160888b51", 235 + "rev": "5e2577caaf87661e29405db7e117bda57b0e749d", 240 236 "type": "github" 241 237 }, 242 238 "original": { ··· 264 260 "flake-compat_2": { 265 261 "flake": false, 266 262 "locked": { 267 - "lastModified": 1696426674, 268 - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 269 - "owner": "edolstra", 270 - "repo": "flake-compat", 271 - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 272 - "type": "github" 273 - }, 274 - "original": { 275 - "owner": "edolstra", 276 - "repo": "flake-compat", 277 - "type": "github" 278 - } 279 - }, 280 - "flake-compat_3": { 281 - "flake": false, 282 - "locked": { 283 263 "lastModified": 1641205782, 284 264 "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", 285 265 "owner": "edolstra", ··· 293 273 "type": "github" 294 274 } 295 275 }, 296 - "flake-compat_4": { 276 + "flake-compat_3": { 297 277 "flake": false, 298 278 "locked": { 299 - "lastModified": 1696426674, 300 - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 279 + "lastModified": 1673956053, 280 + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", 301 281 "owner": "edolstra", 302 282 "repo": "flake-compat", 303 - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 304 - "type": "github" 305 - }, 306 - "original": { 307 - "owner": "edolstra", 308 - "repo": "flake-compat", 309 - "type": "github" 310 - } 311 - }, 312 - "flake-compat_5": { 313 - "flake": false, 314 - "locked": { 315 - "lastModified": 1733328505, 316 - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", 317 - "owner": "edolstra", 318 - "repo": "flake-compat", 319 - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", 283 + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", 320 284 "type": "github" 321 285 }, 322 286 "original": { ··· 327 291 }, 328 292 "flake-parts": { 329 293 "inputs": { 330 - "nixpkgs-lib": [ 331 - "nur", 332 - "nixpkgs" 333 - ] 294 + "nixpkgs-lib": "nixpkgs-lib" 334 295 }, 335 296 "locked": { 336 - "lastModified": 1733312601, 337 - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", 297 + "lastModified": 1696343447, 298 + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", 338 299 "owner": "hercules-ci", 339 300 "repo": "flake-parts", 340 - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", 301 + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", 341 302 "type": "github" 342 303 }, 343 304 "original": { ··· 346 307 "type": "github" 347 308 } 348 309 }, 349 - "flake-parts_2": { 350 - "inputs": { 351 - "nixpkgs-lib": "nixpkgs-lib" 352 - }, 353 - "locked": { 354 - "lastModified": 1725234343, 355 - "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=", 356 - "owner": "hercules-ci", 357 - "repo": "flake-parts", 358 - "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6", 359 - "type": "github" 360 - }, 361 - "original": { 362 - "owner": "hercules-ci", 363 - "repo": "flake-parts", 364 - "type": "github" 365 - } 366 - }, 367 310 "flake-utils": { 368 311 "locked": { 369 312 "lastModified": 1638122382, ··· 380 322 } 381 323 }, 382 324 "flake-utils_2": { 325 + "locked": { 326 + "lastModified": 1667395993, 327 + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", 328 + "owner": "numtide", 329 + "repo": "flake-utils", 330 + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", 331 + "type": "github" 332 + }, 333 + "original": { 334 + "owner": "numtide", 335 + "repo": "flake-utils", 336 + "type": "github" 337 + } 338 + }, 339 + "flake-utils_3": { 383 340 "inputs": { 384 341 "systems": "systems_2" 385 342 }, 386 343 "locked": { 387 - "lastModified": 1726560853, 388 - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", 344 + "lastModified": 1687709756, 345 + "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", 389 346 "owner": "numtide", 390 347 "repo": "flake-utils", 391 - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", 348 + "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", 392 349 "type": "github" 393 350 }, 394 351 "original": { ··· 397 354 "type": "github" 398 355 } 399 356 }, 400 - "flake-utils_3": { 357 + "flake-utils_4": { 358 + "inputs": { 359 + "systems": "systems_3" 360 + }, 401 361 "locked": { 402 - "lastModified": 1667395993, 403 - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", 362 + "lastModified": 1681202837, 363 + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", 404 364 "owner": "numtide", 405 365 "repo": "flake-utils", 406 - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", 366 + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", 407 367 "type": "github" 408 368 }, 409 369 "original": { ··· 412 372 "type": "github" 413 373 } 414 374 }, 415 - "flake-utils_4": { 375 + "flake-utils_5": { 416 376 "inputs": { 417 377 "systems": "systems_4" 418 378 }, 419 379 "locked": { 420 - "lastModified": 1731533236, 421 - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 380 + "lastModified": 1685518550, 381 + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", 422 382 "owner": "numtide", 423 383 "repo": "flake-utils", 424 - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 384 + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", 385 + "type": "github" 386 + }, 387 + "original": { 388 + "owner": "numtide", 389 + "repo": "flake-utils", 390 + "type": "github" 391 + } 392 + }, 393 + "flake-utils_6": { 394 + "inputs": { 395 + "systems": "systems_5" 396 + }, 397 + "locked": { 398 + "lastModified": 1681202837, 399 + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", 400 + "owner": "numtide", 401 + "repo": "flake-utils", 402 + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", 425 403 "type": "github" 426 404 }, 427 405 "original": { ··· 439 417 ] 440 418 }, 441 419 "locked": { 442 - "lastModified": 1709087332, 443 - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", 420 + "lastModified": 1660459072, 421 + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", 444 422 "owner": "hercules-ci", 445 423 "repo": "gitignore.nix", 446 - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", 424 + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", 447 425 "type": "github" 448 426 }, 449 427 "original": { ··· 454 432 }, 455 433 "grasp": { 456 434 "inputs": { 457 - "flake-utils": "flake-utils_3", 435 + "flake-utils": "flake-utils_2", 458 436 "nixpkgs": [ 459 437 "nixpkgs" 460 438 ] ··· 476 454 }, 477 455 "hardware": { 478 456 "locked": { 479 - "lastModified": 1747900541, 480 - "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", 457 + "lastModified": 1691179816, 458 + "narHash": "sha256-WSMwqzU70ZMRHv1CUAfHEEKJuB0c9c9r0F+lJehXfSI=", 481 459 "owner": "nixos", 482 460 "repo": "nixos-hardware", 483 - "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", 461 + "rev": "87e3122b67587492a617764f88c71991893fcf8a", 484 462 "type": "github" 485 463 }, 486 464 "original": { ··· 497 475 ] 498 476 }, 499 477 "locked": { 500 - "lastModified": 1745494811, 501 - "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=", 478 + "lastModified": 1682203081, 479 + "narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=", 502 480 "owner": "nix-community", 503 481 "repo": "home-manager", 504 - "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be", 482 + "rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1", 505 483 "type": "github" 506 484 }, 507 485 "original": { ··· 534 512 "homebrew-bundle": { 535 513 "flake": false, 536 514 "locked": { 537 - "lastModified": 1745335228, 538 - "narHash": "sha256-TIKR2UgtyUmHLNZp255/vLs+1I10hXe+sciMEbAGFwE=", 515 + "lastModified": 1709834002, 516 + "narHash": "sha256-KNRwMnyo6ZLphIh2bn02KNOtRf2X3NHqUbS7y4Vmn+M=", 539 517 "owner": "homebrew", 540 518 "repo": "homebrew-bundle", 541 - "rev": "a3265c84b232e13048ecbf6fc18a2eedfadbeb08", 519 + "rev": "bb1c80baa7fac67bbffe81a2862c75a5dc7ea4a7", 542 520 "type": "github" 543 521 }, 544 522 "original": { ··· 550 528 "homebrew-cask": { 551 529 "flake": false, 552 530 "locked": { 553 - "lastModified": 1748113418, 554 - "narHash": "sha256-lX4WosoMtusSD4GRDRvzwQwzLJUetg5HEWlMcJ4IQmI=", 531 + "lastModified": 1709955474, 532 + "narHash": "sha256-pE5x579FqCieeeEmrUtNKoBsMG41WSOfGWtXCTI9FP4=", 555 533 "owner": "homebrew", 556 534 "repo": "homebrew-cask", 557 - "rev": "ed1a02852e1c4a5fab4aef776082ca89cd70f09a", 535 + "rev": "43b9db57368e350c116398c7da6cb5401cd37ebe", 558 536 "type": "github" 559 537 }, 560 538 "original": { ··· 566 544 "homebrew-core": { 567 545 "flake": false, 568 546 "locked": { 569 - "lastModified": 1748120562, 570 - "narHash": "sha256-b4Qd9nAVW8yMqZ5T9B7HfSrDLCrtsw07D98/NWz2xsE=", 547 + "lastModified": 1709956143, 548 + "narHash": "sha256-5eyfpnVhxVv3+n53vp4j9DNx7O+mqtQqUn90JKS1PMM=", 571 549 "owner": "homebrew", 572 550 "repo": "homebrew-core", 573 - "rev": "b26cd07a06b15767688137a68461cb34fe985efa", 551 + "rev": "a38d7e99bc103e9564208f2d155701d70001c8cc", 574 552 "type": "github" 575 553 }, 576 554 "original": { ··· 579 557 "type": "github" 580 558 } 581 559 }, 582 - "jovian": { 583 - "inputs": { 584 - "nix-github-actions": "nix-github-actions", 585 - "nixpkgs": [ 586 - "unstable" 587 - ] 588 - }, 589 - "locked": { 590 - "lastModified": 1747990026, 591 - "narHash": "sha256-sG5VbID+x5+xUC+jjgHibnzg8IllVcH+K2TLmYHLPME=", 592 - "owner": "jovian-experiments", 593 - "repo": "jovian-nixos", 594 - "rev": "e2f4ced874406541a7957f7e2b8f05a0d59a0f00", 595 - "type": "github" 596 - }, 597 - "original": { 598 - "owner": "jovian-experiments", 599 - "repo": "jovian-nixos", 600 - "type": "github" 601 - } 602 - }, 603 560 "mk-naked-shell": { 604 561 "flake": false, 605 562 "locked": { ··· 621 578 "crane": "crane", 622 579 "dream2nix": "dream2nix", 623 580 "mk-naked-shell": "mk-naked-shell", 624 - "nixpkgs": "nixpkgs_6", 581 + "nixpkgs": "nixpkgs_5", 625 582 "parts": "parts", 626 583 "rust-overlay": "rust-overlay_2", 627 584 "treefmt": "treefmt" 628 585 }, 629 586 "locked": { 630 - "lastModified": 1725862543, 631 - "narHash": "sha256-tq5GovIMh1CaC4wtf7qdnzyab+tlpIspuR13FHAVibA=", 587 + "lastModified": 1696572678, 588 + "narHash": "sha256-rcznf00l41VtjzvEGMWOxaj5J/5twES6n30VwbJMgl0=", 632 589 "owner": "yusdacra", 633 590 "repo": "nix-cargo-integration", 634 - "rev": "b60e6590f9d54041660d5dc86242721eb568371d", 591 + "rev": "cacb6c94004a35676c193f04afa8821758986bf0", 635 592 "type": "github" 636 593 }, 637 594 "original": { ··· 645 602 "nixpkgs": "nixpkgs" 646 603 }, 647 604 "locked": { 648 - "lastModified": 1716329735, 649 - "narHash": "sha256-ap51w+VqG21vuzyQ04WrhI2YbWHd3UGz0e7dc/QQmoA=", 605 + "lastModified": 1688307440, 606 + "narHash": "sha256-7PTjbN+/+b799YN7Tk2SS5Vh8A0L3gBo8hmB7Y0VXug=", 650 607 "owner": "LnL7", 651 608 "repo": "nix-darwin", 652 - "rev": "eac4f25028c1975a939c8f8fba95c12f8a25e01c", 609 + "rev": "b06bab83bdf285ea0ae3c8e145a081eb95959047", 653 610 "type": "github" 654 611 }, 655 612 "original": { ··· 658 615 "type": "github" 659 616 } 660 617 }, 661 - "nix-github-actions": { 662 - "inputs": { 663 - "nixpkgs": [ 664 - "jovian", 665 - "nixpkgs" 666 - ] 667 - }, 668 - "locked": { 669 - "lastModified": 1729697500, 670 - "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", 671 - "owner": "zhaofengli", 672 - "repo": "nix-github-actions", 673 - "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", 674 - "type": "github" 675 - }, 676 - "original": { 677 - "owner": "zhaofengli", 678 - "ref": "matrix-name", 679 - "repo": "nix-github-actions", 680 - "type": "github" 681 - } 682 - }, 683 618 "nix-homebrew": { 684 619 "inputs": { 685 620 "brew-src": "brew-src", 621 + "flake-utils": "flake-utils_3", 686 622 "nix-darwin": "nix-darwin", 687 623 "nixpkgs": "nixpkgs_2" 688 624 }, 689 625 "locked": { 690 - "lastModified": 1747444109, 691 - "narHash": "sha256-fSufrKr8NdhLMuGZGwjGUfH+TIWrjFTRIBhgCRIyxno=", 626 + "lastModified": 1705952034, 627 + "narHash": "sha256-H0nk8Gk8kPw4yi2WwOTsSHgPrzSwyNgWEYHk10IJwfc=", 692 628 "owner": "zhaofengli-wip", 693 629 "repo": "nix-homebrew", 694 - "rev": "159f21ae77da757bbaeb98c0b16ff2e7b2738350", 630 + "rev": "40f5ee46b58e7c5f1927e2c5a583dc3d7e571ed9", 695 631 "type": "github" 696 632 }, 697 633 "original": { ··· 703 639 "nix-matrix-appservices": { 704 640 "inputs": { 705 641 "devshell": "devshell", 706 - "flake-compat": "flake-compat_3", 642 + "flake-compat": "flake-compat_2", 707 643 "nixlib": "nixlib", 708 644 "nixpkgs": "nixpkgs_3" 709 645 }, ··· 738 674 }, 739 675 "nixos-hardware": { 740 676 "locked": { 741 - "lastModified": 1747900541, 742 - "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", 677 + "lastModified": 1691179816, 678 + "narHash": "sha256-WSMwqzU70ZMRHv1CUAfHEEKJuB0c9c9r0F+lJehXfSI=", 743 679 "owner": "NixOS", 744 680 "repo": "nixos-hardware", 745 - "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", 681 + "rev": "87e3122b67587492a617764f88c71991893fcf8a", 746 682 "type": "github" 747 683 }, 748 684 "original": { ··· 767 703 }, 768 704 "nixpkgs-lib": { 769 705 "locked": { 770 - "lastModified": 1725233747, 771 - "narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=", 772 - "type": "tarball", 773 - "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" 706 + "dir": "lib", 707 + "lastModified": 1696019113, 708 + "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", 709 + "owner": "NixOS", 710 + "repo": "nixpkgs", 711 + "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", 712 + "type": "github" 774 713 }, 775 714 "original": { 776 - "type": "tarball", 777 - "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" 715 + "dir": "lib", 716 + "owner": "NixOS", 717 + "ref": "nixos-unstable", 718 + "repo": "nixpkgs", 719 + "type": "github" 778 720 } 779 721 }, 780 722 "nixpkgs-stable": { 781 723 "locked": { 782 - "lastModified": 1720386169, 783 - "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", 724 + "lastModified": 1685801374, 725 + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", 784 726 "owner": "NixOS", 785 727 "repo": "nixpkgs", 786 - "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", 728 + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", 787 729 "type": "github" 788 730 }, 789 731 "original": { 790 732 "owner": "NixOS", 791 - "ref": "nixos-24.05", 733 + "ref": "nixos-23.05", 792 734 "repo": "nixpkgs", 793 735 "type": "github" 794 736 } 795 737 }, 796 738 "nixpkgs_2": { 797 739 "locked": { 798 - "lastModified": 1746328495, 799 - "narHash": "sha256-uKCfuDs7ZM3QpCE/jnfubTg459CnKnJG/LwqEVEdEiw=", 740 + "lastModified": 1688049487, 741 + "narHash": "sha256-100g4iaKC9MalDjUW9iN6Jl/OocTDtXdeAj7pEGIRh4=", 800 742 "owner": "NixOS", 801 743 "repo": "nixpkgs", 802 - "rev": "979daf34c8cacebcd917d540070b52a3c2b9b16e", 744 + "rev": "4bc72cae107788bf3f24f30db2e2f685c9298dc9", 803 745 "type": "github" 804 746 }, 805 747 "original": { ··· 827 769 }, 828 770 "nixpkgs_4": { 829 771 "locked": { 830 - "lastModified": 1747862697, 831 - "narHash": "sha256-U4HaNZ1W26cbOVm0Eb5OdGSnfQVWQKbLSPrSSa78KC0=", 772 + "lastModified": 1747610100, 773 + "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", 832 774 "owner": "nixos", 833 775 "repo": "nixpkgs", 834 - "rev": "2baa12ff69913392faf0ace833bc54bba297ea95", 776 + "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d", 835 777 "type": "github" 836 778 }, 837 779 "original": { 838 780 "owner": "nixos", 839 - "ref": "nixos-24.11", 781 + "ref": "nixos-25.05", 840 782 "repo": "nixpkgs", 841 783 "type": "github" 842 784 } 843 785 }, 844 786 "nixpkgs_5": { 845 787 "locked": { 846 - "lastModified": 1748026106, 847 - "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", 848 - "owner": "nixos", 849 - "repo": "nixpkgs", 850 - "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", 851 - "type": "github" 852 - }, 853 - "original": { 854 - "owner": "nixos", 855 - "ref": "nixos-unstable", 856 - "repo": "nixpkgs", 857 - "type": "github" 858 - } 859 - }, 860 - "nixpkgs_6": { 861 - "locked": { 862 - "lastModified": 1725634671, 863 - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", 788 + "lastModified": 1696193975, 789 + "narHash": "sha256-mnQjUcYgp9Guu3RNVAB2Srr1TqKcPpRXmJf4LJk6KRY=", 864 790 "owner": "NixOS", 865 791 "repo": "nixpkgs", 866 - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", 792 + "rev": "fdd898f8f79e8d2f99ed2ab6b3751811ef683242", 867 793 "type": "github" 868 794 }, 869 795 "original": { ··· 873 799 "type": "github" 874 800 } 875 801 }, 876 - "nixpkgs_7": { 802 + "nixpkgs_6": { 877 803 "locked": { 878 - "lastModified": 1725816686, 879 - "narHash": "sha256-0Kq2MkQ/sQX1rhWJ/ySBBQlBJBUK8mPMDcuDhhdBkSU=", 804 + "lastModified": 1696419054, 805 + "narHash": "sha256-EdR+dIKCfqL3voZUDYwcvgRDOektQB9KbhBVcE0/3Mo=", 880 806 "owner": "nixos", 881 807 "repo": "nixpkgs", 882 - "rev": "add0443ee587a0c44f22793b8c8649a0dbc3bb00", 808 + "rev": "7131f3c223a2d799568e4b278380cd9dac2b8579", 883 809 "type": "github" 884 810 }, 885 811 "original": { ··· 889 815 "type": "github" 890 816 } 891 817 }, 892 - "nixpkgs_8": { 818 + "nixpkgs_7": { 893 819 "locked": { 894 - "lastModified": 1719082008, 895 - "narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=", 820 + "lastModified": 1689261696, 821 + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", 896 822 "owner": "NixOS", 897 823 "repo": "nixpkgs", 898 - "rev": "9693852a2070b398ee123a329e68f0dab5526681", 824 + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", 899 825 "type": "github" 900 826 }, 901 827 "original": { ··· 905 831 "type": "github" 906 832 } 907 833 }, 908 - "nixpkgs_9": { 834 + "nixpkgs_8": { 909 835 "locked": { 910 - "lastModified": 1718428119, 911 - "narHash": "sha256-WdWDpNaq6u1IPtxtYHHWpl5BmabtpmLnMAx0RdJ/vo8=", 836 + "lastModified": 1681358109, 837 + "narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=", 912 838 "owner": "NixOS", 913 839 "repo": "nixpkgs", 914 - "rev": "e6cea36f83499eb4e9cd184c8a8e823296b50ad5", 840 + "rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9", 915 841 "type": "github" 916 842 }, 917 843 "original": { ··· 922 848 } 923 849 }, 924 850 "nur": { 925 - "inputs": { 926 - "flake-parts": "flake-parts", 927 - "nixpkgs": "nixpkgs_5", 928 - "treefmt-nix": "treefmt-nix" 929 - }, 930 851 "locked": { 931 - "lastModified": 1748119613, 932 - "narHash": "sha256-BvOMqlTgRbz8ldRcaf7OTKIRsGlOw4AssphiZGLd0fo=", 852 + "lastModified": 1691214006, 853 + "narHash": "sha256-kdfBd+Y0DTOOdgSA6h6iIn403xVj4bzLnXqb7+yM6lQ=", 933 854 "owner": "nix-community", 934 855 "repo": "NUR", 935 - "rev": "48380b491e6415284292516fe919d78207969e30", 856 + "rev": "963ad2d1bb0a8f59b2c23ab521d4dff2148aad16", 936 857 "type": "github" 937 858 }, 938 859 "original": { ··· 950 871 ] 951 872 }, 952 873 "locked": { 953 - "lastModified": 1725234343, 954 - "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=", 874 + "lastModified": 1696343447, 875 + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", 955 876 "owner": "hercules-ci", 956 877 "repo": "flake-parts", 957 - "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6", 878 + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", 958 879 "type": "github" 959 880 }, 960 881 "original": { ··· 970 891 ] 971 892 }, 972 893 "locked": { 973 - "lastModified": 1738465265, 974 - "narHash": "sha256-v8nD/2gq8/mILEJqvWgx1q7Fc1purQvV3/WZLQ/t/wc=", 894 + "lastModified": 1724637654, 895 + "narHash": "sha256-YXmWxUEG3NDsLn46Ctrgn7YcT/h0fsCAxKcSgIhCSLo=", 975 896 "ref": "main", 976 - "rev": "115f8af750c0d4b6a8c6f97119b12d7e3eb20c6a", 977 - "revCount": 1552, 897 + "rev": "521e360df123a530fc4c99187e3580bd5d086a9d", 898 + "revCount": 1467, 978 899 "type": "git", 979 900 "url": "ssh://gitea@git.sealight.xyz/aynish/kitaab" 980 901 }, ··· 986 907 }, 987 908 "pre-commit-nix": { 988 909 "inputs": { 989 - "flake-compat": "flake-compat_4", 910 + "flake-compat": "flake-compat_3", 911 + "flake-utils": "flake-utils_5", 990 912 "gitignore": "gitignore", 991 - "nixpkgs": "nixpkgs_8", 913 + "nixpkgs": "nixpkgs_7", 992 914 "nixpkgs-stable": "nixpkgs-stable" 993 915 }, 994 916 "locked": { 995 - "lastModified": 1725513492, 996 - "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", 917 + "lastModified": 1696516544, 918 + "narHash": "sha256-8rKE8Je6twTNFRTGF63P9mE3lZIq917RAicdc4XJO80=", 997 919 "owner": "cachix", 998 920 "repo": "pre-commit-hooks.nix", 999 - "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", 921 + "rev": "66c352d33e0907239e4a69416334f64af2c685cc", 1000 922 "type": "github" 1001 923 }, 1002 924 "original": { ··· 1005 927 "type": "github" 1006 928 } 1007 929 }, 1008 - "purescript-overlay": { 1009 - "inputs": { 1010 - "nixpkgs": [ 1011 - "sg-nvim", 1012 - "nci", 1013 - "dream2nix", 1014 - "nixpkgs" 1015 - ], 1016 - "slimlock": "slimlock" 1017 - }, 1018 - "locked": { 1019 - "lastModified": 1696022621, 1020 - "narHash": "sha256-eMjFmsj2G1E0Q5XiibUNgFjTiSz0GxIeSSzzVdoN730=", 1021 - "owner": "thomashoneyman", 1022 - "repo": "purescript-overlay", 1023 - "rev": "047c7933abd6da8aa239904422e22d190ce55ead", 1024 - "type": "github" 1025 - }, 1026 - "original": { 1027 - "owner": "thomashoneyman", 1028 - "repo": "purescript-overlay", 1029 - "type": "github" 1030 - } 1031 - }, 1032 - "pyproject-nix": { 1033 - "flake": false, 1034 - "locked": { 1035 - "lastModified": 1702448246, 1036 - "narHash": "sha256-hFg5s/hoJFv7tDpiGvEvXP0UfFvFEDgTdyHIjDVHu1I=", 1037 - "owner": "davhau", 1038 - "repo": "pyproject.nix", 1039 - "rev": "5a06a2697b228c04dd2f35659b4b659ca74f7aeb", 1040 - "type": "github" 1041 - }, 1042 - "original": { 1043 - "owner": "davhau", 1044 - "ref": "dream2nix", 1045 - "repo": "pyproject.nix", 1046 - "type": "github" 1047 - } 1048 - }, 1049 930 "root": { 1050 931 "inputs": { 1051 932 "agenix": "agenix", 1052 933 "basant": "basant", 1053 - "breezy": "breezy", 1054 934 "darwin": "darwin_2", 1055 935 "deploy-rs": "deploy-rs", 1056 936 "disko": "disko", ··· 1060 940 "homebrew-bundle": "homebrew-bundle", 1061 941 "homebrew-cask": "homebrew-cask", 1062 942 "homebrew-core": "homebrew-core", 1063 - "jovian": "jovian", 1064 943 "nix-homebrew": "nix-homebrew", 1065 944 "nix-matrix-appservices": "nix-matrix-appservices", 1066 945 "nixos-hardware": "nixos-hardware", ··· 1072 951 "sourcegraph-src-cli-cask": "sourcegraph-src-cli-cask", 1073 952 "tidalcycles": "tidalcycles", 1074 953 "unstable": "unstable", 1075 - "vimwikicli": "vimwikicli", 1076 - "xr-linux": "xr-linux" 954 + "vimwikicli": "vimwikicli" 1077 955 } 1078 956 }, 1079 957 "rust-overlay": { 1080 958 "inputs": { 959 + "flake-utils": "flake-utils_4", 1081 960 "nixpkgs": [ 1082 961 "nixpkgs" 1083 962 ] 1084 963 }, 1085 964 "locked": { 1086 - "lastModified": 1748054080, 1087 - "narHash": "sha256-rwFiLLNCwkj9bqePtH1sMqzs1xmohE0Ojq249piMzF4=", 965 + "lastModified": 1691201768, 966 + "narHash": "sha256-h+QJMpawZoK1+8efF6UjQoY1EHZfHteXVa5OYnlqRWA=", 1088 967 "owner": "oxalica", 1089 968 "repo": "rust-overlay", 1090 - "rev": "2221d8d53c128beb69346fa3ab36da3f19bb1691", 969 + "rev": "18ee2a71de24273e4ad4503b5604532f0b53f382", 1091 970 "type": "github" 1092 971 }, 1093 972 "original": { ··· 1099 978 "rust-overlay_2": { 1100 979 "flake": false, 1101 980 "locked": { 1102 - "lastModified": 1725848835, 1103 - "narHash": "sha256-u4lCr+tOEWhsFiww5G04U5jUNzaQJi0/ZMIDGiLeT14=", 981 + "lastModified": 1696558324, 982 + "narHash": "sha256-TnnP4LGwDB8ZGE7h2n4nA9Faee8xPkMdNcyrzJ57cbw=", 1104 983 "owner": "oxalica", 1105 984 "repo": "rust-overlay", 1106 - "rev": "2ef910a6276a2f34513d18f2f826a8dea72c3b3f", 985 + "rev": "fdb37574a04df04aaa8cf7708f94a9309caebe2b", 1107 986 "type": "github" 1108 987 }, 1109 988 "original": { ··· 1114 993 }, 1115 994 "rust-overlay_3": { 1116 995 "inputs": { 1117 - "nixpkgs": "nixpkgs_9" 996 + "flake-utils": "flake-utils_6", 997 + "nixpkgs": "nixpkgs_8" 1118 998 }, 1119 999 "locked": { 1120 - "lastModified": 1725848835, 1121 - "narHash": "sha256-u4lCr+tOEWhsFiww5G04U5jUNzaQJi0/ZMIDGiLeT14=", 1000 + "lastModified": 1696558324, 1001 + "narHash": "sha256-TnnP4LGwDB8ZGE7h2n4nA9Faee8xPkMdNcyrzJ57cbw=", 1122 1002 "owner": "oxalica", 1123 1003 "repo": "rust-overlay", 1124 - "rev": "2ef910a6276a2f34513d18f2f826a8dea72c3b3f", 1004 + "rev": "fdb37574a04df04aaa8cf7708f94a9309caebe2b", 1125 1005 "type": "github" 1126 1006 }, 1127 1007 "original": { ··· 1132 1012 }, 1133 1013 "sg-nvim": { 1134 1014 "inputs": { 1135 - "flake-parts": "flake-parts_2", 1015 + "flake-parts": "flake-parts", 1136 1016 "nci": "nci", 1137 - "nixpkgs": "nixpkgs_7", 1017 + "nixpkgs": "nixpkgs_6", 1138 1018 "pre-commit-nix": "pre-commit-nix", 1139 1019 "rust-overlay": "rust-overlay_3" 1140 1020 }, 1141 1021 "locked": { 1142 - "lastModified": 1737448478, 1143 - "narHash": "sha256-i5g+pzxB8pAORLbr1wlYWUTsrJJmVj9UwlCg8pU3Suw=", 1022 + "lastModified": 1716664639, 1023 + "narHash": "sha256-5wzTW9kJGYq41kXG9JoVAaA5601K26cDrweT2PtpEw8=", 1144 1024 "owner": "sourcegraph", 1145 1025 "repo": "sg.nvim", 1146 - "rev": "775f22b75a9826eabf69b0094dd1d51d619fe552", 1026 + "rev": "8bdd4d19da2268072708d5fe18fda9c23e16509d", 1147 1027 "type": "github" 1148 1028 }, 1149 1029 "original": { ··· 1152 1032 "type": "github" 1153 1033 } 1154 1034 }, 1155 - "slimlock": { 1156 - "inputs": { 1157 - "nixpkgs": [ 1158 - "sg-nvim", 1159 - "nci", 1160 - "dream2nix", 1161 - "purescript-overlay", 1162 - "nixpkgs" 1163 - ] 1164 - }, 1165 - "locked": { 1166 - "lastModified": 1688610262, 1167 - "narHash": "sha256-Wg0ViDotFWGWqKIQzyYCgayeH8s4U1OZcTiWTQYdAp4=", 1168 - "owner": "thomashoneyman", 1169 - "repo": "slimlock", 1170 - "rev": "b5c6cdcaf636ebbebd0a1f32520929394493f1a6", 1171 - "type": "github" 1172 - }, 1173 - "original": { 1174 - "owner": "thomashoneyman", 1175 - "repo": "slimlock", 1176 - "type": "github" 1177 - } 1178 - }, 1179 1035 "sourcegraph-src-cli-cask": { 1180 1036 "flake": false, 1181 1037 "locked": { 1182 - "lastModified": 1747940755, 1183 - "narHash": "sha256-rS+LEcZKOoRN3bH+aZIV1Y4AlPR8dWosiRAA8Q1itBs=", 1038 + "lastModified": 1722629753, 1039 + "narHash": "sha256-3OwvDSoVzklr3ca1qCXR27Kc8hGjshRRdtVQ8OUXQCc=", 1184 1040 "owner": "sourcegraph", 1185 1041 "repo": "homebrew-src-cli", 1186 - "rev": "34bb40706f3f9641958db65c5c77a1db51140b3d", 1042 + "rev": "130bd8ab70961e5c1f890811bfb1f7552a2ee5a9", 1187 1043 "type": "github" 1188 1044 }, 1189 1045 "original": { ··· 1195 1051 "superdirt-src": { 1196 1052 "flake": false, 1197 1053 "locked": { 1198 - "lastModified": 1697377840, 1199 - "narHash": "sha256-9qU9CHYAXbN1IE3xXDqGipuroifVaSVXj3c/cDfwM80=", 1054 + "lastModified": 1611740180, 1055 + "narHash": "sha256-GtnqZeMFqFkVhgx2Exu0wY687cHa7mNnVCgjQd6fiIA=", 1200 1056 "owner": "musikinformatik", 1201 1057 "repo": "superdirt", 1202 - "rev": "c7f32998572984705d340e7c1b9ed9ad998a39b6", 1058 + "rev": "7abb62e89649daa1232b9cbd6427241868abd30e", 1203 1059 "type": "github" 1204 1060 }, 1205 1061 "original": { 1206 1062 "owner": "musikinformatik", 1063 + "ref": "master", 1207 1064 "repo": "superdirt", 1208 1065 "type": "github" 1209 1066 } ··· 1268 1125 "type": "github" 1269 1126 } 1270 1127 }, 1128 + "systems_5": { 1129 + "locked": { 1130 + "lastModified": 1681028828, 1131 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 1132 + "owner": "nix-systems", 1133 + "repo": "default", 1134 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 1135 + "type": "github" 1136 + }, 1137 + "original": { 1138 + "owner": "nix-systems", 1139 + "repo": "default", 1140 + "type": "github" 1141 + } 1142 + }, 1271 1143 "tidal-src": { 1272 1144 "flake": false, 1273 1145 "locked": { 1274 - "lastModified": 1712519522, 1275 - "narHash": "sha256-LbvxQmVxHElidCgvt+w0g1k+QQbNLebK46vtRCgsLeQ=", 1146 + "lastModified": 1654350756, 1147 + "narHash": "sha256-tONM5SYYBca0orTLH1EUOilSC1FCluWrFt8AetUx+YQ=", 1276 1148 "owner": "tidalcycles", 1277 1149 "repo": "tidal", 1278 - "rev": "88f09edf6bef2228d5f530dea872b08a9d803066", 1150 + "rev": "fda9c1ecb3722698935245e5409ef8ccdfca16c8", 1279 1151 "type": "github" 1280 1152 }, 1281 1153 "original": { 1282 1154 "owner": "tidalcycles", 1283 - "ref": "v1.9.5", 1155 + "ref": "main", 1284 1156 "repo": "tidal", 1285 1157 "type": "github" 1286 1158 } ··· 1293 1165 ], 1294 1166 "superdirt-src": "superdirt-src", 1295 1167 "tidal-src": "tidal-src", 1168 + "utils": "utils_2", 1296 1169 "vim-tidal-src": "vim-tidal-src", 1297 1170 "vowel-src": "vowel-src" 1298 1171 }, 1299 1172 "locked": { 1300 - "lastModified": 1730626669, 1301 - "narHash": "sha256-nFyZrvTPn9OM9UZmuAwy3e1Ba0ZuYc2FaDCOOhGtqg4=", 1173 + "lastModified": 1664760044, 1174 + "narHash": "sha256-e5LGk/tDnphory1mYhADgPnVtShofY2w/3xY09jEE2A=", 1302 1175 "owner": "mitchmindtree", 1303 1176 "repo": "tidalcycles.nix", 1304 - "rev": "0db0918e7a3d3c30ed7a6e81dc9d4e3832870ac4", 1177 + "rev": "3f3a820cd43709077d15a24fa6062de7d623a6bf", 1305 1178 "type": "github" 1306 1179 }, 1307 1180 "original": { ··· 1319 1192 ] 1320 1193 }, 1321 1194 "locked": { 1322 - "lastModified": 1725271838, 1323 - "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", 1324 - "owner": "numtide", 1325 - "repo": "treefmt-nix", 1326 - "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", 1327 - "type": "github" 1328 - }, 1329 - "original": { 1330 - "owner": "numtide", 1331 - "repo": "treefmt-nix", 1332 - "type": "github" 1333 - } 1334 - }, 1335 - "treefmt-nix": { 1336 - "inputs": { 1337 - "nixpkgs": [ 1338 - "nur", 1339 - "nixpkgs" 1340 - ] 1341 - }, 1342 - "locked": { 1343 - "lastModified": 1733222881, 1344 - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", 1195 + "lastModified": 1695822946, 1196 + "narHash": "sha256-IQU3fYo0H+oGlqX5YrgZU3VRhbt2Oqe6KmslQKUO4II=", 1345 1197 "owner": "numtide", 1346 1198 "repo": "treefmt-nix", 1347 - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", 1199 + "rev": "720bd006d855b08e60664e4683ccddb7a9ff614a", 1348 1200 "type": "github" 1349 1201 }, 1350 1202 "original": { ··· 1355 1207 }, 1356 1208 "unstable": { 1357 1209 "locked": { 1358 - "lastModified": 1748026106, 1359 - "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", 1210 + "lastModified": 1747542820, 1211 + "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", 1360 1212 "owner": "nixos", 1361 1213 "repo": "nixpkgs", 1362 - "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", 1214 + "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", 1363 1215 "type": "github" 1364 1216 }, 1365 1217 "original": { ··· 1371 1223 }, 1372 1224 "utils": { 1373 1225 "inputs": { 1374 - "systems": "systems_3" 1226 + "systems": "systems" 1375 1227 }, 1376 1228 "locked": { 1377 1229 "lastModified": 1701680307, ··· 1387 1239 "type": "github" 1388 1240 } 1389 1241 }, 1242 + "utils_2": { 1243 + "locked": { 1244 + "lastModified": 1653893745, 1245 + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", 1246 + "owner": "numtide", 1247 + "repo": "flake-utils", 1248 + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", 1249 + "type": "github" 1250 + }, 1251 + "original": { 1252 + "owner": "numtide", 1253 + "repo": "flake-utils", 1254 + "type": "github" 1255 + } 1256 + }, 1390 1257 "vim-tidal-src": { 1391 1258 "flake": false, 1392 1259 "locked": { 1393 - "lastModified": 1685703852, 1394 - "narHash": "sha256-8gyk17YLeKpLpz3LRtxiwbpsIbZka9bb63nK5/9IUoA=", 1260 + "lastModified": 1664252474, 1261 + "narHash": "sha256-hleiK2Q7xYndpB+tIbyyXIM2sk4NunUh9DPgMqmf/Wc=", 1395 1262 "owner": "tidalcycles", 1396 1263 "repo": "vim-tidal", 1397 - "rev": "e440fe5bdfe07f805e21e6872099685d38e8b761", 1264 + "rev": "b07f5c12986fb837e055d7fcf0acf3b7e248148f", 1398 1265 "type": "github" 1399 1266 }, 1400 1267 "original": { 1401 1268 "owner": "tidalcycles", 1269 + "ref": "master", 1402 1270 "repo": "vim-tidal", 1403 1271 "type": "github" 1404 1272 } ··· 1436 1304 }, 1437 1305 "original": { 1438 1306 "owner": "supercollider-quarks", 1307 + "ref": "master", 1439 1308 "repo": "vowel", 1440 - "type": "github" 1441 - } 1442 - }, 1443 - "xr-linux": { 1444 - "inputs": { 1445 - "flake-compat": "flake-compat_5", 1446 - "flake-utils": "flake-utils_4", 1447 - "nixpkgs": [ 1448 - "unstable" 1449 - ] 1450 - }, 1451 - "locked": { 1452 - "lastModified": 1746033220, 1453 - "narHash": "sha256-l4pISN7GDSL2o0BddkWtdCX4k4BjAaW0xwo5DbhfO8A=", 1454 - "owner": "shymega", 1455 - "repo": "XRLinuxDriver", 1456 - "rev": "c6cd02d547f87a156538c131e09ee4d41eb79325", 1457 - "type": "github" 1458 - }, 1459 - "original": { 1460 - "owner": "shymega", 1461 - "ref": "shymega/nix-flake-support", 1462 - "repo": "XRLinuxDriver", 1463 1309 "type": "github" 1464 1310 } 1465 1311 }
+23 -66
flake.nix
··· 1 1 { 2 - description = "Sealight NixOS Config"; 2 + description = "Your new nix config"; 3 3 4 4 inputs = { 5 5 # Nixpkgs 6 - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; 6 + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; 7 7 unstable.url = "github:nixos/nixpkgs/nixos-unstable"; 8 8 nixos-hardware.url = "github:NixOS/nixos-hardware/master"; 9 - 10 - # ngipkgs.url = "github:Chickensoupwithrice/ngipkgs?ref=aynish/atomic-server-module"; 11 - # ngipkgs-local.url = "path:/home/anish/usr/ngipkgs"; 12 9 13 10 # Home manager 14 11 home-manager.url = "github:nix-community/home-manager/release-25.05"; ··· 37 34 # Matrix 38 35 nix-matrix-appservices.url = "gitlab:coffeetables/nix-matrix-appservices"; 39 36 40 - # Jovian 41 - jovian = { 42 - url = "github:jovian-experiments/jovian-nixos"; 43 - inputs.nixpkgs.follows = "unstable"; 44 - }; 45 - # Breezy XR for Jovian 46 - xr-linux = { 47 - url = "github:shymega/XRLinuxDriver?ref=shymega/nix-flake-support"; 48 - inputs.nixpkgs.follows = "unstable"; 49 - }; 50 - breezy = { 51 - url = "github:shymega/breezy-desktop?ref=shymega/add-nix-flake-support"; 52 - inputs.nixpkgs.follows = "unstable"; 53 - }; 54 37 # OSX 55 38 darwin = { 56 - url = "github:LnL7/nix-darwin/master"; 39 + url = "github:nix-darwin/nix-darwin/nix-darwin-25.05"; 57 40 inputs.nixpkgs.follows = "nixpkgs"; 58 41 }; 59 42 nix-homebrew = { ··· 119 102 , homebrew-cask 120 103 , sourcegraph-src-cli-cask 121 104 , sg-nvim 122 - , jovian 123 - , breezy 124 - , xr-linux 125 105 , ... 126 106 }@inputs: 127 107 let ··· 187 167 # ]; 188 168 overlays = [ 189 169 agenix.overlays.default 190 - self.overlays.additions 191 - self.overlays.modifications 192 170 tidalcycles.overlays.default # needed for nvim which comes pre-installed lol 193 171 ]; 194 172 }); 195 173 196 - # for deck 197 - deckPkgsFor = forAllSystems (system: import unstable { 198 - inherit system; 199 - config = { 200 - allowUnfree = true; 201 - }; 202 - overlays = [ 203 - breezy.overlays.default 204 - xr-linux.overlays.default 205 - nur.overlay 206 - ]; 207 - }); 208 - 209 174 darwinSystems = [ "aarch64-darwin" "x86_64-darwin" ]; 210 175 in 211 176 { ··· 275 240 agenix.nixosModules.age 276 241 self.nixosModules.backup 277 242 self.nixosModules.wireguard 278 - self.nixosModules.wallabag 279 243 nixos-hardware.nixosModules.lenovo-thinkpad-x270 280 244 home-manager.nixosModules.home-manager 281 245 { ··· 297 261 agenix.nixosModules.age 298 262 self.nixosModules.backup 299 263 self.nixosModules.wireguard 300 - basant.nixosModule 301 264 # self.nixosModules.microbin 302 265 disko.nixosModules.disko 303 - { 304 - nixpkgs.flake.setNixPath = false; 305 - nixpkgs.flake.setFlakeRegistry = false; 306 - } 307 266 ]; 308 267 }; 309 268 ··· 326 285 ]; 327 286 }; 328 287 288 + cube = nixpkgs.lib.nixosSystem rec { 289 + specialArgs = { inherit inputs self; }; 290 + system = "x86_64-linux"; 291 + pkgs = litePkgsFor.${system}; 292 + modules = [ 293 + ./hosts/cube 294 + agenix.nixosModules.age 295 + self.nixosModules.backup 296 + self.nixosModules.wireguard 297 + basant.nixosModule 298 + ]; 299 + }; 300 + 329 301 box = nixpkgs.lib.nixosSystem rec { 330 302 specialArgs = { inherit inputs self; }; 331 303 system = "x86_64-linux"; ··· 336 308 self.nixosModules.backup 337 309 self.nixosModules.wireguard 338 310 self.nixosModules.gonic 339 - self.nixosModules.gpodder2go 340 311 self.nixosModules.wallabag 341 312 self.nixosModules.ulogger-server 342 313 grasp.nixosModule ··· 349 320 } 350 321 ]; 351 322 }; 352 - 353 - deck = unstable.lib.nixosSystem rec { 354 - specialArgs = { inherit inputs self; }; 355 - system = "x86_64-linux"; 356 - pkgs = deckPkgsFor.${system}; 357 - modules = [ 358 - ./hosts/deck 359 - jovian.nixosModules.default 360 - self.nixosModules.wireguard 361 - agenix.nixosModules.age 362 - self.nixosModules.backup 363 - home-manager.nixosModules.home-manager 364 - { 365 - nix.registry.nixpkgs.flake = unstable; 366 - home-manager.useGlobalPkgs = true; 367 - home-manager.useUserPackages = true; 368 - home-manager.users.anish = import ./home/gui; 369 - } 370 - ]; 371 - }; 372 323 }; 373 324 374 325 # Standalone home-manager configuration entrypoint ··· 389 340 hostname = "mossnet.lan"; 390 341 autoRollback = false; 391 342 magicRollback = false; 392 - remoteBuild = true; 393 343 profiles.system = { 394 344 user = "root"; 395 345 path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.box; ··· 410 360 profiles.system = { 411 361 user = "root"; 412 362 path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.helix; 363 + }; 364 + }; 365 + cube = { 366 + hostname = "lakhwara.com"; 367 + profiles.system = { 368 + user = "root"; 369 + path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cube; 413 370 }; 414 371 }; 415 372 };
+2 -1
home/core/default.nix
··· 1 1 { self, pkgs, ... }: 2 2 { 3 3 imports = [ 4 - ../profiles/nvim 4 + # ../profiles/nvim 5 5 ../profiles/cli 6 6 ../profiles/direnv 7 7 ../profiles/git 8 + ../profiles/task 8 9 ]; 9 10 home.stateVersion = "22.05"; 10 11 }
+1 -1
home/darwin/default.nix
··· 14 14 home.homeDirectory = "/Users/anishlakhwara"; 15 15 home.stateVersion = "22.05"; 16 16 17 - programs.zsh.initExtra = '' 17 + programs.zsh.initContent = '' 18 18 PATH=/Users/anishlakhwara/.sourcegraph/bin:/Users/anishlakhwara/.sourcegraph/sg.zsh_autocomplete:/Users/anishlakhwara/google-cloud-sdk/bin:/Users/anishlakhwara/google-cloud-sdk/completion.zsh.inc:/Users/anishlakhwara/google-cloud-sdk/path.zsh.inc:/Users/anishlakhwara/.sg:/opt/homebrew/bin:$PATH 19 19 ''; 20 20
-1
home/gui/default.nix
··· 2 2 { 3 3 imports = [ 4 4 ../core 5 - ../profiles/nvim 6 5 ../profiles/firefox 7 6 ../profiles/desktop 8 7 ../profiles/email
+11 -15
home/profiles/cli/default.nix
··· 1 1 { lib, pkgs, config, ... }: 2 2 { 3 3 home.packages = with pkgs; [ 4 - # unstable.claude-code 4 + #unstable.claude-code 5 5 binutils 6 6 # coreutils 7 7 dnsutils ··· 9 9 dosfstools 10 10 # git 11 11 git-machete 12 - git-spice 13 - # jujitsu 14 12 asciinema 15 13 bottom 16 14 gptfdisk ··· 37 35 iftop 38 36 wget 39 37 curl 40 - eza 38 + eza 41 39 bat 42 40 fd 43 - ncdu 44 - du-dust 45 - # dia-cli 41 + # ncdu 46 42 duf 47 43 trash-cli 48 44 nix-index ··· 69 65 taskwarrior-tui 70 66 zk 71 67 diffnav 68 + jujutsu 69 + git-spice 72 70 73 71 # llms (needs 24.11) 74 72 aider-chat ··· 141 139 enableCompletion = true; 142 140 autosuggestion.enable = false; 143 141 144 - initExtra = '' 142 + initContent = '' 143 + bindkey -v 145 144 autopair-init 146 145 ''; 147 146 sessionVariables = { ··· 229 228 230 229 # modern cli tools 231 230 ls = "eza --icons"; 232 - l = "esa -l --icons"; 231 + l = "eza -l --icons"; 233 232 la = "eza -la --icons"; 234 233 tree = "ls --tree --icons"; 235 234 cat = "bat"; ··· 241 240 make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;"; 242 241 243 242 # task warrior 243 + # TODO: make blocked a context? 244 244 t = "task -BLOCKED -idea -backlog"; 245 - tw = "t rc.context:work"; 246 - # TODO find a reasonable way to manage this from a non-nix managed file in ~/.task/context or something 247 - # we can do something like task rc.context:$(cat ~/.task/context) to read context 248 - # and write a little script make-context = cat $@ > ~/.task/context or something 249 245 tt = "taskwarrior-tui -r list"; 250 246 ti = "task +idea"; 251 247 tb = "task +backlog list"; 252 248 ttb = "taskwarrior-tui -r backlog"; 253 249 tr = "task newest limit:page"; 254 - twait = "task +wait"; 250 + tw = "task +wait"; 255 251 ta = "task add"; 256 252 tai = "task add +idea"; 257 253 tn = "task-note"; ··· 288 284 srch = "ns nixpkgs"; 289 285 orch = "ns override"; 290 286 nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/home/anish/usr/helm#curve'; cd $OLDPWD"; 291 - nrd = "cd /tmp; NIXPKGS_ALLOW_UNFREE=1 darwin-rebuild switch --flake /Users/anishlakhwara/usr/helm#Anishs-MacBook-Pro --impure; cd $OLDPWD"; 287 + nrd = "cd /tmp; NIXPKGS_ALLOW_UNFREE=1 sudo darwin-rebuild switch --flake /Users/anishlakhwara/usr/helm#Anishs-MacBook-Pro --impure; cd $OLDPWD"; 292 288 nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD"; 293 289 ned = "cd /home/anish/usr/helm; vim; cd $OLDPWD"; 294 290 ncd = "cd /home/anish/usr/helm";
home/profiles/desktop/Xresources
+2 -2
home/profiles/desktop/bspwmrc
··· 6 6 # esac 7 7 8 8 export MONITOR=$(xrandr -q | grep primary | cut -d' ' -f1) 9 - export MONITORS=($(xrandr -q | grep ' connected' | cut -d' ' -f1)) 9 + export MONITORS=( $(xrandr -q | grep ' connected' | cut -d' ' -f1) ) 10 10 MONITOR=${MONITOR:-${MONITORS[0]}} 11 11 12 12 # Only have workspaces for primary monitor ··· 26 26 bspc config focused_border_color "#bd93f9" 27 27 bspc config presel_feedback_color "#bd93f9" 28 28 29 - bspc config split_ratio 0.71 29 + bspc config split_ratio 0.71 30 30 31 31 # Extra padding for polybar 32 32 bspc config -m primary top_padding 34
+7 -4
home/profiles/desktop/default.nix
··· 22 22 paper-icon-theme 23 23 papirus-icon-theme 24 24 libsForQt5.qtstyleplugin-kvantum 25 - # qt5ct 25 + qt5ct 26 26 gtk-engine-murrine 27 27 gtk_engines 28 28 maim ··· 30 30 inotify-tools 31 31 offpunk 32 32 termpdfpy 33 - # libsForQt5.kontact 34 - # thunderbird 33 + libsForQt5.kontact 34 + thunderbird 35 35 ]; 36 36 37 37 # GTK4 color scheme? ··· 99 99 ".local/bin/mpv-ify".source = ./bin/mpv-ify; 100 100 ".local/bin/bspswallow".source = ./bin/bspswallow; 101 101 ".config/bspwm/terminals".text = "Kitty"; 102 + ".config/eww/eww.yuck".source = ./eww/eww.yuck; 103 + ".config/eww/eww.scss".source = ./eww/eww.scss; 104 + ".config/eww/widgets.yuck".source = ./eww/widgets.yuck; 102 105 # ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh; 103 106 }; 104 107 ··· 120 123 121 124 qt = { 122 125 enable = true; 123 - platformTheme.name = "gtk"; 126 + platformTheme = "gtk"; 124 127 style = { name = "qt5ct-style"; }; 125 128 }; 126 129
home/profiles/desktop/polybar/run.sh
+1 -1
home/profiles/email/default.nix
··· 175 175 bind editor ^T complete 176 176 177 177 # Press A to archive 178 - macro index,pager A "<clear-flag><save-message>=/Archive" "mark message as Archived" 178 + macro index,pager A "<clear-flag>N<save-message>=/Archive" "mark message as Archived" 179 179 # Press C to add contact to Khard address book 180 180 macro index,pager C \ 181 181 "<pipe-message>khard add-email<return>" \
+1 -1
home/profiles/firefox/default.nix
··· 21 21 extensions = with pkgs.nur.repos.rycee.firefox-addons; [ 22 22 # Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix 23 23 ublock-origin 24 - # wallabagger 24 + wallabagger 25 25 # tree-style-tab 26 26 tridactyl 27 27 promnesia
+4 -1
home/profiles/git/default.nix
··· 12 12 userName = "Anish Lakhwara"; 13 13 userEmail = "anish+git@lakhwara.com"; 14 14 delta.enable = true; 15 - # TODO enable signing 15 + signing = { 16 + signByDefault = true; 17 + key = "7FC5DF072EF7B716"; 18 + }; 16 19 17 20 ignores = [ 18 21 "*~"
-4
home/profiles/nvim/config/after/syntax/vimwiki.vim
··· 1 - " match with %update 2 - syntax match VimwikiPlaceholder /^\s*%update\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite 3 - " match with %link 4 - syntax match VimwikiPlaceholder /^\s*%link\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
-11
home/profiles/nvim/config/fnl/conf/formatting.fnl
··· 1 - (import-macros {: do-req } :lib/macros) 2 - 3 - (do-req :conform :setup 4 - {:formatters_by_ft {:lua ["stylua"] 5 - :nix ["nixfmt"] 6 - ; :go ["goimports" "gofmt"] ; Go handled in special case 7 - :terraform ["terraform_fmt"] 8 - :sh ["shfmt"] 9 - :bazel ["buildifier"]} 10 - :format_on_save {:lsp_format "fallback" 11 - :timeout_ms 500}})
-51
home/profiles/nvim/config/fnl/conf/init.fnl
··· 1 - (local nvim (require :lib/nvim)) 2 - 3 - (nvim.g :mapleader " ") 4 - 5 - ; (nvim.opt :runtimepath (.. vim.opt.runtimepath "/home/anish/.config/nvim/,")) 6 - (nvim.opt :tabstop 2) 7 - (nvim.opt :showmatch true) 8 - (nvim.opt :shiftwidth 2) 9 - (nvim.opt :autoindent true) 10 - (nvim.opt :undofile true) 11 - (nvim.opt :signcolumn "auto:4") 12 - (nvim.opt :title true) 13 - (nvim.opt :number true) 14 - ; (nvim.opt :nocompatible) 15 - (nvim.opt :relativenumber true) 16 - (nvim.opt :showtabline 2) 17 - (nvim.opt :expandtab true) 18 - (nvim.opt :autowriteall true) 19 - (nvim.opt :cmdheight 2) 20 - (nvim.opt :spelllang "en_gb") 21 - (nvim.opt :ignorecase true) 22 - (nvim.opt :smartcase true) 23 - (nvim.opt :incsearch true) 24 - (nvim.opt :updatetime 300) ; Diagnostics response time 25 - (nvim.opt :signcolumn "yes") 26 - (nvim.opt :cursorline true) 27 - 28 - (nvim.opt :lisp true) ; include - in word to move better in snake-case) 29 - (nvim.g :sexp_filetypes "clojure,scheme,lisp,janet,fennel,yuck") ; include the lisps I use 30 - 31 - (nvim.opt :termguicolors) 32 - (nvim.colorscheme "ayu-mirage") 33 - 34 - (require :conf.plugins) 35 - (require :conf.mappings) 36 - (require :conf.lsp) 37 - (require :conf.plugins.cmp) 38 - (require :conf.formatting) 39 - ; (require :conf.kitaab) 40 - 41 - ; Spelling 42 - (vim.api.nvim_create_autocmd ["BufRead" "BufNewFile"] 43 - {:pattern ["*.wiki" "*.txt" "*.md" "*.tex"] 44 - :command "setlocal spell"}) 45 - (vim.api.nvim_create_autocmd ["FileType"] 46 - {:pattern ["mail"] 47 - :command "setlocal spell"}) 48 - 49 - ; Svelte 50 - (vim.api.nvim_create_autocmd ["BufNewFile" "BufRead"] {:pattern ["*.svelte"] 51 - :command "setf svelte"})
-99
home/profiles/nvim/config/fnl/conf/lsp.fnl
··· 1 - (import-macros {: do-req } :lib/macros) 2 - (local lspkind (require :lspkind)) 3 - (local lspconfig (require :lspconfig)) 4 - ; (local lspsaga (require :lspsaga)) 5 - (local cmp (require :cmp)) 6 - (local nvim (require :lib/nvim)) 7 - ; (local lspfuzzy (require :lspfuzzy)) ; Not available on Nix 8 - ; (local sg (require :sg)) 9 - ; (local lsputil (require :lspconfig/util)) 10 - 11 - ;(lspsaga.setup {:border_style "rounded" 12 - ; :code_action_icon "" 13 - ; :code_action_num_shortcut false 14 - ; :ui {:code_action ""} 15 - ; :show_outline {:enable false})) 16 - ; 17 - ;(nvim.opt :winbar nil) 18 - 19 - (local signs {:Error "๎ช‡ " 20 - :Warn "๏ฑ " 21 - :Hint "๏™ " 22 - :Info "๏‘‰ "}) 23 - (each [t icon (pairs signs)] 24 - (let [hl (.. "DiagnosticSign" t)] 25 - (vim.fn.sign_define hl {:text icon 26 - :texthl hl 27 - :numhl hl}))) 28 - 29 - (tset vim.lsp.handlers 30 - :textDocument/hover 31 - (vim.lsp.with vim.lsp.handlers.hover 32 - {:focusable false :border "rounded"})) 33 - (tset vim.lsp.handlers 34 - :textDocument/signatureHelp 35 - (vim.lsp.with vim.lsp.handlers.signature_help 36 - {:focusable false :border "rounded"})) 37 - 38 - (local capabilities (let [cmp_nvim_lsp (require :cmp_nvim_lsp)] 39 - (cmp_nvim_lsp.default_capabilities))) 40 - 41 - (local formatting-augroup (nvim.augroup :LspFormatting)) 42 - 43 - (fn goimports [wait-ms] 44 - (let [params (vim.lsp.util.make_range_params) 45 - result (do 46 - (tset params :context {:only [:source.organizeImports]}) 47 - (vim.lsp.buf_request_sync 0 :textDocument/codeAction params wait-ms))] 48 - (each [_ res (pairs (or result {}))] 49 - (each [_ r (pairs (or res.result {}))] 50 - (if r.edit 51 - (vim.lsp.util.apply_workspace_edit r.edit "utf-16") 52 - (vim.lsp.buf.execute_command r.command)))) 53 - (vim.lsp.buf.format))) 54 - 55 - (fn on-attach [client bufnr] 56 - (let [filetype (vim.api.nvim_buf_get_option 0 "filetype")] 57 - (if (client.supports_method "textDocument/formatting") 58 - (do (nvim.autocmd "BufWritePre" 59 - {:group formatting-augroup 60 - :buffer bufnr 61 - :callback (fn [_] (if (= filetype "go") 62 - (goimports 2000) 63 - (vim.lsp.buf.format {:bufnr bufnr})))}))))) 64 - 65 - (lspconfig.gopls.setup 66 - {:capabilities capabilities 67 - :codelens {:generate true :gc_details true} 68 - :semanticTokens true 69 - :flags {:debounce_text_changes 200} 70 - :analyses {:unusedparams true 71 - :unusedvariables true 72 - :unusedwrite true 73 - :nilness true 74 - :unusedwrite true 75 - :useany true} 76 - :completeUnimported true 77 - :staticcheck true 78 - :experimentalPostfixCompletions true 79 - :hints {:constantValues true 80 - :functionTypeParameters true 81 - :assignVariablesTypes true 82 - :compositeLiteralTypes true 83 - :compositeLiteralFields true 84 - :parameterNames true 85 - :rangeVariableTypes true} 86 - :on_attach on-attach}) 87 - 88 - (local lsps [:nil_ls :terraform_lsp :fennel_ls :tsserver :starbin]) 89 - (each [index lsp (ipairs lsps)] 90 - ((. (. lspconfig lsp) :setup) {})) 91 - 92 - ; null-ls 93 - (let [null-ls (require :null-ls)] 94 - (null-ls.setup {:sources [; TODO fix these 95 - ;null-ls.builtins.diagnostics.shellcheck 96 - null-ls.builtins.diagnostics.commitlint]})) 97 - ;null-ls.builtins.diagnostics.jsonlint]})) 98 - ;(null-ls.builtins.diagnostics.proselint.with {:filetypes ["vimwiki" "mail"]})]})) 99 -
-140
home/profiles/nvim/config/fnl/conf/mappings.fnl
··· 1 - (local nvim (require :lib/nvim)) 2 - (import-macros {: do-req } :lib/macros) 3 - 4 - (local wk (require :which-key)) 5 - 6 - ;; Convenient way to indent stuff in visual mode 7 - (nvim.keymap [:v] "<" "<gv" {:noremap true}) 8 - (nvim.keymap [:v] ">" ">gv" {:noremap true}) 9 - (nvim.keymap [:n] "<space>" "<NOP>" {:noremap true :silent true}) 10 - ;; Convenient way to move stuff in visual mode 11 - (nvim.keymap [:v] "J" ":m '>+1<CR>gv=gv" {:noremap true}) 12 - (nvim.keymap [:v] "K" ":m '>-2<CR>gv=gv" {:noremap true}) 13 - ;; Convientent screen shifting 14 - (nvim.keymap [:n] "n" "nzzzv" {:noremap true}) 15 - (nvim.keymap [:n] "N" "Nzzzv" {:noremap true}) 16 - (nvim.keymap [:n] "J" "mzJ'z" {:noremap true}) 17 - ; Fix Y 18 - (nvim.keymap [:n] "Y" "y$") 19 - ; Unmap Q 20 - (nvim.keymap [] "Q" "<Nop>") 21 - ; TODO 22 - ; ESC clears search 23 - ; (nvim.keymap [:n] "<ESC>" "") 24 - 25 - ; FTerm 26 - (vim.api.nvim_create_user_command "FTermToggle" (fn [_] 27 - ((-> (require :FTerm) 28 - (. :toggle)))) 29 - {:bang true}) 30 - (nvim.keymap [:t] "<TAB>" "<cmd>:FTermToggle<CR>") 31 - (nvim.keymap [:n] "<TAB>" "<cmd>:FTermToggle<CR>" {:noremap true}) 32 - 33 - ; Buffer Movement 34 - (nvim.keymap [:n] "gT" ":BufferPrevious<CR>" {:silent true :noremap true}) 35 - (nvim.keymap [:n] "gt" ":BufferNext<CR>" {:silent true :noremap true}) 36 - (nvim.keymap [:n] "gj" ":BufferPick<CR>" {:silent true :noremap true}) 37 - (nvim.keymap [:n] "gb" ":Telescope buffers<CR>" {:silent true :noremap true}) 38 - (nvim.keymap [:n] "gq" ":BufferClose<CR>" {:silent true :noremap true}) 39 - 40 - ; Flash 41 - (vim.api.nvim_create_user_command "Flash" (fn [_] (do-req :flash :jump)) {}) 42 - (vim.api.nvim_create_user_command "FlashTreesitter" (fn [] (do-req :flash :treesitter)) {}) 43 - (nvim.keymap [:n] "f" "<cmd>Flash<CR>") 44 - (nvim.keymap [:n] "s" "<cmd>FlashTreesitter<CR>") 45 - 46 - (local 47 - normal-map-leader 48 - {"t" [":Neotree toggle<CR>" 49 - "Toggle neo-tree"] 50 - "w" ["<cmd>:w<cr>" 51 - "Write file"] 52 - "q" ["<cmd>:q<cr>" 53 - "Quit"] 54 - "r" [":RainbowParenthesesToggleAll<CR>" 55 - "Toggle Rainbow Parens"] 56 - "u" [":UndotreeToggle<CR>" 57 - "Toggle Undo Tree"] 58 - ; Telescope 59 - "f" {:name "Files" 60 - :f ["<cmd>Telescope find_files<cr>" 61 - "Find Files (in Telescope)"] 62 - :g ["<cmd>Telescope live_grep<cr>" 63 - "Find Grep (in Telescope)"] 64 - :b ["<cmd>Telescope buffers<cr>" 65 - "Find Buffers"] 66 - :h ["<cmd>Telescope help_tags<cr>" 67 - "Find Help"] 68 - :t ["<cmd>Telescope tags<cr>" 69 - "Find Tags"] 70 - :r ["<cmd>Telescope oldfiles<CR>" 71 - "Recent files"]} 72 - ; Git 73 - "g" {:name "Git" 74 - "s" [":G<CR>" 75 - "Git Status"] 76 - "f" [":G fetch --all<cr>" 77 - "Git Fetch"] 78 - "b" [":GBranches<cr>" 79 - "Git Branch"] 80 - "p" [":Git! push<cr>" 81 - "Git Push"] 82 - "d" [":GDiff<cr>" 83 - "Git Diff"] 84 - "h" ["" 85 - "Commit Hunk under Cursor"]} 86 - ; For handling merges 87 - ; nmap <leader>gl :diffget //3<CR> 88 - ; nmap <leader>gh :diffget //2<CR> 89 - ; nnoremap <leader>gc :G commit -v -q %:p<CR> 90 - ; Buffers 91 - "b" {:name "Buffer" 92 - :b ["<cmd>:Telescope buffers<CR>" 93 - "Buffer List"] 94 - :q ["<cmd>:BufferClose<CR>" 95 - "Buffer Quit"] 96 - :n ["<cmd>:BufferNext<CR>" 97 - "Buffer Next"] 98 - :N ["<cmd>:tabp<CR>" 99 - "Buffer Previous"] 100 - :p ["<cmd>:tabp<CR>" 101 - "Buffer Previous"]} 102 - ; Search 103 - "s" {:name "Search" 104 - :b ["<cmd>Telescope current_buffer_fuzzy_find<CR>" 105 - "Search in current buffer"] 106 - :s ["<cmd>Telescope live_grep<CR>" 107 - "Search in project"] 108 - :t ["<cmd>TodoTelescope<CR>" 109 - "Search TODOs in project"] 110 - :c ["<cmd>let @/ = \"\"<CR>:echo 'Search highlight cleared'<CR>" 111 - "Clear search"] 112 - :g ["<cmd>Telescope live_grep<cr>" 113 - "Find Grep (in Telescope)"]} 114 - ; Code 115 - "c" {:name "Code" 116 - :d [":lua vim.lsp.buf.definition()<CR>" 117 - "Go to Definition"] 118 - :i [":lua require('telescope.builtin').lsp_implementation()<CR>" 119 - "Implementation"] 120 - :s [":lua vim.lsp.buf.signature_help()<CR>" 121 - "Signature Help"] 122 - :r [":Lspsaga rename<CR>" 123 - "Rename Symbol"] 124 - :h [":Lspsaga hover_doc<CR>" 125 - "Hover doc"] 126 - :o ["<cmd>AerialToggle!<CR>" 127 - "Outline"] 128 - :t [":LspDiagnostics 0" 129 - "Find Errors in Buffer"]} 130 - ; Kitaab 131 - "z" {:name "Kitaab" 132 - :n [":ZettelNew<CR>" 133 - "Zettel New"]} 134 - "v" {:name "Tabs" 135 - :v [":vnew<CR>" 136 - "Vertical Split"] 137 - :h [":new<CR>" 138 - "Horizontal Split"]}}) 139 - 140 - (wk.register normal-map-leader {:prefix "<leader>"})
-30
home/profiles/nvim/config/fnl/conf/music.fnl
··· 1 - (local nvim (require :lib/nvim)) 2 - 3 - (nvim.g :tidal_target "terminal") 4 - (nvim.g :scnvim_snippet_format "luasnip") 5 - 6 - ; -- supercollider 7 - ; local scnvim = require 'scnvim' 8 - ; local map = scnvim.map 9 - ; local map_expr = scnvim.map_expr 10 - ; scnvim.setup { 11 - ; keymaps = { 12 - ; ['<localleader>e'] = map('editor.send_line', {'i', 'n'}), 13 - ; ['<localleader>s'] = map_expr('CmdPeriod.run', {'i', 'n'}), 14 - ; ['<localleader>t'] = { 15 - ; map('editor.send_block', {'i', 'n'}), 16 - ; map('editor.send_selection', 'x'), 17 - ; }, 18 - ; ['<CR>'] = map('postwin.toggle'), 19 - ; ['<M-CR>'] = map('postwin.toggle', 'i'), 20 - ; ['<M-L>'] = map('postwin.clear', {'n', 'i'}), 21 - ; ['<C-k>'] = map('signature.show', {'n', 'i'}), 22 - ; ['<F12>'] = map('sclang.hard_stop', {'n', 'x', 'i'}), 23 - ; ['<leader>st'] = map('sclang.start'), 24 - ; ['<leader>sk'] = map('sclang.recompile'), 25 - ; ['<F1>'] = map_expr('s.boot'), 26 - ; ['<F2>'] = map_expr('s.meter'), 27 - ; } 28 - ; } 29 - ; -- You gotta run :SCNvimGenerateAssets for this first 30 - ; -- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets())
-35
home/profiles/nvim/config/fnl/conf/plugins/cmp.fnl
··· 1 - (local cmp (require :cmp)) 2 - 3 - (fn has-words-before [] 4 - (let [(line col) (unpack (vim.api.nvim_win_get_cursor 0)) 5 - cur-line (. (vim.api.nvim_buf_get_lines 0 6 - (- line 1) 7 - line 8 - true 9 - 1))] 10 - (and (not= col 0) 11 - (= (: (: cur-line :sub col col) :match "%s") 12 - nil)))) 13 - 14 - (let [lspkind (require :lspkind)] 15 - (cmp.setup {:formatting {:format (lspkind.cmp_format {:mode "symbol_text" 16 - :maxwidth 50}) 17 - :show_labelDetails true} 18 - :snippet {:expand (fn [args] (vim.snippet.expand args.body))} 19 - :sources [{:name "buffer"} {:name "nvim_lsp"} 20 - {:name "look"} {:name "path"} 21 - {:name "calc"} {:name "spell"} 22 - {:name "tags"}] 23 - :mapping {"<C-d>" (cmp.mapping.scroll_docs -4) 24 - "<C-u>" (cmp.mapping.scroll_docs 4) 25 - "<C-g>" (cmp.mapping.close) 26 - "<CR>" (cmp.mapping.confirm {:select true}) 27 - "<Tab>" (cmp.mapping (fn [fallback] 28 - (if (cmp.visible) (cmp.select_next_item) 29 - (has-words-before) (cmp.complete) 30 - (fallback))) 31 - [:i :s]) 32 - "<S-Tab>" (cmp.mapping (fn [fallback] 33 - (if (cmp.visible) (cmp.select_prev_item) 34 - (fallback))) 35 - [:i :s])}}))
-38
home/profiles/nvim/config/fnl/conf/plugins/kitaab.fnl
··· 1 - ; Kitaab is why I'm so tied to vim. 2 - ; If only I could find a nice notes editor... 3 - 4 - (local nvim (require :lib/nvim)) 5 - 6 - (import-macros {: do-req } :lib/macros) 7 - 8 - (nvim.g :vimwiki_list [{:path "~/kitaab/vimwiki" 9 - :auto_tags 1 10 - :auto_diary_index 1 11 - :auto_generate_links 0 12 - :nested_syntaxes {:python "python" 13 - :c++ "cpp" 14 - :nix "nix" 15 - :bash "sh"}}]) 16 - (nvim.g :zettel_format "%y%m%d-%H%M") 17 - 18 - ; Custom functions 19 - (fn update_date [] 20 - (var written false) 21 - (let [time (os.date "%Y-%m-%d %H:%M") 22 - message (.. "%update " time) 23 - lines (vim.api.nvim_buf_get_lines 0 0 4 false)] 24 - (each [index line (ipairs lines)] 25 - (if (and (= (length line) 0) (not written)) 26 - (do 27 - (vim.api.nvim_buf_set_lines 0 (- index 1) index false [message ""]) 28 - (set written true))) 29 - (if (and (= index 4) (not written)) 30 - (vim.api.nvim_buf_set_lines 0 3 index false [message]))))) 31 - 32 - ; Custom function for inserting links through telescope grep_search 33 - ; Visual mode too! 34 - 35 - (vim.api.nvim_create_autocmd "BufWritePre" {:pattern ["*.wiki"] 36 - :callback update_date}) 37 - 38 - (do-req :hologram :setup {:auto_display false})
-47
home/profiles/nvim/config/fnl/conf/plugins.fnl
··· 1 - (local nvim (require :lib/nvim)) 2 - (local navic (require :nvim-navic)) 3 - 4 - (import-macros {: do-req } :lib/macros) 5 - 6 - (let [lualine (require :lualine)] 7 - (lualine.setup {:options {:theme "ayu"} 8 - :sections {; :lualine_c [:filename (fn [] 9 - ; (let [lspsaga (require :lspsaga.symbol.winbar)] 10 - ; (lspsaga.get_bar)) 11 - :lualine_y [(fn [] 12 - (var msg "No Active LSP") 13 - (let [buf_ft (vim.api.nvim_buf_get_option 0 "filetype") 14 - clients (vim.lsp.get_active_clients)] 15 - (each [_ client (ipairs clients)] 16 - (let [filetypes (. client :config :filetypes)] 17 - (if (and filetypes (vim.fn.index filetypes buf_ft)) (set msg client.name)))) 18 - msg))] 19 - :lualine_x [:filetype]}})) 20 - 21 - (require :neo-tree) 22 - (do-req :gitsigns :setup) 23 - (do-req :marks :setup) 24 - ; (do-req :mini.pairs :setup) 25 - (do-req :mini.diff :setup) 26 - (do-req :mini.ai :setup) 27 - (do-req :mini.surround :setup {:mappings {:add "ys" 28 - :delete "ds" 29 - :replace "cs"}}) 30 - (do-req :todo-comments :setup) 31 - (do-req :ibl :setup {:scope {:exclude {:language ["fennel" "clojure" "janet"]}}}) 32 - 33 - (do-req :nvim-treesitter.configs :setup {:highlight {:enable true} 34 - :textobjects {:enable true} 35 - :indent {:enable true}}) 36 - (do-req :treesitter-context :setup {:max_lines 5}) 37 - 38 - (do-req :auto-session :setup {:log_level "info" 39 - :auto_session_suppress_dirs ["~/"]}) 40 - (nvim.opt :sessionoptions "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions") 41 - 42 - (do-req :aerial :setup {}) ;{:on_attach (fn [bufnr] 43 - ; (do 44 - ; (vim.keymap.set "n" "{" "<cmd>AerialPrev<CR>" { :buffer bufnr}) 45 - ; (vim.keymap.set "n" "}" "<cmd>AerialNext<CR>" { :buffer bufnr})) 46 - 47 - (do-req :zk :setup)
-8
home/profiles/nvim/config/fnl/lib/macros.fnl
··· 1 - ;; fennel-ls: macro-file 2 - 3 - (fn do-req [mod key ...] 4 - `(let [name# (require ,mod) 5 - fun# (. name# ,key)] 6 - (fun# ,...))) 7 - 8 - {: do-req}
-37
home/profiles/nvim/config/fnl/lib/nvim.fnl
··· 1 - (fn autocmd [events opts] 2 - "Create autocommand" 3 - (vim.api.nvim_create_autocmd events opts)) 4 - 5 - (fn clear-autocmds [opts] 6 - "Clear autocommands" 7 - (vim.api.nvim_clear_autocmds opts)) 8 - 9 - (fn augroup [name ?opts] 10 - "Create autocommand group" 11 - (vim.api.nvim_create_augroup name (or ?opts {}))) 12 - 13 - (fn keymap [mode lhs rhs ?opts] 14 - "Sets a global mapping for the given mode. 15 - Ex: `(keymap [:n :i] ...)`" 16 - (let [string-mode (table.concat mode)] 17 - (vim.api.nvim_set_keymap string-mode lhs rhs (or ?opts {})))) 18 - 19 - (fn opt [key value] 20 - "Set a vim option" 21 - (tset vim.opt key value)) 22 - 23 - (fn g [key value] 24 - "Set a vim global" 25 - (tset vim.g key value)) 26 - 27 - (fn colorscheme [name] 28 - "Set the current colorscheme" 29 - (vim.cmd (.. "colorscheme " name))) 30 - 31 - {: autocmd 32 - : clear-autocmds 33 - : augroup 34 - : keymap 35 - : opt 36 - : g 37 - : colorscheme}
-26
home/profiles/nvim/config/init.lua
··· 1 - if pcall(require, "hotpot") then 2 - -- Setup hotpot.nvim 3 - require("hotpot").setup({ 4 - provide_require_fennel = true, 5 - -- show fennel compiler results in when editing fennel files 6 - enable_hotpot_diagnostics = true, 7 - compiler = { 8 - -- options passed to fennel.compile for modules, defaults to {} 9 - modules = { 10 - -- not default but recommended, align lua lines with fnl source 11 - -- for more debuggable errors, but less readable lua. 12 - correlate = true 13 - }, 14 - macros = { 15 - -- allow macros to access vim global, needed for nyoom modules 16 - env = "_COMPILER", 17 - compilerEnv = _G, 18 - allowGlobals = true, 19 - }, 20 - } 21 - }) 22 - -- Import neovim configuration 23 - require("conf") 24 - else 25 - print("Unable to require hotpot") 26 - end
+4 -132
home/profiles/nvim/default.nix
··· 1 1 { pkgs, ... }: 2 - # TODO Need to find a solution to have my own packages? 3 - # Or at least update to recent versions of the packages I do use in nixpkgs 4 2 { 5 3 home.sessionVariables.EDITOR = "nvim"; 6 4 home.shellAliases = { 7 - vim = "nvim"; 8 5 k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD"; 9 - # kitaab zettel 10 - kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD"; 11 - # kitaab get by tagged 12 - kt = 13 - "cd /home/anish/kitaab/vimwiki; eza *_index.wiki | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD"; 14 6 }; 15 7 16 - home.file.".config/nvim".source = ./config; 17 - 18 8 programs.neovim = { 19 9 enable = true; 10 + package = pkgs.unstable.neovim-unwrapped; 20 11 extraPackages = with pkgs; [ 21 - # used to compile tree-sitter grammar 22 - # python-with-my-packages 23 - # nodejs 24 - # clojure-lsp 25 - # clojure 26 - # clj-kondo 27 - terraform-lsp 28 - nil 29 - gopls 30 - gcc 31 - shellcheck 32 - shfmt 33 - proselint 34 - nixfmt 35 - # statix 36 - # nodePackages.typescript 37 - # nodePackages.typescript-language-server 38 - # luajitPackages.lua-lsp 39 - fennel-ls 12 + # used for Cody 13 + nodejs 40 14 ]; 41 15 42 - plugins = with pkgs.vimPlugins; 43 - [ 44 - #hotpot 45 - hotpot-nvim 46 - nvim-navic 47 - # ui 48 - lualine-nvim 49 - neo-tree-nvim 50 - fzf-vim 51 - vim-devicons 52 - nvim-web-devicons 53 - telescope-nvim 54 - plenary-nvim 55 - FTerm-nvim 56 - barbar-nvim 57 - neovim-ayu 58 - rainbow_parentheses-vim 59 - auto-session 60 - which-key-nvim 61 - aerial-nvim 62 - todo-comments-nvim 63 - indent-blankline-nvim 64 - nvim-parinfer 65 - 66 - # Tree sitter 67 - (nvim-treesitter.withPlugins (p: [ 68 - p.nix 69 - p.clojure 70 - p.fennel 71 - p.lua 72 - p.html 73 - p.css 74 - p.regex 75 - p.supercollider 76 - p.beancount 77 - p.markdown_inline 78 - p.markdown 79 - p.glsl 80 - p.yaml 81 - p.toml 82 - p.dockerfile 83 - p.json 84 - p.go 85 - p.svelte 86 - p.javascript 87 - p.janet-simple 88 - p.starlark 89 - ])) 90 - nvim-treesitter-context 91 - nvim-treesitter-textobjects 92 - 93 - # TODO 94 - undotree 95 - marks-nvim 96 - 97 - # language 98 - vim-nix 99 - emmet-vim 100 - csv-vim 101 - direnv-vim 102 - vim-svelte 103 - # conjure 104 - 105 - # kitaab stuff 106 - vimwiki 107 - vim-zettel 108 - hologram-nvim 109 - zk-nvim 110 - 111 - # lsp stuff 112 - nvim-lspconfig 113 - nvim-cmp 114 - cmp-nvim-lsp 115 - cmp-treesitter 116 - # cmp-conjure 117 - cmp-buffer 118 - cmp-path 119 - cmp-spell 120 - lspkind-nvim 121 - conform-nvim 122 - none-ls-nvim 123 - mini-nvim 124 - # nvim-lspfuzzy 125 - 126 - # git stuff 127 - vim-fugitive 128 - gitsigns-nvim 129 - fzf-checkout-vim 130 - 131 - # Clojure stuff 132 - # conjure 133 - vim-sexp 134 - vim-sexp-mappings-for-regular-people 135 - fennel-vim 136 - 137 - # nvim-luapad 138 - # scnvim 139 - flash-nvim 140 - vim-beancount 141 - ]; # ++ [ pkgs.vimPlugins.vim-tidal ]; 142 - # withPython3 = true; 143 - # extraPython3Packages = pkgs: with pkgs; [ tasklib six ]; 144 - # vimAlias = true; 16 + vimAlias = true; 145 17 }; 146 18 } 147 19
home/profiles/task/bin/set-backlog.sh
home/profiles/task/bin/set-focus.sh
-5
home/profiles/task/taskrc
··· 82 82 report.every.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description 83 83 report.every.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description 84 84 85 - report.poms.filter=(status:pending -idea -backlog -BLOCKED) 86 - report.poms.labels=UUID,ID,Project,Tag,Description 87 - report.poms.columns=uuid,id,project,tags,description 88 - report.poms.sort=start+,urgency+ 89 - 90 85 # Urgency 91 86 urgency.user.project.wait.coefficient=-10.0 92 87 urgency.user.project.craft.coefficient=1.9
+1 -1
hosts/box/configuration.nix
··· 91 91 sound.enable = false; 92 92 93 93 programs.gnupg.agent.enable = true; 94 - programs.gnupg.agent.pinentryPackage = pkgs.pinentry-curses; 94 + programs.gnupg.agent.pinentryFlavor = "curses"; 95 95 programs.gnupg.agent.enableSSHSupport = true; 96 96 97 97 # This value determines the NixOS release with which your system is to be
+5 -7
hosts/box/default.nix
··· 7 7 ../profiles/taskd 8 8 ../profiles/shaarli 9 9 ../profiles/dns 10 - # ../profiles/monitoring 10 + ../profiles/monitoring 11 11 ../profiles/nfs 12 12 ../profiles/gonic 13 - # ../profiles/headphones # TODO broken on 23.11, see: https://github.com/rembo10/headphones/issues/3320 13 + ../profiles/headphones 14 14 ../profiles/radicale 15 - # ../profiles/seafile # waiting for https://github.com/NixOS/nixpkgs/pull/249523 to be merged 15 + ../profiles/seafile 16 16 ../profiles/syncthing 17 17 ../profiles/dhyan 18 18 ../profiles/calibre ··· 22 22 ../profiles/grasp 23 23 # ../profiles/archivebox 24 24 # ../profiles/woodpecker-agent 25 - # ../profiles/jellyfin 25 + ../profiles/jellyfin 26 26 ../profiles/ulogger-server 27 - ../profiles/photoprism # Replace with immich 28 - ../profiles/gpodder 29 - #../profiles/postgres_upgrade_script 27 + ../profiles/photoprism 30 28 ]; 31 29 32 30 # Backups
+1 -1
hosts/curve/configuration.nix
··· 36 36 37 37 sound.enable = true; 38 38 39 - services.libinput.enable = true; 39 + services.xserver.libinput.enable = true; 40 40 }
+12 -29
hosts/curve/default.nix
··· 1 - { self, pkgs, ... }: { 1 + { self, pkgs, ... }: 2 + { 2 3 imports = [ 3 4 ./configuration.nix 4 5 ../users/anish ··· 16 17 # ../profiles/mount-mossnet 17 18 ]; 18 19 19 - # temporarily allow ssh access for work, to be able to do deploy new services 20 - services.openssh = { 21 - enable = true; 22 - settings.PasswordAuthentication = false; 23 - settings.PermitRootLogin = "no"; 24 - }; 25 - 26 20 # import profiling tools 27 21 programs.systemtap.enable = true; 28 22 29 - virtualisation.docker.enable = true; 30 - virtualisation.docker.storageDriver = "btrfs"; 31 - environment.systemPackages = with pkgs; [ docker-compose ]; 32 - 33 23 # Speed up boot by removing dependency on network 34 24 systemd = { 35 - targets.network-online.wantedBy = 36 - pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"] 37 - services.NetworkManager-wait-online.wantedBy = 38 - pkgs.lib.mkForce [ ]; # Normally ["network-online.target"] 25 + targets.network-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"] 26 + services.NetworkManager-wait-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["network-online.target"] 39 27 }; 40 28 41 29 programs.gnupg.agent.enable = true; 42 - programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3; 30 + programs.gnupg.agent.pinentryFlavor = "gnome3"; 43 31 44 32 fileSystems."/mnt/ftp" = { 45 33 device = "192.168.1.240:/home/ftp"; ··· 70 58 71 59 # lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?) 72 60 networking.firewall = { 73 - allowedTCPPorts = [ 22 ]; # allow ssh 74 - allowedTCPPortRanges = [{ 75 - from = 1714; 76 - to = 1764; 77 - }]; 78 - allowedUDPPortRanges = [{ 79 - from = 1714; 80 - to = 1764; 81 - }]; 61 + allowedTCPPortRanges = [{ from = 1714; to = 1764; }]; 62 + allowedUDPPortRanges = [{ from = 1714; to = 1764; }]; 82 63 }; 83 64 84 65 age.secrets.curve-wg.file = "${self}/secrets/curve-wg.age"; ··· 94 75 mossnet.backup = { 95 76 enable = true; 96 77 name = "curve"; 97 - paths = [ "/home/anish/usr" "/home/anish/.ssh" ]; 78 + paths = [ 79 + "/home/anish/usr" 80 + "/home/anish/.ssh" 81 + ]; 98 82 }; 99 83 100 84 # enable adb ··· 103 87 #virtualisation.docker.enable = true; 104 88 boot.blacklistedKernelModules = [ "qcserial" ]; 105 89 # Used for packer Capsul 106 - users.users.anish.extraGroups = 107 - [ "adbusers" "wheel" "plugdev" "libvertd" "docker" ]; 90 + users.users.anish.extraGroups = [ "adbusers" "wheel" "plugdev" "libvertd" ]; 108 91 virtualisation.libvirtd.enable = true; 109 92 hardware.keyboard.zsa.enable = true; 110 93 services.udev.extraRules = ''
+16 -12
hosts/curve/hardware-configuration.nix
··· 5 5 6 6 { 7 7 imports = 8 - [ (modulesPath + "/installer/scan/not-detected.nix") 8 + [ 9 + (modulesPath + "/installer/scan/not-detected.nix") 9 10 ]; 10 11 11 - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; 12 + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ]; 12 13 boot.initrd.kernelModules = [ "dm-snapshot" ]; 13 14 boot.kernelModules = [ "kvm-intel" ]; 14 15 boot.extraModulePackages = [ ]; 15 16 17 + fileSystems."/boot" = 18 + { 19 + device = "/dev/disk/by-uuid/2C41-3DAA"; 20 + fsType = "vfat"; 21 + }; 22 + 16 23 fileSystems."/" = 17 - { device = "/dev/disk/by-uuid/e1268753-4f18-4e6f-8edb-d4724ad8eb4a"; 24 + { 25 + device = "/dev/disk/by-uuid/a4ae2855-10b9-49f3-adb0-acd82b74eeb9"; 18 26 fsType = "btrfs"; 19 27 options = [ "subvol=root" ]; 20 28 }; 21 29 22 30 fileSystems."/home" = 23 - { device = "/dev/disk/by-uuid/e1268753-4f18-4e6f-8edb-d4724ad8eb4a"; 31 + { 32 + device = "/dev/disk/by-uuid/a4ae2855-10b9-49f3-adb0-acd82b74eeb9"; 24 33 fsType = "btrfs"; 25 34 options = [ "subvol=home" ]; 26 35 }; 27 36 28 - fileSystems."/boot" = 29 - { device = "/dev/disk/by-uuid/8244-A184"; 30 - fsType = "vfat"; 31 - }; 32 - 33 37 swapDevices = 34 - [ { device = "/dev/disk/by-uuid/e220fea6-cf3b-4687-bfe1-9cf6d3ba57f7"; } 35 - ]; 38 + [{ device = "/dev/disk/by-uuid/23658926-6ffa-42dc-8915-a6479c385e0b"; }]; 36 39 37 40 # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 38 41 # (the default) this is the recommended approach. When using systemd-networkd it's ··· 43 46 # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; 44 47 45 48 nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 46 - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 49 + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; 50 + # hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 47 51 }
+4 -3
hosts/darwin/default.nix
··· 44 44 }; 45 45 }; 46 46 47 + system.primaryUser = "anishlakhwara"; 47 48 # Auto upgrade nix package and the daemon service. 48 - services.nix-daemon.enable = true; 49 49 nixpkgs.hostPlatform = "aarch64-darwin"; 50 50 programs.zsh.enable = true; 51 51 ··· 55 55 settings.trusted-users = [ "@admin" "anishlakhwara" ]; 56 56 57 57 gc = { 58 - user = "root"; 59 58 automatic = true; 60 59 interval = { Weekday = 0; Hour = 2; Minute = 0; }; 61 60 options = "--delete-older-than 30d"; ··· 85 84 siji 86 85 font-awesome 87 86 proggyfonts 88 - (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; }) 87 + nerd-fonts.fira-code 88 + nerd-fonts.droid-sans-mono 89 + nerd-fonts.iosevka 89 90 ]; 90 91 91 92 system = {
-120
hosts/deck/configuration.nix
··· 1 - # Edit this configuration file to define what should be installed on 2 - # your system. Help is available in the configuration.nix(5) man page 3 - # and in the NixOS manual (accessible by running โ€˜nixos-helpโ€™). 4 - 5 - { config, pkgs, ... }: 6 - 7 - { 8 - imports = 9 - [ # Include the results of the hardware scan. 10 - ./hardware-configuration.nix 11 - ]; 12 - 13 - # Bootloader. 14 - boot.loader.systemd-boot.enable = true; 15 - boot.loader.efi.canTouchEfiVariables = true; 16 - 17 - networking.hostName = "deck"; # Define your hostname. 18 - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. 19 - 20 - # Configure network proxy if necessary 21 - # networking.proxy.default = "http://user:password@proxy:port/"; 22 - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; 23 - 24 - # Enable networking 25 - networking.networkmanager.enable = true; 26 - 27 - # Set your time zone. 28 - # time.timeZone = "America/Los_Angeles"; 29 - 30 - # Select internationalisation properties. 31 - i18n.defaultLocale = "en_US.UTF-8"; 32 - 33 - # i18n.extraLocaleSettings = { 34 - # LC_ADDRESS = "en_US.UTF-8"; 35 - # LC_IDENTIFICATION = "en_US.UTF-8"; 36 - # LC_MEASUREMENT = "en_US.UTF-8"; 37 - # LC_MONETARY = "en_US.UTF-8"; 38 - # LC_NAME = "en_US.UTF-8"; 39 - # LC_NUMERIC = "en_US.UTF-8"; 40 - # LC_PAPER = "en_US.UTF-8"; 41 - # LC_TELEPHONE = "en_US.UTF-8"; 42 - # LC_TIME = "en_US.UTF-8"; 43 - # }; 44 - 45 - # Enable the X11 windowing system. 46 - # services.xserver.enable = true; 47 - 48 - # Enable the GNOME Desktop Environment. 49 - # services.xserver.displayManager.gdm.enable = true; 50 - # services.xserver.desktopManager.gnome.enable = true; 51 - 52 - # Configure keymap in X11 53 - # services.xserver.xkb = { 54 - # layout = "us"; 55 - # variant = ""; 56 - # }; 57 - 58 - 59 - # use the example session manager (no others are packaged yet so this is enabled by default, 60 - # no need to redefine it in your config for now) 61 - #media-session.enable = true; 62 - 63 - # Enable touchpad support (enabled default in most desktopManager). 64 - # services.xserver.libinput.enable = true; 65 - 66 - # Define a user account. Don't forget to set a password with โ€˜passwdโ€™. 67 - # users.users.anish = { 68 - # isNormalUser = true; 69 - # extraGroups = [ "networkmanager" "wheel" ]; 70 - # packages = with pkgs; [ 71 - # # thunderbird 72 - # ]; 73 - # }; 74 - 75 - # Enable automatic login for the user. 76 - services.xserver.displayManager.autoLogin.enable = true; 77 - services.xserver.displayManager.autoLogin.user = "anish"; 78 - 79 - # Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229 80 - systemd.services."getty@tty1".enable = false; 81 - systemd.services."autovt@tty1".enable = false; 82 - 83 - # Install firefox. 84 - # programs.firefox.enable = true; 85 - 86 - # List packages installed in system profile. To search, run: 87 - # $ nix search wget 88 - environment.systemPackages = with pkgs; [ 89 - # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. 90 - # wget 91 - ]; 92 - 93 - # Some programs need SUID wrappers, can be configured further or are 94 - # started in user sessions. 95 - # programs.mtr.enable = true; 96 - # programs.gnupg.agent = { 97 - # enable = true; 98 - # enableSSHSupport = true; 99 - # }; 100 - 101 - # List services that you want to enable: 102 - 103 - # Enable the OpenSSH daemon. 104 - # services.openssh.enable = true; 105 - 106 - # Open ports in the firewall. 107 - # networking.firewall.allowedTCPPorts = [ ... ]; 108 - # networking.firewall.allowedUDPPorts = [ ... ]; 109 - # Or disable the firewall altogether. 110 - # networking.firewall.enable = false; 111 - 112 - # This value determines the NixOS release from which the default 113 - # settings for stateful data, like file locations and database versions 114 - # on your system were taken. Itโ€˜s perfectly fine and recommended to leave 115 - # this value at the release version of the first install of this system. 116 - # Before changing this value read the documentation for this option 117 - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 118 - system.stateVersion = "24.11"; # Did you read the comment? 119 - 120 - }
-54
hosts/deck/default.nix
··· 1 - { self, pkgs, config, ... }: { 2 - imports = [ 3 - ./configuration.nix 4 - ../users/anish 5 - ../profiles/core 6 - # ../profiles/bluetooth 7 - # ../profiles/music 8 - ../profiles/sync/cal 9 - ../profiles/wifi 10 - ../profiles/desktop 11 - ../profiles/mimetypes 12 - ../profiles/syncthing 13 - ../profiles/mossnet-hosts 14 - # ../profiles/fly-wg 15 - # ../profiles/mount-mossnet 16 - ]; 17 - 18 - # age.secrets.deck-wg.file = "${self}/secrets/deck-wg.age"; 19 - # age.secrets.deck-wg.owner = "deck"; 20 - # mossnet.wg = { 21 - # enable = true; 22 - # ips = [ "10.0.69.6/24" ]; 23 - # privateKeyFile = "/run/agenix/deck-wg"; 24 - # }; 25 - 26 - users.users.anish.extraGroups = [ "adbusers" "wheel" "plugdev" "libvertd" ]; 27 - # boot.plymouth = { 28 - # enable = true; 29 - # themePackages = [ pkgs.plymouth-themes ]; 30 - # theme = "motion"; 31 - # }; 32 - 33 - jovian.steam.enable = true; 34 - jovian.devices.steamdeck.enable = true; 35 - jovian.steam.user = "anish"; 36 - jovian.steam.autoStart = true; 37 - jovian.steam.desktopSession = "gnome"; 38 - # jovian.steam.desktopSession = "none+bspwm"; 39 - 40 - # Install XR drivers 41 - environment.systemPackages = with pkgs; [ 42 - xrlinuxdriver 43 - stardust-xr-server 44 - # breezy-gnome 45 - ]; 46 - 47 - services.udev.packages = with pkgs; [ xrlinuxdriver ]; 48 - 49 - services.monado = { 50 - enable = true; 51 - defaultRuntime = true; 52 - }; 53 - 54 - }
-40
hosts/deck/hardware-configuration.nix
··· 1 - # Do not modify this file! It was generated by โ€˜nixos-generate-configโ€™ 2 - # and may be overwritten by future invocations. Please make changes 3 - # to /etc/nixos/configuration.nix instead. 4 - { config, lib, pkgs, modulesPath, ... }: 5 - 6 - { 7 - imports = 8 - [ (modulesPath + "/installer/scan/not-detected.nix") 9 - ]; 10 - 11 - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "sdhci_pci" ]; 12 - boot.initrd.kernelModules = [ ]; 13 - boot.kernelModules = [ "kvm-amd" ]; 14 - boot.extraModulePackages = [ ]; 15 - 16 - fileSystems."/" = 17 - { device = "/dev/disk/by-uuid/d432dae0-3512-4891-9582-56d7ecd8524c"; 18 - fsType = "ext4"; 19 - }; 20 - 21 - fileSystems."/boot" = 22 - { device = "/dev/disk/by-uuid/5B4C-7406"; 23 - fsType = "vfat"; 24 - options = [ "fmask=0077" "dmask=0077" ]; 25 - }; 26 - 27 - swapDevices = 28 - [ { device = "/dev/disk/by-uuid/f75a730e-c849-4edd-a17f-52492d4260dc"; } 29 - ]; 30 - 31 - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 32 - # (the default) this is the recommended approach. When using systemd-networkd it's 33 - # still possible to use this option, but it's recommended to use it in conjunction 34 - # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 35 - networking.useDHCP = lib.mkDefault true; 36 - # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; 37 - 38 - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 39 - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 40 - }
-337
hosts/development/mirlo/docker-compose.nix
··· 1 - # Auto-generated using compose2nix v0.1.6. 2 - { pkgs, lib, ... }: 3 - 4 - { 5 - # Runtime 6 - virtualisation.podman = { 7 - enable = true; 8 - autoPrune.enable = true; 9 - dockerCompat = true; 10 - defaultNetwork.settings = { 11 - # Required for container networking to be able to use names. 12 - dns_enabled = true; 13 - }; 14 - }; 15 - virtualisation.oci-containers.backend = "podman"; 16 - 17 - # Containers 18 - virtualisation.oci-containers.containers."blackbird-api" = { 19 - image = ""; 20 - environment = { 21 - API_DOMAIN = "http://localhost:3000"; 22 - DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public"; 23 - JWT_SECRET = "test1234"; 24 - MEDIA_LOCATION = "./data/media/"; 25 - MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache"; 26 - MEDIA_LOCATION_INCOMING = "/data/media/incoming"; 27 - MINIO_HOST = "minio"; 28 - MINIO_PORT = "9000"; 29 - MINIO_ROOT_PASSWORD = "password"; 30 - MINIO_ROOT_USER = "blackbird"; 31 - NODE_ENV = "development"; 32 - PORT = "3000"; 33 - POSTGRES_LOCAL_MACHINE_PORT = "5434"; 34 - POSTGRES_PASSWORD = "nomads"; 35 - POSTGRES_USER = "nomads"; 36 - REACT_APP_API_DOMAIN = "http://localhost:3000"; 37 - REDIS_HOST = "redis"; 38 - REDIS_PASSWORD = "password"; 39 - REDIS_PORT = "6379"; 40 - REFRESH_TOKEN_SECRET = "test1234"; 41 - STATIC_MEDIA_HOST = "http://localhost:3000"; 42 - STRIPE_KEY = ""; 43 - }; 44 - volumes = [ 45 - "/home/anish/.ssh:/root/.ssh:rw" 46 - "/home/anish/usr/mirlo:/var/www/api:rw" 47 - "/home/anish/usr/mirlo/data/media/downloadCache:/data/media/downloadCache:rw" 48 - "/home/anish/usr/mirlo/data/media/incoming:/data/media/incoming:rw" 49 - ]; 50 - ports = [ 51 - "3000:3000/tcp" 52 - ]; 53 - cmd = [ "/bin/sh" "-c" "yarn && yarn migrate:deploy && yarn dev:api" ]; 54 - dependsOn = [ 55 - "blackbird-minio" 56 - "blackbird-pgsql" 57 - "blackbird-redis" 58 - ]; 59 - log-driver = "journald"; 60 - extraOptions = [ 61 - "--network-alias=api" 62 - "--network=mirlo-api-network" 63 - "--network=mirlo-redis-network" 64 - ]; 65 - }; 66 - systemd.services."podman-blackbird-api" = { 67 - serviceConfig = { 68 - Restart = lib.mkOverride 500 "always"; 69 - }; 70 - after = [ 71 - "podman-network-mirlo-api-network.service" 72 - "podman-network-mirlo-redis-network.service" 73 - ]; 74 - requires = [ 75 - "podman-network-mirlo-api-network.service" 76 - "podman-network-mirlo-redis-network.service" 77 - ]; 78 - partOf = [ 79 - "podman-compose-mirlo-root.target" 80 - ]; 81 - unitConfig.UpheldBy = [ 82 - "podman-blackbird-minio.service" 83 - "podman-blackbird-pgsql.service" 84 - "podman-blackbird-redis.service" 85 - ]; 86 - wantedBy = [ 87 - "podman-compose-mirlo-root.target" 88 - ]; 89 - }; 90 - virtualisation.oci-containers.containers."blackbird-background" = { 91 - image = ""; 92 - environment = { 93 - API_DOMAIN = "http://localhost:3000"; 94 - DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public"; 95 - JWT_SECRET = "test1234"; 96 - MEDIA_LOCATION = "./data/media/"; 97 - MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache"; 98 - MEDIA_LOCATION_INCOMING = "/data/media/incoming"; 99 - MINIO_HOST = "minio"; 100 - MINIO_PORT = "9000"; 101 - MINIO_ROOT_PASSWORD = "password"; 102 - MINIO_ROOT_USER = "blackbird"; 103 - NODE_ENV = "development"; 104 - PORT = "3000"; 105 - POSTGRES_LOCAL_MACHINE_PORT = "5434"; 106 - POSTGRES_PASSWORD = "nomads"; 107 - POSTGRES_USER = "nomads"; 108 - REACT_APP_API_DOMAIN = "http://localhost:3000"; 109 - REDIS_HOST = "redis"; 110 - REDIS_PASSWORD = "password"; 111 - REDIS_PORT = "6379"; 112 - REFRESH_TOKEN_SECRET = "test1234"; 113 - STATIC_MEDIA_HOST = "http://localhost:3000"; 114 - STRIPE_KEY = ""; 115 - }; 116 - volumes = [ 117 - "/home/anish/.ssh:/root/.ssh:rw" 118 - "/home/anish/usr/mirlo:/var/www/api:rw" 119 - "/home/anish/usr/mirlo/data/media/processing:/data/media/processing:rw" 120 - ]; 121 - dependsOn = [ 122 - "blackbird-api" 123 - "blackbird-minio" 124 - "blackbird-pgsql" 125 - "blackbird-redis" 126 - ]; 127 - log-driver = "journald"; 128 - extraOptions = [ 129 - "--network-alias=background" 130 - "--network=mirlo-api-network" 131 - "--network=mirlo-redis-network" 132 - ]; 133 - }; 134 - systemd.services."podman-blackbird-background" = { 135 - serviceConfig = { 136 - Restart = lib.mkOverride 500 "always"; 137 - }; 138 - after = [ 139 - "podman-network-mirlo-api-network.service" 140 - "podman-network-mirlo-redis-network.service" 141 - ]; 142 - requires = [ 143 - "podman-network-mirlo-api-network.service" 144 - "podman-network-mirlo-redis-network.service" 145 - ]; 146 - partOf = [ 147 - "podman-compose-mirlo-root.target" 148 - ]; 149 - unitConfig.UpheldBy = [ 150 - "podman-blackbird-api.service" 151 - "podman-blackbird-minio.service" 152 - "podman-blackbird-pgsql.service" 153 - "podman-blackbird-redis.service" 154 - ]; 155 - wantedBy = [ 156 - "podman-compose-mirlo-root.target" 157 - ]; 158 - }; 159 - virtualisation.oci-containers.containers."blackbird-minio" = { 160 - image = "minio/minio"; 161 - environment = { 162 - API_DOMAIN = "http://localhost:3000"; 163 - DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public"; 164 - JWT_SECRET = "test1234"; 165 - MEDIA_LOCATION = "./data/media/"; 166 - MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache"; 167 - MEDIA_LOCATION_INCOMING = "/data/media/incoming"; 168 - MINIO_HOST = "minio"; 169 - MINIO_PORT = "9000"; 170 - MINIO_ROOT_PASSWORD = "password"; 171 - MINIO_ROOT_USER = "blackbird"; 172 - PORT = "3000"; 173 - POSTGRES_LOCAL_MACHINE_PORT = "5434"; 174 - POSTGRES_PASSWORD = "nomads"; 175 - POSTGRES_USER = "nomads"; 176 - REACT_APP_API_DOMAIN = "http://localhost:3000"; 177 - REDIS_HOST = "redis"; 178 - REDIS_PASSWORD = "password"; 179 - REDIS_PORT = "6379"; 180 - REFRESH_TOKEN_SECRET = "test1234"; 181 - STATIC_MEDIA_HOST = "http://localhost:3000"; 182 - STRIPE_KEY = ""; 183 - }; 184 - volumes = [ 185 - "/home/anish/usr/mirlo/data/minio_storage:/data:rw" 186 - ]; 187 - ports = [ 188 - "9000:9000/tcp" 189 - "9001:9001/tcp" 190 - ]; 191 - cmd = [ "server" "--console-address" ":9001" "/data" ]; 192 - log-driver = "journald"; 193 - extraOptions = [ 194 - "--network-alias=minio" 195 - "--network=mirlo-api-network:alias=minio" 196 - ]; 197 - }; 198 - systemd.services."podman-blackbird-minio" = { 199 - serviceConfig = { 200 - Restart = lib.mkOverride 500 "no"; 201 - }; 202 - after = [ 203 - "podman-network-mirlo-api-network.service" 204 - ]; 205 - requires = [ 206 - "podman-network-mirlo-api-network.service" 207 - ]; 208 - partOf = [ 209 - "podman-compose-mirlo-root.target" 210 - ]; 211 - wantedBy = [ 212 - "podman-compose-mirlo-root.target" 213 - ]; 214 - }; 215 - virtualisation.oci-containers.containers."blackbird-pgsql" = { 216 - image = "postgres:14-alpine"; 217 - environment = { 218 - API_DOMAIN = "http://localhost:3000"; 219 - DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public"; 220 - JWT_SECRET = "test1234"; 221 - MEDIA_LOCATION = "./data/media/"; 222 - MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache"; 223 - MEDIA_LOCATION_INCOMING = "/data/media/incoming"; 224 - MINIO_HOST = "minio"; 225 - MINIO_PORT = "9000"; 226 - MINIO_ROOT_PASSWORD = "password"; 227 - MINIO_ROOT_USER = "blackbird"; 228 - PORT = "3000"; 229 - POSTGRES_LOCAL_MACHINE_PORT = "5434"; 230 - POSTGRES_PASSWORD = "nomads"; 231 - POSTGRES_USER = "nomads"; 232 - REACT_APP_API_DOMAIN = "http://localhost:3000"; 233 - REDIS_HOST = "redis"; 234 - REDIS_PASSWORD = "password"; 235 - REDIS_PORT = "6379"; 236 - REFRESH_TOKEN_SECRET = "test1234"; 237 - STATIC_MEDIA_HOST = "http://localhost:3000"; 238 - STRIPE_KEY = ""; 239 - }; 240 - volumes = [ 241 - "/home/anish/usr/mirlo/data/pgsql:/var/lib/postgresql/data:rw" 242 - "/home/anish/usr/mirlo/data/pgsql_backups:/backups:rw" 243 - ]; 244 - ports = [ 245 - "5432:5432/tcp" 246 - ]; 247 - log-driver = "journald"; 248 - extraOptions = [ 249 - "--network-alias=pgsql" 250 - "--network=mirlo-api-network:alias=pgsql" 251 - ]; 252 - }; 253 - systemd.services."podman-blackbird-pgsql" = { 254 - serviceConfig = { 255 - Restart = lib.mkOverride 500 "no"; 256 - }; 257 - after = [ 258 - "podman-network-mirlo-api-network.service" 259 - ]; 260 - requires = [ 261 - "podman-network-mirlo-api-network.service" 262 - ]; 263 - partOf = [ 264 - "podman-compose-mirlo-root.target" 265 - ]; 266 - wantedBy = [ 267 - "podman-compose-mirlo-root.target" 268 - ]; 269 - }; 270 - virtualisation.oci-containers.containers."blackbird-redis" = { 271 - image = "redis"; 272 - ports = [ 273 - "6379:6379/tcp" 274 - ]; 275 - cmd = [ "redis-server" "--appendonly" "yes" "--requirepass " ]; 276 - log-driver = "journald"; 277 - extraOptions = [ 278 - "--network-alias=redis" 279 - "--network=mirlo-redis-network" 280 - ]; 281 - }; 282 - systemd.services."podman-blackbird-redis" = { 283 - serviceConfig = { 284 - Restart = lib.mkOverride 500 "always"; 285 - }; 286 - after = [ 287 - "podman-network-mirlo-redis-network.service" 288 - ]; 289 - requires = [ 290 - "podman-network-mirlo-redis-network.service" 291 - ]; 292 - partOf = [ 293 - "podman-compose-mirlo-root.target" 294 - ]; 295 - wantedBy = [ 296 - "podman-compose-mirlo-root.target" 297 - ]; 298 - }; 299 - 300 - # Networks 301 - systemd.services."podman-network-mirlo-api-network" = { 302 - path = [ pkgs.podman ]; 303 - serviceConfig = { 304 - Type = "oneshot"; 305 - RemainAfterExit = true; 306 - ExecStop = "${pkgs.podman}/bin/podman network rm -f mirlo-api-network"; 307 - }; 308 - script = '' 309 - podman network inspect mirlo-api-network || podman network create mirlo-api-network --opt isolate=true 310 - ''; 311 - partOf = [ "podman-compose-mirlo-root.target" ]; 312 - wantedBy = [ "podman-compose-mirlo-root.target" ]; 313 - }; 314 - systemd.services."podman-network-mirlo-redis-network" = { 315 - path = [ pkgs.podman ]; 316 - serviceConfig = { 317 - Type = "oneshot"; 318 - RemainAfterExit = true; 319 - ExecStop = "${pkgs.podman}/bin/podman network rm -f mirlo-redis-network"; 320 - }; 321 - script = '' 322 - podman network inspect mirlo-redis-network || podman network create mirlo-redis-network --opt isolate=true 323 - ''; 324 - partOf = [ "podman-compose-mirlo-root.target" ]; 325 - wantedBy = [ "podman-compose-mirlo-root.target" ]; 326 - }; 327 - 328 - # Root service 329 - # When started, this will automatically create all resources and start 330 - # the containers. When stopped, this will teardown all resources. 331 - systemd.targets."podman-compose-mirlo-root" = { 332 - unitConfig = { 333 - Description = "Root target generated by compose2nix."; 334 - }; 335 - wantedBy = [ "multi-user.target" ]; 336 - }; 337 - }
+3 -6
hosts/helix/default.nix
··· 11 11 # ../profiles/mount-mossnet 12 12 ../profiles/freshrss 13 13 ../profiles/microbin 14 - ../profiles/site 15 - 16 - # ../profiles/postgres_upgrade_script 17 14 ]; 18 15 19 16 # Capsul specific ··· 30 27 privateKeyFile = "/run/agenix/helix-wg"; 31 28 }; 32 29 33 - services.postgresql.package = pkgs.postgresql_15; 30 + services.postgresql.package = pkgs.postgresql_11; 34 31 services.postgresqlBackup = { 35 32 # TODO needs working wireguard to box 36 33 enable = false; 37 - databases = [ "gitea" "freshrss" ]; # "woodpecker" 34 + databases = [ "gitea" "freshrss" "woodpecker" ]; 38 35 location = "/mnt/two/postgres"; 39 36 }; 40 37 ··· 44 41 paths = [ 45 42 "/var/lib/gitea" 46 43 "/var/lib/freshrss" 47 - # "/var/lib/woodpecker" 44 + "/var/lib/woodpecker" 48 45 "/var/lib/microbin" 49 46 ]; 50 47
+5
hosts/lituus/hardware-configuration.nix
··· 20 20 fsType = "btrfs"; 21 21 }; 22 22 23 + fileSystems."/storage" = 24 + { device = "/dev/disk/by-uuid/c2181608-cbb0-40ab-b62b-158cdc9b9300"; 25 + fsType = "btrfs"; 26 + }; 27 + 23 28 swapDevices = [ ]; 24 29 25 30 hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+1 -1
hosts/profiles/core/default.nix
··· 32 32 }; 33 33 34 34 environment.systemPackages = with pkgs; [ 35 - pinentry-gnome3 35 + pinentry_gnome 36 36 cached-nix-shell 37 37 ]; 38 38
+20 -21
hosts/profiles/desktop/default.nix
··· 62 62 }; 63 63 64 64 environment.systemPackages = with pkgs; [ 65 - sublime-music 66 - # nheko 67 - signal-desktop 68 - tuba 69 - newsflash 70 - liferea 71 - gh 72 - flyctl 65 + unstable.sublime-music 66 + unstable.nheko 67 + unstable.signal-desktop 68 + unstable.tuba 69 + unstable.newsflash 70 + unstable.liferea 71 + unstable.gh 72 + unstable.flyctl 73 73 74 74 kooha 75 75 light ··· 77 77 feh 78 78 sxiv 79 79 xkblayout-state 80 + vcv-rack 80 81 zathura 81 82 calibre 82 83 mpv ··· 86 87 rofi 87 88 rofimoji 88 89 rofi-calc 90 + # eww 89 91 obs-studio 90 92 lightdm 91 93 dunst ··· 97 99 papirus-icon-theme 98 100 calendar-cli 99 101 wyrd 100 - # tic-80 102 + tic-80 101 103 ytfzf 102 104 yt-dlp 103 105 ]; 104 106 105 - # xdg.portal = { 107 + xdg.portal = { 106 108 # Breaks link clicking in nheko 107 109 # Portal doesn't seem to find Firefox as an acceptable app to open links? 108 - # enable = false; 109 - # extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; 110 - #xdgOpenUsePortal = false; 111 - # }; 110 + enable = false; 111 + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; 112 + xdgOpenUsePortal = false; 113 + }; 112 114 113 115 location.provider = "geoclue2"; 114 116 services = { ··· 119 121 night = 3700; 120 122 }; 121 123 }; 122 - displayManager.defaultSession = "none+bspwm"; 123 124 xserver = { 124 - enable = false; 125 + enable = true; 125 126 xkb.layout = "us,dvorak"; 126 127 desktopManager.wallpaper.mode = "fill"; 127 - desktopManager.gnome.enable = true; 128 128 displayManager = { 129 - # gdm.enable = true; 130 - # defaultSession = "none+bspwm"; 129 + defaultSession = "none+bspwm"; 131 130 sessionCommands = '' 132 131 ${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF 133 132 #define blk #1F2430 ··· 194 193 EOF 195 194 ''; 196 195 lightdm = { 197 - enable = false; 196 + enable = true; 198 197 background = "/etc/nixos/users/profiles/desktop/background.jpg"; 199 198 greeters.mini = { 200 199 enable = true; ··· 222 221 siji 223 222 font-awesome 224 223 proggyfonts 225 - # (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; }) 224 + (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; }) 226 225 ]; 227 226 }
-1
hosts/profiles/dns/default.nix
··· 39 39 "tracks.mossnet.lan" 40 40 "grasp.mossnet.lan" 41 41 "photos.mossnet.lan" 42 - "pod.mossnet.lan" 43 42 ]; 44 43 45 44 in
+1 -1
hosts/profiles/finance/default.nix
··· 4 4 services.paperless = { 5 5 enable = false; 6 6 consumptionDirIsPublic = true; 7 - settings.PAPERLESS_AUTO_LOGIN_USERNAME = "admin"; 7 + extraConfig.PAPERLESS_AUTO_LOGIN_USERNAME = "admin"; 8 8 }; 9 9 10 10 environment.systemPackages = [
+7 -8
hosts/profiles/freshrss/default.nix
··· 17 17 18 18 services.postgresql = { 19 19 enable = true; # Ensure postgresql is enabled 20 - # authentication = '' 21 - # local freshrss all ident map=freshrss-users 22 - # ''; 23 - # identMap = # Map the freshrss user to postgresql 24 - # '' 25 - # freshrss-users freshrss freshrss 26 - # freshrss-users postgres freshrss 27 - # ''; 20 + authentication = '' 21 + local freshrss all ident map=freshrss-users 22 + ''; 23 + identMap = # Map the freshrss user to postgresql 24 + '' 25 + freshrss-users freshrss freshrss 26 + ''; 28 27 ensureDatabases = [ "freshrss" ]; 29 28 ensureUsers = [{ 30 29 name = "freshrss";
+10 -25
hosts/profiles/gitea/default.nix
··· 4 4 age.secrets.gitea-dbpass.file = "${self}/secrets/gitea-dbpass.age"; 5 5 age.secrets.gitea-dbpass.owner = "gitea"; 6 6 7 - services.forgejo = { 7 + services.gitea = { 8 8 enable = true; 9 - user = "gitea"; 10 - group = "gitea"; 11 - stateDir = "/var/lib/gitea"; 9 + package = pkgs.forgejo; 10 + appName = "Sealight Git Forge"; 12 11 database = { 13 12 type = "postgres"; 14 - user = "gitea"; 15 - name = "gitea"; 16 13 passwordFile = "/run/agenix/gitea-dbpass"; 17 14 }; 18 15 settings = { 19 - DEFAULT.APP_NAME = "Sealight Git Forge"; 20 16 server = { 21 17 DOMAIN = "git.sealight.xyz"; 22 18 ROOT_URL = "https://git.sealight.xyz"; ··· 28 24 repository = { 29 25 DEFAULT_BRANCH = "main"; 30 26 }; 31 - service.DISABLE_REGISTRATION = true; 32 27 "markup.restructuredtext" = { 33 28 ENABLED = true; 34 29 FILE_EXTENSIONS = ".rst"; ··· 48 43 }; 49 44 }; 50 45 51 - users.users.gitea = { 52 - home = "/var/lib/gitea"; 53 - useDefaultShell = true; 54 - group = "gitea"; 55 - isSystemUser = true; 56 - }; 57 - 58 - users.groups.gitea = {}; 59 - 60 46 environment.systemPackages = [ pkgs.pandoc ]; 61 47 services.postgresql = { 62 48 enable = true; # Ensure postgresql is enabled 63 - # authentication = '' 64 - # local gitea all ident map=gitea-users 65 - # ''; 66 - # identMap = # Map the gitea user to postgresql 67 - # '' 68 - # gitea-users gitea gitea 69 - # gitea-users postgres gitea 70 - # ''; 49 + authentication = '' 50 + local gitea all ident map=gitea-users 51 + ''; 52 + identMap = # Map the gitea user to postgresql 53 + '' 54 + gitea-users gitea gitea 55 + ''; 71 56 ensureDatabases = [ "gitea" ]; 72 57 ensureUsers = [{ 73 58 name = "gitea";
+1 -10
hosts/profiles/gonic/default.nix
··· 5 5 music-path /mnt/two/music/ 6 6 podcast-path /data/podcasts 7 7 cache-path /data/cache 8 - playlists-path /data/playlists 9 8 ''; 10 - mossnet.gonic.user = "gonic"; 9 + mossnet.gonic.user = "headphones"; 11 10 mossnet.gonic.group = "audio"; 12 11 networking.firewall.allowedTCPPorts = [ 4747 ]; 13 - 14 - users.users.gonic = { 15 - # uid = config.ids.uids.headphones; 16 - # isSystemUser = true; 17 - group = "audio"; 18 - # home = "/var/lib/headphones"; 19 - createHome = true; 20 - }; 21 12 }
+4
hosts/profiles/gonic/module-gonic.nix
··· 68 68 Group = cfg.group; 69 69 DevicePolicy = "closed"; 70 70 NoNewPrivileges = " yes"; 71 + PrivateTmp = "yes"; 72 + PrivateUsers = "yes"; 71 73 ProtectControlGroups = "yes"; 72 74 ProtectKernelModules = "yes"; 73 75 ProtectKernelTunables = "yes"; 74 76 RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6"; 77 + RestrictNamespaces = "yes"; 78 + RestrictRealtime = "yes"; 75 79 SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap"; 76 80 ReadWritePaths = dataFolder; 77 81 StateDirectory = baseNameOf dataFolder;
-16
hosts/profiles/gpodder/default.nix
··· 1 - { 2 - services.gpodder.enable = true; 3 - networking.firewall.allowedTCPPorts = [ 3005 ]; 4 - services.nginx.virtualHosts."pod.mossnet.lan" = { 5 - extraConfig = "client_max_body_size 20M;"; 6 - 7 - locations."/" = { 8 - extraConfig = '' 9 - proxy_pass http://localhost:3005/; 10 - proxy_set_header X-Forwarded-Proto $scheme; 11 - proxy_set_header X-Real-IP $remote_addr; 12 - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 13 - ''; 14 - }; 15 - }; 16 - }
-1
hosts/profiles/headphones/default.nix
··· 4 4 enable = true; 5 5 host = "0.0.0.0"; 6 6 port = 8181; 7 - package = "${pkgs.unstable.headphones}"; 8 7 user = "headphones"; 9 8 group = "audio"; 10 9 dataDir = "/data/music";
+1 -1
hosts/profiles/matrix/mautrix-services.nix
··· 34 34 signal = { 35 35 port = 29184; 36 36 format = "mautrix-python"; 37 - package = pkgs.unstable.mautrix-signal; 37 + package = pkgs.mautrix-signal; 38 38 serviceConfig = { 39 39 StateDirectory = [ "matrix-as-signal" "signald" ]; 40 40 SupplementaryGroups = [ "signald" ];
+2 -2
hosts/profiles/microbin/default.nix
··· 1 1 { config, lib, pkgs, ... }: 2 2 { 3 3 services.microbin.enable = true; 4 - services.microbin.settings.PUBLIC_PATH = "bin.sealight.xyz"; 5 - services.microbin.settings.MICROBIN_PORT = 4949; 4 + services.microbin.hostname = "bin.sealight.xyz"; 5 + services.microbin.port = 4949; 6 6 networking.firewall.allowedTCPPorts = [ 4949 ]; 7 7 services.nginx.virtualHosts."bin.sealight.xyz" = { 8 8 enableACME = true;
-1
hosts/profiles/mossnet-hosts/default.nix
··· 18 18 192.168.1.240 tracks.mossnet.lan 19 19 192.168.1.240 grasp.mossnet.lan 20 20 192.168.1.240 photos.mossnet.lan 21 - 192.168.1.240 pod.mossnet.lan 22 21 ''; 23 22 # 10.0.69.4 mossnet.lan 24 23 # 10.0.69.4 links.mossnet.lan
+2 -2
hosts/profiles/music/default.nix
··· 16 16 orca-c 17 17 supercollider 18 18 dirt 19 - # sunvox 19 + sunvox 20 20 vcv-rack 21 21 lmms 22 22 bespokesynth ··· 38 38 alsa.enable = true; 39 39 alsa.support32Bit = false; 40 40 pulse.enable = true; 41 - jack.enable = true; 41 + jack.enable = true; 42 42 # Deprecated as of 23.05 43 43 # config = { 44 44 # pipewire."context.properties"."default.clock.rate" = "48000";
+4 -3
hosts/profiles/postgres_upgrade_script/default.nix
··· 6 6 # TODO it's perhaps advisable to stop all services that depend on postgresql 7 7 systemctl stop postgresql 8 8 9 + # TODO replace `<new version>` with the psqlSchema here 9 10 # The schema can be found by running: 10 - # nix eval --raw nixpkgs#postgresql_15.psqlSchema 11 - export NEWDATA="/var/lib/postgresql/15" 11 + # nix-instantiate '<nixpkgs>' --eval -A postgresql_14.psqlSchema 12 + export NEWDATA="/var/lib/postgresql/<new version>" 12 13 13 14 # TODO specify the postgresql package you'd like to upgrade to 14 - export NEWBIN="${pkgs.postgresql_15}/bin" 15 + export NEWBIN="${pkgs.postgresql_14}/bin" 15 16 16 17 export OLDDATA="${config.services.postgresql.dataDir}" 17 18 export OLDBIN="${config.services.postgresql.package}/bin"
+1 -1
hosts/profiles/rss-bridge/default.nix
··· 3 3 services.rss-bridge = { 4 4 enable = true; 5 5 virtualHost = "bridge.sealight.xyz"; 6 - config.system.enabled_bridges = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ]; 6 + whitelist = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ]; 7 7 }; 8 8 9 9 services.nginx.virtualHosts."bridge.sealight.xyz".forceSSL = true;
hosts/profiles/sync/music/get-music.sh
+2 -2
hosts/profiles/sync/website/default.nix
··· 6 6 path = [ 7 7 pkgs.git 8 8 pkgs.coreutils 9 - pkgs.nixVersions.latest 9 + pkgs.nixUnstable 10 10 pkgs.openssh 11 11 pkgs.deploy 12 12 ]; ··· 18 18 git add flake.lock 19 19 git diff-index --quiet HEAD || git commit -m 'updating website' # if nothing, don't exit 1 20 20 git push 21 - deploy .#helix 21 + deploy .#cube 22 22 exit 0 23 23 ''; 24 24 serviceConfig = {
+1 -1
hosts/profiles/ulogger-server/default.nix
··· 6 6 ensureDatabases = [ "ulogger" ]; 7 7 ensureUsers = [{ 8 8 name = "ulogger"; 9 - ensureDBOwnership = true; 9 + nsureDBOwnership = true; 10 10 }]; 11 11 }; 12 12
+67 -14
hosts/profiles/wallabag/default.nix
··· 1 1 { self, pkgs, config, lib, ... }: 2 2 3 3 { 4 - age.secrets.wallabag-password.file = "${self}/secrets/wallabag-password.age"; 5 - age.secrets.wallabag-secret.file = "${self}/secrets/wallabag-secret.age"; 6 - age.secrets.wallabag-password.owner = "wallabag"; 7 - age.secrets.wallabag-secret.owner = "wallabag"; 4 + # age.secrets.wallabag-password.file = "${self}/secrets/wallabag-password.age"; 5 + # age.secrets.wallabag-secret.file = "${self}/secrets/wallabag-secret.age"; 6 + # age.secrets.wallabag-password.owner = "wallabag"; 7 + # age.secrets.wallabag-secret.owner = "wallabag"; 8 8 services.postgresql = { 9 9 enable = true; 10 10 package = pkgs.postgresql_15; ··· 18 18 } 19 19 ]; 20 20 authentication = '' 21 - local wallabag all peer 21 + local wallabag all md5 22 22 ''; 23 23 }; 24 24 25 25 services.wallabag = { 26 26 enable = true; 27 - domain = "read.mossnet.lan"; 28 - virtualHost.enable = true; 29 - package = pkgs.my-wallabag; 30 - # Systemd now defaults to /var/lib? 31 - # dataDir = "/var/lib/wallabag"; 32 - parameters = { 33 - "env(SECRET_FILE)" = config.age.secrets.wallabag-secret.path; 34 - secret = "%env(file:resolve:SECRET_FILE)%"; 35 - }; 27 + hostName = "read.mossnet.lan"; 28 + package = pkgs.wallabag; 29 + conf = '' 30 + # This file is a "template" of what your parameters.yml file should look like 31 + parameters: 32 + database_driver: pdo_pgsql 33 + database_host: localhost 34 + database_port: ~ 35 + database_name: wallabag 36 + database_user: wallabag 37 + database_password: wallabag 38 + # For SQLite, database_path should be "%kernel.project_dir%/data/db/wallabag.sqlite" 39 + database_path: ~ 40 + database_table_prefix: wallabag_ 41 + database_socket: null 42 + # with PostgreSQL and SQLite, you must set "utf8" 43 + database_charset: utf8 44 + 45 + domain_name: http://read.mossnet.lan/ 46 + server_name: "mossnet wallabag instance" 47 + 48 + mailer_dsn: null:// 49 + locale: en 50 + 51 + # A secret key that's used to generate certain security-related tokens 52 + secret: SAFGOECRIlfal89oe6u0(*^dsaaih961 53 + 54 + # two factor stuff 55 + twofactor_auth: false 56 + twofactor_sender: no-reply@wallabag.org 57 + 58 + # fosuser stuff 59 + fosuser_registration: false 60 + fosuser_confirmation: true 61 + 62 + # how long the access token should live in seconds for the API 63 + fos_oauth_server_access_token_lifetime: 3600 64 + # how long the refresh token should life in seconds for the API 65 + fos_oauth_server_refresh_token_lifetime: 1209600 66 + 67 + from_email: ops@sealight.xyz 68 + 69 + rss_limit: 50 70 + 71 + # RabbitMQ processing 72 + rabbitmq_host: localhost 73 + rabbitmq_port: 5672 74 + rabbitmq_user: guest 75 + rabbitmq_password: guest 76 + rabbitmq_prefetch_count: 10 77 + 78 + # Redis processing 79 + redis_scheme: tcp 80 + redis_host: localhost 81 + redis_port: 6379 82 + redis_path: null 83 + redis_password: null 84 + 85 + # sentry logging 86 + sentry_dsn: ~ 87 + ''; 36 88 }; 89 + # networking.firewall.allowedTCPPorts = [ 8080 ]; 37 90 }
+5 -10
hosts/profiles/wireguard-server/default.nix
··· 36 36 publicKey = "gcdq86hhEUlqF2chqYB/F8pALyAMNFvwLycxBoHuoDs="; 37 37 allowedIPs = [ "10.0.69.5/32" ]; 38 38 } 39 - { 40 - # hyperplane 41 - publicKey = "v+EUuM60yZLvBmdCG9GxfFAtSjS1VvbUWcyNb8emjDg="; 42 - allowedIPs = [ "10.0.69.6/32" ]; 43 - } 44 - { 45 - # work 46 - publicKey = "/gv66s8DfppCCjaEN/jlc8z95IhEWPgDumykqKEl0QU="; 47 - allowedIPs = [ "10.0.69.7/32" ]; 48 - } 39 + # { 40 + # # hyperplane 41 + # publicKey = ""; 42 + # allowedIPs = [ "10.0.69.6/32" ]; 43 + # } 49 44 ]; 50 45 }; 51 46 }
+3 -6
hosts/users/anish/default.nix
··· 4 4 programs.zsh.enable = true; 5 5 users.users.anish = { 6 6 description = "Personal user for Anish"; 7 - hashedPassword = 8 - "$y$j9T$y3DPt/dWaPE.gRazQqw1w0$1RMH5sl/Nu8kW3ZMywYCPRniHD/jF5qRh0VKrdJ.bV2"; 7 + hashedPassword = "$y$j9T$y3DPt/dWaPE.gRazQqw1w0$1RMH5sl/Nu8kW3ZMywYCPRniHD/jF5qRh0VKrdJ.bV2"; 9 8 shell = pkgs.zsh; 10 9 isNormalUser = true; 11 10 extraGroups = [ "wheel" "audio" "networkmanager" "video" ]; 12 11 openssh.authorizedKeys.keys = [ 13 12 # Curve 14 13 "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve" 14 + # Line 15 + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtU2GMYjXj6RGO1+mwM4TDGOo0qrKLTL4Di8+QgDX0p5vUEsnE1PS9wnuqCmSu75U8g0XIAMtvtdYyGk1N+Bx01erAZpT8DLYtIXFCyaiN28PVu5T1D0T+TQ7xgIH1qenXZR2DOQdf6kpvKEfm7+7bWhCo0N/KFMpmReubyzHDQcq/1qQasxTL+YALQFOjwKqsOTBXbHwZ103AEAcQX4ftBFEOfVli4/1aKIK4dNSZYB7J9Htq707YnsEqo9RLAMh0aOTTYgTx9AoSUDeqGuh/AGkcB7NcS7EEtI6d5YUGylwZh/gF6hqE0jl8kn2m5jMKXL3CRohZvjifue8x/GIjpu5WRabUuhBEbrfTQQaC7taHnt5rvYCGzKZx09TexUzhuz2CL480DRoxSG+P+lCNm1dIg/EZrnGEzXCSr36PlOqS5t5gm8tPkzCmZf2wU15A3ZIYUPmnYLqsn4WmIV7rKmdqt2ctWELUXow3PPiZXBucP9P3xpsYEfF1SB2SGNc= u0_a139@localhost" 15 16 # Box 16 17 "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKN8/SH55DBiwVoSnTU8k2Pen+wmovL9QaMyehxGEsJJv/8fzwsswGalD4C/4O51LOvdu4UKkZW5hG02uVSK+58p3UV3pOPyoqsu/aDeIsWsqmTeTzUrBIWOlNzcDKnohLz2oGC5YO+wyTJ9Iteq6aGJDjErsW7sG3h5lXCs551EmJNNGhtBQaaoytMNnWqSdlVjDNCijurH7WUpp40U/RjEp532l4rX6eIIj3jBKEFbhZkFSSjqbj4xM4SyFt+Jmigb1RMjsQjmpfY1vDtM84RcYfpTUte/T5w2dkD5H6kccmWnwKSJpm9wXfx4E7lR9APdUGnau2U1+XxiD3ytGl anish@box" 17 - # Nix-on-droid line 18 - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJOiXBPVvZAp1fY0a0Tupxj0Ml6MoA51lvqt/jAQq249 nix-on-droid@localhost" 19 - # Work 20 - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/vvh0i6+uAN0GWlK6ZfyTlc/AW54xe2CroUDsDSoGnFKeIUiSsWexobODlVakNhqwCKfsvUh6g+RdA8ZVcamATcYqxysP4X5fRksmAzRm5281O7ZBDHMB2BdcfHSTgiz7JvMRIQYWDlU8Ck6IL4wlN0b2GMUj9t/GeG37us8280rxpRNoIY7M27AJEZ7XNQhctBIVujxctVBgIMYmZiTwziU7ywJv4rNT5OAWvjRXSo1rkxdvx3VESv4y/mp8m7dEupZpIjIFsLs52+UG5LtadulUqtTWg05sCw8LEcmRhflgZSAvjw60RrKFCuWxc8+/Pmaw+zExeBMenqi0NzuTc3S3k2wCKVIZDh/0tlXzIwZ6WRqxDevUtEKfvbEFMXd8akhTfYs0dyszcFRevBxOBPbcKku+FK/HkdPLmEANvxYty3cv+Eipkz3c8JPJPvXNTXrjepXMm0LUKodO3c15hGogCOxUO38kykkyYnn+MxxHparoMfEr2+oHNpQoS5wA1G43ppqjVoRDgnhleu6ixwRkLZzphY3cnOd5jL9Ie5xIGbFWH1qSlQRdHBkHjuf85z7+QK8nFYAhmG1K3Vt3GNtF8LN1tYQkfwBJ/vsroMNzGPoq4PjVbqb80Eq+96cP89XKfU2/xw1g+p2lJDm/zC1WCjXVzf8NRwC7gqPavQ== anishlakhwara@anishs-mbp.lan" 21 18 ]; 22 19 }; 23 20 }
install-encrypted.sh
+2 -2
install-yubikey.sh
··· 19 19 20 20 # Yubikey Setup 21 21 SLOT=2 22 - # ykpersonalize -"$SLOT" -ochal-resp -ochal-hmac 22 + ykpersonalize -"$SLOT" -ochal-resp -ochal-hmac 23 23 SALT_LENGTH=16 24 24 salt="$(dd if=/dev/random bs=1 count=$SALT_LENGTH 2>/dev/null | rbtohex)" 25 25 k_user=PASSWORDCHANGEMEPLAEASES ··· 147 147 sound.enable = true; 148 148 hardware.pulseaudio.enable = true; 149 149 150 - services.libinput.enable = true; 150 + services.xserver.libinput.enable = true; 151 151 152 152 # Hmmm maybe somewhere else? 153 153 users.users.anish = {
+1 -2
modules/nixos/default.nix
··· 9 9 wireguard = import ./wireguard.nix; 10 10 backup = import ./backup.nix; 11 11 ulogger-server = import ./ulogger.nix; 12 - gpodder2go = import ./gpodder2go.nix; 13 - # microbin = import ./microbin.nix; # includide in 23.11 12 + # microbin = import ./microbin.nix; includide in 23.11 14 13 }
-120
modules/nixos/gpodder2go.nix
··· 1 - { self, config, lib, pkgs, ... }: 2 - 3 - with lib; 4 - 5 - let 6 - cfg = config.services.gpodder; 7 - in 8 - { 9 - options = { 10 - 11 - services.gpodder = { 12 - enable = mkEnableOption "A gpodder instance"; 13 - 14 - user = mkOption { 15 - type = types.str; 16 - default = "gpodder"; 17 - description = "User account under which gpodder runs."; 18 - }; 19 - 20 - group = mkOption { 21 - type = types.str; 22 - default = "gpodder"; 23 - description = "Group account under which gpodder runs."; 24 - }; 25 - 26 - hostname = mkOption { 27 - type = types.str; 28 - description = "Hostname of your gpodder service"; 29 - }; 30 - 31 - dataFolder = mkOption { 32 - type = types.str; 33 - default = "/var/lib/gpodder"; 34 - description = "State director"; 35 - }; 36 - 37 - VERIFIER_SECRET_KEY = mkOption { 38 - type = types.str; 39 - default = "satnheiycglsrcgaecrlufg"; 40 - description = "Verifer Secret"; 41 - }; 42 - 43 - }; 44 - }; 45 - 46 - config = mkIf cfg.enable { 47 - systemd.services.gpodder = { 48 - description = "gpodder2go A gpodder instance"; 49 - after = [ "remote-fs.target" "network.target" ]; 50 - wantedBy = [ "multi-user.target" ]; 51 - serviceConfig = { 52 - ExecStart = "${pkgs.gpodder2go}/bin/gpodder2go serve"; 53 - Environment = [ 54 - "VERIFIER_SECRET_KEY=${cfg.VERIFIER_SECRET_KEY}" 55 - ]; 56 - WorkingDirectory = cfg.dataFolder; 57 - TimeoutStopSec = " 20 "; 58 - KillMode = " process "; 59 - RestartSec = " 10 "; 60 - User = cfg.user; 61 - Group = cfg.group; 62 - DevicePolicy = " closed "; 63 - NoNewPrivileges = " yes "; 64 - PrivateTmp = " yes "; 65 - PrivateUsers = " yes "; 66 - ProtectControlGroups = " yes "; 67 - ProtectKernelModules = " yes "; 68 - ProtectKernelTunables = " yes "; 69 - RestrictAddressFamilies = " 70 - AF_UNIX 71 - AF_INET 72 - AF_INET6 "; 73 - RestrictNamespaces = " yes "; 74 - RestrictRealtime = " yes "; 75 - SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap"; 76 - ReadWritePaths = cfg.dataFolder; 77 - StateDirectory = baseNameOf cfg.dataFolder; 78 - }; 79 - }; 80 - 81 - users.users = optionalAttrs (cfg.user == "gpodder") ({ 82 - gpodder = { 83 - description = "gpodder service user"; 84 - name = cfg.user; 85 - group = cfg.group; 86 - isSystemUser = true; 87 - }; 88 - }); 89 - 90 - users.groups = optionalAttrs (cfg.group == "gpodder") ({ 91 - gpodder = { }; 92 - }); 93 - 94 - # systemd.services.gpodder-install = { 95 - # description = "gpodder install service"; 96 - # wantedBy = [ "multi-user.target" ]; 97 - # before = [ "gpodder.service" ]; 98 - # path = with pkgs; [ gpodder2go ]; 99 - 100 - # serviceConfig = { 101 - # User = cfg.user; 102 - # Type = "oneshot"; 103 - # CacheDirectory = "gpodder"; 104 - # # Stores sessions. 105 - # CacheDirectoryMode = "700"; 106 - # ConfigurationDirectory = "gpodder"; 107 - # LogsDirectory = "gpodder"; 108 - # StateDirectory = "gpodder"; 109 - # }; 110 - 111 - # script = '' 112 - # if [ ! -f "${cfg.dataFolder}/installed" ]; then 113 - # ${pkgs.gpodder2go}/bin/gpodder2go init 114 - # touch "${cfg.dataFolder}/installed" 115 - # fi 116 - # ''; 117 - # }; 118 - }; 119 - } 120 -
+212 -198
modules/nixos/wallabag.nix
··· 1 - { config, lib, pkgs, ... }: 1 + { config, options, lib, pkgs, ... }: 2 + 3 + with lib; 2 4 let 3 - # Based on https://github.com/wallabag/wallabag/blob/2.6.6/app/config/parameters.yml.dist 4 - settings = { 5 - database_driver = "${cfg.database_type}"; 6 - database_host = null; 7 - database_port = 5432; 8 - database_name = "wallabag"; 9 - database_user = "wallabag"; 10 - database_password = null; 11 - database_path = null; 12 - database_table_prefix = "wallabag_"; 13 - database_socket = "/run/postgresql"; 14 - database_charset = "utf8"; 5 + cfg = config.services.wallabag; 15 6 16 - domain_name = "http://${cfg.domain}"; 17 - server_name = "Wallabag"; 7 + poolName = "wallabag"; 18 8 19 - # Needs an explicit command since Symfony version used by Wallabag does not yet support the `native` transport 20 - # and the `sendmail` transport does not respect `sendmail_path` configured in `php.ini`. 21 - mailer_dsn = "sendmail://default?command=/run/wrappers/bin/sendmail%%20-t%%20-i"; 9 + configFile = pkgs.writeTextFile { 10 + name = "wallabag-config"; 11 + text = cfg.conf; 12 + destination = "/app/config/parameters.yml"; 13 + }; 22 14 23 - locale = "en"; 15 + appDir = pkgs.buildEnv { 16 + name = "wallabag-app-dir"; 17 + ignoreCollisions = true; 18 + checkCollisionContents = false; 19 + paths = [ configFile "${cfg.package}" ]; 20 + pathsToLink = [ "/app" "/src" "/translations" ]; 21 + }; 24 22 25 - # A secret key that's used to generate certain security-related tokens. 26 - # "env(SECRET_FILE)" = "/run/secrets/wallabag"; 27 - # secret = "%env(file:resolve:SECRET_FILE)%"; 23 + # See there for available commands: 24 + # https://doc.wallabag.org/en/admin/console_commands.html 25 + # A user can be made admin with the fos:user:promote --super <user> command 26 + console = pkgs.writeShellScriptBin "wallabag-console" '' 27 + export WALLABAG_DATA="${cfg.dataDir}" 28 + cd "${cfg.dataDir}" 29 + ${pkgs.php}/bin/php ${pkgs.wallabag}/bin/console --env=prod $@ 30 + ''; 28 31 29 - # two factor stuff 30 - twofactor_auth = false; 31 - twofactor_sender = ""; 32 + in 33 + { 32 34 33 - # fosuser stuff 34 - fosuser_registration = false; 35 - fosuser_confirmation = false; 35 + options = { 36 36 37 - # how long the access token should live in seconds for the API 38 - fos_oauth_server_access_token_lifetime = 3600; 39 - # how long the refresh token should life in seconds for the API 40 - fos_oauth_server_refresh_token_lifetime = 1209600; 37 + services.wallabag = { 38 + enable = mkEnableOption "wallabag"; 41 39 42 - from_email = "wallabag@read.mossnet.lan"; 40 + user = mkOption { 41 + type = types.str; 42 + default = "nginx"; 43 + description = '' 44 + User account under which both the update daemon and the web-application run. 45 + ''; 46 + }; 43 47 44 - # RabbitMQ processing 45 - redis_scheme = "unix"; 46 - redis_host = ""; # Ignored for unix scheme 47 - redis_port = 0; # Ignored for unix scheme 48 - redis_path = config.services.redis.servers.wallabag.unixSocket; 49 - redis_password = null; 48 + dataDir = mkOption { 49 + type = types.path; 50 + default = "/var/lib/wallabag"; 51 + description = '' 52 + Data directory. 53 + ''; 54 + }; 50 55 51 - # Redis processing 52 - rabbitmq_host = ""; 53 - rabbitmq_port = 0; 54 - rabbitmq_user = ""; 55 - rabbitmq_password = ""; 56 - rabbitmq_prefetch_count = 0; 56 + package = mkOption { 57 + type = types.package; 58 + default = pkgs.wallabag; 59 + description = '' 60 + Wallabag package to use. 61 + ''; 62 + }; 57 63 58 - # sentry logging 59 - sentry_dsn = null; 60 - } // cfg.parameters; 64 + hostName = mkOption { 65 + type = types.str; 66 + description = '' 67 + Name of the nginx virtualhost to use and setup. 68 + ''; 69 + }; 61 70 62 - php = cfg.php.package.withExtensions ({ enabled, all }: enabled ++ (with all; [ 63 - imagick 64 - tidy 65 - ])); 66 - 67 - commonServiceConfig = { 68 - CacheDirectory = "wallabag"; 69 - # Stores sessions. 70 - CacheDirectoryMode = "700"; 71 - ConfigurationDirectory = "wallabag"; 72 - LogsDirectory = "wallabag"; 73 - StateDirectory = "wallabag"; 74 - # Stores site-credentials-secret-key.txt. 75 - StateDirectoryMode = "700"; 76 - }; 77 - 78 - cfg = config.services.wallabag; 79 - in { 80 - options.services.wallabag = with lib; { 81 - enable = mkEnableOption (mdDoc "Wallabag read-it-later service"); 82 - 83 - package = mkOption { 84 - type = types.package; 85 - default = pkgs.wallabag; 86 - }; 87 - 88 - php.package = mkOption { 89 - type = types.package; 90 - default = pkgs.php; 91 - }; 92 - 93 - parameters = mkOption { 94 - type = types.attrsOf types.str; 95 - default = {}; 96 - description = mdDoc "Parameters to override from the default. See <https://doc.wallabag.org/en/admin/parameters.html> for values."; 97 - }; 71 + poolConfig = mkOption { 72 + type = types.lines; 73 + default = '' 74 + pm = dynamic 75 + pm.max_children = 75 76 + pm.start_servers = 1 77 + pm.min_spare_servers = 1 78 + pm.max_spare_servers = 20 79 + pm.max_requests = 500 80 + catch_workers_output = 1 81 + ''; 82 + description = '' 83 + Options for wallabag's PHP pool. See the documentation on <literal>php-fpm.conf</literal> for details on configuration directives. 84 + ''; 85 + }; 98 86 99 - database_type = mkOption { 100 - type = types.enum [ 101 - "pdo_sqlite3" 102 - "pdo_pgsql" 103 - ]; 104 - default = if config.services.postgresql.enable 105 - then "pdo_pgsql" 106 - else "pdo_sqlite3"; 107 - defaultText = '' 108 - if config.services.postgresql.enable 109 - then "pdo_pgsql" 110 - else "pdo_sqlite3" 111 - ''; 112 - description = mdDoc '' 113 - The database engine name. Can be pdo_sqlite3 or pdo_pgsql. 114 - ''; 87 + conf = mkOption { 88 + type = types.str; 89 + description = '' 90 + Contents of the wallabag configuration file (parameters.yml) 91 + ''; 92 + }; 115 93 }; 94 + }; 116 95 117 - domain = mkOption { 118 - type = types.str; 119 - description = "Bare domain name for Wallabag"; 120 - }; 121 96 122 - virtualHost.enable = mkEnableOption (mdDoc "Define nginx virtualhost for Wallabag"); 123 - }; 97 + config = mkIf cfg.enable { 124 98 125 - config = lib.mkIf cfg.enable { 126 - environment.etc."wallabag/parameters.yml" = { 127 - source = pkgs.writeTextFile { 128 - name = "wallabag-config"; 129 - text = builtins.toJSON { 130 - parameters = settings; 131 - }; 99 + services.phpfpm.pools."${poolName}" = { 100 + user = "${cfg.user}"; 101 + group = "nginx"; 102 + phpPackage = pkgs.php; 103 + phpEnv = { 104 + WALLABAG_DATA = cfg.dataDir; 105 + PATH = lib.makeBinPath [pkgs.php]; 106 + }; 107 + settings = { 108 + "listen.owner" = "nginx"; 109 + "listen.group" = "nginx"; 110 + "listen.mode" = "0600"; 111 + "user" = "${cfg.user}"; 112 + "group" = "nginx"; 113 + "pm" = "dynamic"; 114 + "pm.max_children" = "75"; 115 + "pm.min_spare_servers" = "5"; 116 + "pm.max_spare_servers" = "20"; 117 + "pm.max_requests" = "10"; 118 + "catch_workers_output" = "1"; 119 + "php_admin_value[error_log]" = "stderr"; 120 + "php_admin_flag[log_errors]" = true; 132 121 }; 133 122 }; 123 + services.phpfpm.phpOptions = '' 124 + max_execution_time = 120 125 + ''; 134 126 135 - services.nginx = lib.mkIf cfg.virtualHost.enable { 136 - enable = true; 127 + services.nginx.enable = mkDefault true; 128 + environment.systemPackages = [ console ]; 137 129 138 - virtualHosts = { 139 - "${cfg.domain}" = { 140 - root = "${pkgs.wallabag}/web"; 130 + # services.nginx.virtualHosts."${cfg.hostName}" = { 131 + # forceSSL = false; 132 + # enableACME = false; 133 + # extraConfig = '' 134 + # error_log /var/log/nginx/wallabag_error.log; 135 + # access_log /var/log/nginx/wallabag_access.log; 136 + # ''; 141 137 142 - extraConfig = '' 143 - add_header X-Frame-Options SAMEORIGIN; 144 - add_header X-Content-Type-Options nosniff; 145 - add_header X-XSS-Protection "1; mode=block"; 146 - ''; 138 + # root = "${cfg.package}/web"; 139 + # locations."/" = { 140 + # priority = 10; 141 + # tryFiles = "$uri /app.php$is_args$args"; 142 + # }; 143 + # locations."/assets".root = "${cfg.dataDir}/web"; 144 + # locations."~ ^/app\\.php(/|$)" = { 145 + # priority = 100; 146 + # fastcgiParams = { 147 + # SCRIPT_FILENAME = "$realpath_root$fastcgi_script_name"; 148 + # DOCUMENT_ROOT = "$realpath_root"; 149 + # }; 150 + # extraConfig = '' 151 + # fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket}; 152 + # include ${config.services.nginx.package}/conf/fastcgi_params; 153 + # include ${config.services.nginx.package}/conf/fastcgi.conf; 154 + # internal; 155 + # ''; 156 + # }; 157 + # locations."~ \\.php$" = { 158 + # priority = 1000; 159 + # return = "404"; 160 + # }; 161 + # }; 147 162 148 - locations."/" = { 149 - extraConfig = '' 150 - try_files $uri /app.php$is_args$args; 151 - ''; 152 - }; 153 163 154 - locations."/assets".root = "${pkgs.wallabag}/app/web"; 164 + services.nginx.virtualHosts."${cfg.hostName}" = { 165 + enableACME = false; 166 + forceSSL = false; 167 + root = "${cfg.package}/web"; 155 168 156 - locations."~ ^/app\\.php(/|$)" = { 157 - extraConfig = '' 158 - fastcgi_pass unix:${config.services.phpfpm.pools.wallabag.socket}; 159 - include ${config.services.nginx.package}/conf/fastcgi.conf; 160 - fastcgi_param PATH_INFO $fastcgi_path_info; 161 - fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 162 - fastcgi_param SCRIPT_FILENAME ${pkgs.wallabag}/web/$fastcgi_script_name; 163 - fastcgi_param DOCUMENT_ROOT ${pkgs.wallabag}/web; 164 - fastcgi_read_timeout 120; 165 - internal; 166 - ''; 167 - }; 169 + extraConfig = '' 170 + add_header X-Frame-Options SAMEORIGIN; 171 + add_header X-Content-Type-Options nosniff; 172 + add_header X-XSS-Protection "1; mode=block"; 173 + ''; 168 174 169 - locations."~ /(?!app)\\.php$" = { 170 - extraConfig = '' 171 - return 404; 172 - ''; 173 - }; 174 - }; 175 + locations."/" = { 176 + tryFiles = "$uri /app.php$is_args$args"; 175 177 }; 176 - }; 177 178 178 - services.phpfpm.pools.wallabag = { 179 - user = config.users.users.wallabag.name; 180 - phpPackage = php; 181 - settings = { 182 - "catch_workers_output" = true; 179 + locations."/assets".root = "${cfg.dataDir}/web"; 183 180 184 - "listen.owner" = config.services.nginx.user; 185 - "listen.group" = "root"; 186 - "pm" = "dynamic"; 187 - "pm.max_children" = 5; 188 - "pm.start_servers" = 2; 189 - "pm.min_spare_servers" = 1; 190 - "pm.max_spare_servers" = 3; 191 - "php_admin_value[error_log]" = "/var/log/wallabag/error.log"; 192 - "php_admin_value[access_log]" = "/var/log/wallabag/access.log"; 193 - "php_admin_flag[log_errors]" = true; 181 + locations."~ ^/app\\.php(/|$)" = { 182 + fastcgiParams = { 183 + SCRIPT_FILENAME = "$realpath_root$fastcgi_script_name"; 184 + DOCUMENT_ROOT = "$realpath_root"; 185 + }; 186 + extraConfig = '' 187 + fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket}; 188 + include ${config.services.nginx.package}/conf/fastcgi_params; 189 + include ${config.services.nginx.package}/conf/fastcgi.conf; 190 + internal; 191 + ''; 192 + # extraConfig = '' 193 + # fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket}; 194 + # fastcgi_split_path_info ^(.+\.php)(/.*)$; 195 + # include ${pkgs.nginx}/conf/fastcgi_params; 196 + # fastcgi_param SCRIPT_FILENAME ${cfg.package}/web/$fastcgi_script_name; 197 + # fastcgi_param DOCUMENT_ROOT ${cfg.package}/web; 198 + # fastcgi_read_timeout 120; 199 + # internal; 200 + # ''; 194 201 }; 195 - phpOptions = '' 196 - ; Set up $_ENV superglobal. 197 - ; http://php.net/request-order 198 - variables_order = "EGPCS" 199 - # Wallabag will crash on start-up. 200 - # https://github.com/wallabag/wallabag/issues/6042 201 - # error_reporting = E_ALL & ~E_USER_DEPRECATED & ~E_DEPRECATED 202 - ''; 203 - settings = { 204 - # Accept settings from the systemd service. 205 - clear_env = false; 202 + 203 + locations."~ /(?!app)\\.php$" = { 204 + extraConfig = '' 205 + return 404; 206 + ''; 206 207 }; 207 208 }; 208 209 209 - users.users.wallabag = { 210 - isSystemUser = true; 211 - group = "wallabag"; 212 - }; 213 - users.groups.wallabag = {}; 214 - services.redis.servers.wallabag = { 215 - enable = true; 216 - user = "wallabag"; 217 - }; 218 - services.rabbitmq.enable = false; 219 - 220 - systemd.services.phpfpm-wallabag.serviceConfig = commonServiceConfig; 221 - 222 210 systemd.services.wallabag-install = { 223 211 description = "Wallabag install service"; 224 212 wantedBy = [ "multi-user.target" ]; 225 213 before = [ "phpfpm-wallabag.service" ]; 226 - after = [ "postgresql.service" ]; 214 + after = [ "mysql.service" "postgresql.service" ]; 227 215 path = with pkgs; [ coreutils php phpPackages.composer ]; 228 216 229 217 serviceConfig = { 230 - User = "wallabag"; 218 + User = cfg.user; 231 219 Type = "oneshot"; 232 - } // commonServiceConfig; 220 + RemainAfterExit = "yes"; 221 + PermissionsStartOnly = true; 222 + }; 223 + 224 + preStart = '' 225 + mkdir -p "${cfg.dataDir}" 226 + chown ${cfg.user}:nginx "${cfg.dataDir}" 227 + ''; 233 228 234 229 script = '' 235 - if [ ! -f "$STATE_DIRECTORY/installed" ]; then 236 - php ${pkgs.wallabag}/bin/console --env=prod wallabag:install 237 - touch "$STATE_DIRECTORY/installed" 238 - else 239 - php ${pkgs.wallabag}/bin/console --env=prod doctrine:migrations:migrate --no-interaction 240 - fi 241 - php ${pkgs.wallabag}/bin/console --env=prod cache:clear 242 - ''; 230 + echo "Setting up wallabag files in ${cfg.dataDir} ..." 231 + cd "${cfg.dataDir}" 232 + 233 + rm -rf var/cache/* 234 + rm -f app src translations 235 + ln -sf ${appDir}/app app 236 + ln -sf ${appDir}/src src 237 + ln -sf ${appDir}/translations translations 238 + ln -sf ${cfg.package}/composer.{json,lock} . 239 + 240 + export WALLABAG_DATA="${cfg.dataDir}" 241 + if [ ! -f installed ]; then 242 + echo "Install file not found, installing ..." 243 + php ${cfg.package}/bin/console --env=prod doctrine:database:create --if-not-exists --no-interaction 244 + php ${cfg.package}/bin/console --env=prod doctrine:migrations:migrate --no-interaction 245 + # Until https://github.com/wallabag/wallabag/issues/3662 is fixed 246 + # yes no | php ${cfg.package}/bin/console --env=prod wallabag:install 247 + touch installed 248 + else 249 + php ${cfg.package}/bin/console --env=prod doctrine:migrations:migrate --no-interaction 250 + fi 251 + php ${cfg.package}/bin/console --env=prod cache:clear 252 + ''; 243 253 }; 254 + }; 255 + 256 + meta = with stdenv.lib; { 257 + maintainers = with maintainers; [ nadrieril ]; 244 258 }; 245 259 }
+3 -15
mount-crypted.sh
··· 1 1 #!/usr/bin/env bash 2 - 3 - # nix-shell https://github.com/sgillespie/nixos-yubikey-luks/archive/master.tar.gz 4 - 5 - rbtohex() { 6 - ( od -An -vtx1 | tr -d ' \n' ) 7 - } 8 - 9 - hextorb() { 10 - ( tr '[:lower:]' '[:upper:]' | sed -e 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI'| xargs printf ) 11 - } 12 - 13 2 key_length=512 14 - iterations=1000000 15 - salt="$(head -n 1 /mnt/crypt-storage/default)" 3 + iterations="$(head -n 2 /boot/crypted-storage/default)" 4 + salt="$(head -n 1 /boot/crypted-storage/default)" 16 5 chal="$(echo -n $salt | openssl dgst -binary -sha512 | rbtohex)" 17 6 resp="$(ykchalresp -2 -x $chal 2>/dev/null)" 18 - user_key= 19 - read -r user_key 7 + user_key="$(read -s)" 20 8 luks_key="$(echo -n $user_key | pbkdf2-sha512 $(($key_length / 8)) $iterations $resp | rbtohex)" 21 9 echo -n $luks_key | hextorb | sudo cryptsetup luksOpen /dev/sda2 crypted --key-file=-
-9
overlays/default.nix
··· 14 14 buildInputs = prevAttrs.propagatedBuildInputs ++ [ final.python3.pkgs.aiosqlite ]; # We're using sqlite and upstream doesn't package this dependency 15 15 }); 16 16 17 - wallabag = prev.wallabag.overrideAttrs (attrs: { 18 - patches = builtins.filter (patch: builtins.baseNameOf patch != "wallabag-data.patch") attrs.patches ++ [ 19 - # Out of the box, Wallabag wants to write to various subdirectories of the project directory. 20 - # Letโ€™s replace references to such paths with designated systemd locations 21 - # so that the project source can remain immutable. 22 - ../pkgs/wallabag-data.patch 23 - ]; 24 - }); 25 - 26 17 # Need to do server and agent too, maybe 27 18 # woodpecker-cli-next = 28 19 # let
+1 -6
pkgs/default.nix
··· 5 5 plymouth-themes = pkgs.callPackage ./plymouth.nix { }; 6 6 tic-80 = pkgs.callPackage ./tic-80.nix { }; 7 7 fennel-ls = pkgs.callPackage ./fennel-ls.nix { }; 8 - # kobopatch = pkgs.callPackage ./kobopatch.nix { }; 8 + kobopatch = pkgs.callPackage ./kobopatch.nix { }; 9 9 my-mautrix-discord = pkgs.callPackage ./mautrix-discord.nix { }; # Handled by matrix-appservices input 10 10 ulogger-server = pkgs.callPackage ./ulogger.nix { }; 11 - # Wallabag is now an overlay 12 - # TODO: we still use the patch from this folder though 13 - my-wallabag = pkgs.callPackage ./wallabag.nix { }; 14 - mautrix-slack = pkgs.callPackage ./mautrix-slack.nix { }; 15 - gpodder2go = pkgs.callPackage ./gpodder2go.nix { }; 16 11 }
-14
pkgs/gpodder2go.nix
··· 1 - { pkgs, ... }: 2 - 3 - pkgs.buildGoModule rec { 4 - name = "gpodder2go"; 5 - src = pkgs.fetchFromGitHub { 6 - owner = "oxtyped"; 7 - repo = "gpodder2go"; 8 - rev = "v0.1.2"; 9 - hash = "sha256-RAt0rd4DZwI7b7IEFd1o4s4ivADzgzBzBaeGVL8OmYo"; 10 - }; 11 - 12 - vendorHash = "sha256-mbSgY5WjIAesT27uRgaiRF3N06yuUntjTp6kjUMh6Bw"; 13 - doCheck = false; 14 - }
+3 -3
pkgs/kobopatch.nix
··· 1 1 { lib, buildGoModule, fetchFromGitHub }: 2 2 3 - buildGoModule { 3 + buildGoModule rec { 4 4 name = "kobopatch"; 5 5 version = "0.15.0"; 6 6 7 - vendorHash = "sha256-1i6srhyig4x8mywyc2l8wzzm1afvb7wxmjsr84c447sb1xss6p7x"; 7 + vendorSha256 = "1i6srhyig4x8mywyc2l8wzzm1afvb7wxmjsr84c447sb1xss6p7x"; 8 8 9 9 src = fetchFromGitHub { 10 10 owner = "geek1011"; 11 11 repo = "kobopatch"; 12 12 rev = "653070c67c83ec61884854efc4f8a3132d82a2e5"; 13 - hash = "sha256-09hr3zh0w0f78cx40d2yydqv0mmjdh4iwdgia7sikraphvha85nn"; 13 + sha256 = "09hr3zh0w0f78cx40d2yydqv0mmjdh4iwdgia7sikraphvha85nn"; 14 14 }; 15 15 16 16 meta = with lib; {
+1 -1
pkgs/koboutils.nix
··· 4 4 name = "koboutils"; 5 5 version = "git_2020-04-08"; 6 6 7 - vendorha256 = "1hqvizvbc29yib6awmvlklxkq7j8c0d32gxsipdiwhkh79xbd6wq"; 7 + vendorSha256 = "1hqvizvbc29yib6awmvlklxkq7j8c0d32gxsipdiwhkh79xbd6wq"; 8 8 deleteVendor = true; 9 9 10 10 src = fetchFromGitHub {
-29
pkgs/mautrix-slack.nix
··· 1 - { lib, buildGoModule, fetchFromGitHub, olm }: 2 - 3 - buildGoModule rec { 4 - pname = "mautrix-discord"; 5 - version = "unstable-2022-11-04"; 6 - 7 - src = fetchFromGitHub { 8 - owner = "mautrix"; 9 - repo = "slack"; 10 - rev = "4530ff397d08d93b673cd71da4c2a75d969ca0df"; 11 - hash = ""; 12 - }; 13 - 14 - buildInputs = [ olm ]; 15 - 16 - vendorHash = "sha256-yday2mSnPwuhXWkCG4XY7qoBl3DXHcSvzBoZbjgYz/c="; 17 - 18 - ldflags = [ "-s" "-w" ]; # https://github.com/NixOS/nixpkgs/issues/177698 19 - 20 - doCheck = false; # No tests available 21 - 22 - meta = with lib; { 23 - homepage = "https://go.mau.fi/mautrix-slack"; 24 - description = "Matrix to Slack hybrid puppeting/relaybot bridge"; 25 - license = licenses.agpl3Plus; 26 - maintainers = with maintainers; [ ]; 27 - }; 28 - } 29 -
+2 -2
pkgs/tic-80.nix
··· 10 10 }; 11 11 buildInputs = with pkgs; [ 12 12 gcc 13 - pkg-config 13 + pkgconfig 14 14 autoconf 15 15 automake 16 16 libtool ··· 27 27 gtk3-x11 28 28 cmake 29 29 cmakeCurses 30 - # elementary-cmake-modules 30 + elementary-cmake-modules 31 31 extra-cmake-modules 32 32 libglvnd 33 33 mesa_glu
-55
pkgs/wallabag-data.patch
··· 1 - diff --git a/app/AppKernel.php b/app/AppKernel.php 2 - index 61b734e06..0902c20fc 100644 3 - --- a/app/AppKernel.php 4 - +++ b/app/AppKernel.php 5 - @@ -64,12 +64,12 @@ class AppKernel extends Kernel 6 - 7 - public function getCacheDir() 8 - { 9 - - return dirname(__DIR__) . '/var/cache/' . $this->getEnvironment(); 10 - + return getenv('CACHE_DIRECTORY') . '/' . $this->getEnvironment(); 11 - } 12 - 13 - public function getLogDir() 14 - { 15 - - return dirname(__DIR__) . '/var/logs'; 16 - + return getenv('LOGS_DIRECTORY'); 17 - } 18 - 19 - public function registerContainerConfiguration(LoaderInterface $loader) 20 - diff --git a/app/config/config.yml b/app/config/config.yml 21 - index 7f0a4ca6c..77b5175c8 100644 22 - --- a/app/config/config.yml 23 - +++ b/app/config/config.yml 24 - @@ -1,5 +1,7 @@ 25 - imports: 26 - - - { resource: parameters.yml } 27 - + # Unfortunately, we cannot use %env(string:CONFIGURATION_DIRECTORY)%. Hardcoding the path for simplicity. 28 - + # https://symfony.com/doc/current/service_container/import.html#importing-configuration-with-imports 29 - + - { resource: '/etc/wallabag/parameters.yml' } 30 - - { resource: security.yml } 31 - - { resource: services.yml } 32 - - { resource: wallabag.yml } 33 - @@ -28,7 +30,7 @@ framework: 34 - session: 35 - # handler_id set to null will use default session handler from php.ini 36 - handler_id: session.handler.native_file 37 - - save_path: "%kernel.project_dir%/var/sessions/%kernel.environment%" 38 - + save_path: "%env(string:CACHE_DIRECTORY)%/sessions/%kernel.environment%" 39 - cookie_secure: auto 40 - fragments: ~ 41 - http_method_override: true 42 - diff --git a/app/config/wallabag.yml b/app/config/wallabag.yml 43 - index bd57d6377..8e1cd0970 100644 44 - --- a/app/config/wallabag.yml 45 - +++ b/app/config/wallabag.yml 46 - @@ -35,7 +35,7 @@ wallabag_core: 47 - fetching_error_message: | 48 - wallabag can't retrieve contents for this article. Please <a href="https://doc.wallabag.org/en/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>. 49 - api_limit_mass_actions: 10 50 - - encryption_key_path: "%kernel.project_dir%/data/site-credentials-secret-key.txt" 51 - + encryption_key_path: "%env(string:STATE_DIRECTORY)%/site-credentials-secret-key.txt" 52 - default_internal_settings: 53 - - 54 - name: share_public 55 -
-57
pkgs/wallabag.nix
··· 1 - { lib 2 - , stdenv 3 - , fetchurl 4 - }: 5 - 6 - # Point the environment variable $WALLABAG_DATA to a data directory 7 - # that contains the folder `app` which must be a clone of 8 - # wallabag's configuration files with your customized `parameters.yml`. 9 - # In practice you need to copy `${pkgs.wallabag}/app` and the 10 - # customizzed `parameters.yml` to $WALLABAG_DATA. 11 - # These need to be updated every package upgrade. 12 - # 13 - # After a package upgrade, empty the `var/cache` folder or unexpected 14 - # error will occur. 15 - 16 - let 17 - pname = "wallabag"; 18 - version = "2.6.9"; 19 - in 20 - stdenv.mkDerivation { 21 - inherit pname version; 22 - 23 - # Release tarball includes vendored files 24 - src = fetchurl { 25 - url = "https://github.com/wallabag/wallabag/releases/download/${version}/wallabag-${version}.tar.gz"; 26 - hash = "sha256-V4s5/y9fFAmZ+WnUxU03UyRivEihD1ZUKQOOq4TLEKw="; 27 - }; 28 - 29 - patches = [ 30 - ./wallabag-data.patch # exposes $WALLABAG_DATA 31 - ]; 32 - 33 - dontBuild = true; 34 - 35 - installPhase = '' 36 - runHook preInstall 37 - 38 - mkdir $out 39 - cp -R * $out/ 40 - 41 - runHook postInstall 42 - ''; 43 - 44 - meta = with lib; { 45 - description = "wallabag is a self hostable application for saving web pages"; 46 - longDescription = '' 47 - wallabag is a self-hostable PHP application allowing you to not 48 - miss any content anymore. Click, save and read it when you can. 49 - It extracts content so that you can read it when you have time. 50 - ''; 51 - license = licenses.mit; 52 - homepage = "http://wallabag.org"; 53 - changelog = "https://github.com/wallabag/wallabag/releases/tag/${version}"; 54 - maintainers = with maintainers; [ schneefux ]; 55 - platforms = platforms.all; 56 - }; 57 - }
+1 -9
shell.nix
··· 5 5 default = pkgs.mkShell { 6 6 # Enable experimental features without having to specify the argument 7 7 NIX_CONFIG = "experimental-features = nix-command flakes"; 8 - nativeBuildInputs = with pkgs; [ 9 - nix 10 - home-manager 11 - git 12 - agenix 13 - deploy-rs 14 - dnscontrol 15 - git-bug 16 - ]; 8 + nativeBuildInputs = with pkgs; [ nix home-manager git agenix deploy-rs dnscontrol ]; 17 9 }; 18 10 }