feat: update nix config module

This commit is contained in:
Leon Schwarzäugl 2025-06-11 02:30:20 +02:00
parent a11c7854d1
commit 6b33a182d8
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
11 changed files with 167 additions and 239 deletions

View file

@ -3983,8 +3983,6 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
users = lib.mkDefault true;
env = lib.mkDefault true;
security = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
systemdTimeout = lib.mkDefault true;
hardware = lib.mkDefault true;
pulseaudio = lib.mkDefault true;
@ -4052,8 +4050,6 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
users = lib.mkDefault true;
env = lib.mkDefault true;
security = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
systemdTimeout = lib.mkDefault true;
hardware = lib.mkDefault true;
pulseaudio = lib.mkDefault true;
@ -4256,8 +4252,6 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
home-manager = lib.mkDefault true;
home-managerExtra = lib.mkDefault true;
xserver = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
server = {
@ -4306,8 +4300,6 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
home-manager = lib.mkDefault true;
home-managerExtra = lib.mkDefault true;
xserver = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
server = {
@ -4919,7 +4911,7 @@ A breakdown of the flags being set:
- nix.nixPath: Basically the same as =nix.registry=, but for the legacy nix commands
#+begin_src nix :tangle modules/nixos/common/settings.nix
{ lib, config, outputs, inputs, ... }:
{ lib, pkgs, config, outputs, inputs, ... }:
{
options.swarselsystems.modules.general = lib.mkEnableOption "general nix settings";
config = lib.mkIf config.swarselsystems.modules.general {
@ -4930,6 +4922,11 @@ A breakdown of the flags being set:
};
};
environment.etc."nixos/configuration.nix".source = pkgs.writeText "configuration.nix" ''
assert builtins.trace "This location is not used. The config is found in ${config.swarselsystems.flakePath}!" false;
{ }
'';
nix =
let
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
@ -4956,11 +4953,24 @@ A breakdown of the flags being set:
max-jobs = 1;
use-cgroups = lib.mkIf config.swarselsystems.isLinux true;
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 10d";
};
optimise = {
automatic = true;
dates = "weekly";
};
channel.enable = false;
registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
registry = rec {
nixpkgs.flake = inputs.nixpkgs;
p = nixpkgs;
};
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
};
services.dbus.implementation = "broker";
system.stateVersion = lib.mkDefault "23.05";
};
}
@ -5222,49 +5232,6 @@ Needed for control over system-wide privileges etc. Also I make sure that the ro
}
#+end_src
**** Enable automatic garbage collection
:PROPERTIES:
:CUSTOM_ID: h:9a3b7f1f-d0c3-417e-a262-c920fb25f3ee
:END:
The nix store fills up over time, until =/boot/efi= is filled. This snippet cleans it automatically on a weekly basis.
#+begin_src nix :tangle modules/nixos/common/gc.nix
{ lib, config, ... }:
{
options.swarselsystems.modules.gc = lib.mkEnableOption "garbage collection config";
config = lib.mkIf config.swarselsystems.modules.gc {
nix.gc = {
automatic = true;
randomizedDelaySec = "14m";
dates = "weekly";
options = "--delete-older-than 10d";
};
};
}
#+end_src
**** Enable automatic store optimisation
:PROPERTIES:
:CUSTOM_ID: h:97a2b9f7-c835-4db8-a0e9-e923bab69ee8
:END:
This enables hardlinking identical files in the nix store, to save on disk space. I have read this incurs a significant I/O overhead, I need to keep an eye on this.
#+begin_src nix :tangle modules/nixos/common/store.nix
{ lib, config, ... }:
{
options.swarselsystems.modules.storeOptimize = lib.mkEnableOption "store optimization config";
config = lib.mkIf config.swarselsystems.modules.storeOptimize {
nix.optimise = {
automatic = true;
dates = [ "weekly" ];
};
};
}
#+end_src
**** Reduce systemd timeouts
:PROPERTIES:
:CUSTOM_ID: h:12858442-c129-4aa1-9c9c-a0916e36b302
@ -6709,8 +6676,6 @@ Also, the system state version is set here. No need to touch it.
"${modulesPath}/nixos/common/home-manager.nix"
"${modulesPath}/nixos/common/home-manager-extra.nix"
"${modulesPath}/nixos/common/xserver.nix"
"${modulesPath}/nixos/common/gc.nix"
"${modulesPath}/nixos/common/store.nix"
"${modulesPath}/nixos/common/time.nix"
"${modulesPath}/nixos/common/users.nix"
"${modulesPath}/nixos/common/nix-ld.nix"

View file

@ -46,7 +46,7 @@ in
sharedOptions;
home-manager.users."${primaryUser}" = {
home.stateVersion = lib.mkForce "23.05";
# home.stateVersion = lib.mkForce "23.05";
swarselsystems = lib.recursiveUpdate
{
isLaptop = true;

View file

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2025-06-11 Mi 02:13 -->
<!-- 2025-06-11 Mi 02:27 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>SwarselSystems: NixOS + Emacs Configuration</title>
@ -263,9 +263,9 @@
<li><a href="#h:7056b9a0-f38b-4bca-b2ba-ab34e2d73493">3.1.4.3. Home-manager only (default non-NixOS)</a></li>
<li><a href="#h:e1498bef-ec67-483d-bf02-76264e30be8e">3.1.4.4. ChaosTheatre (Demo Physical/VM)</a>
<ul>
<li><a href="#orgd338b08">3.1.4.4.1. Main configuration</a></li>
<li><a href="#orgc8f8cbc">3.1.4.4.2. NixOS dummy options configuration</a></li>
<li><a href="#orga9a043c">3.1.4.4.3. home-manager dummy options configuration</a></li>
<li><a href="#org4964f49">3.1.4.4.1. Main configuration</a></li>
<li><a href="#orgbfce898">3.1.4.4.2. NixOS dummy options configuration</a></li>
<li><a href="#org43ab5be">3.1.4.4.3. home-manager dummy options configuration</a></li>
</ul>
</li>
</ul>
@ -305,8 +305,8 @@
<li><a href="#h:36d6c17c-6d91-4297-b76d-9d7feab6c1a0">3.2.1.27. fhs</a></li>
<li><a href="#h:814d5e7f-4b95-412d-b246-33f888514ec6">3.2.1.28. swarsel-displaypower</a></li>
<li><a href="#h:799579f3-ddd3-4f76-928a-a8c665980476">3.2.1.29. swarsel-mgba</a></li>
<li><a href="#org0e1f6ca">3.2.1.30. swarsel-deploy</a></li>
<li><a href="#org8dd4d59">3.2.1.31. sshrm</a></li>
<li><a href="#orgeae634d">3.2.1.30. swarsel-deploy</a></li>
<li><a href="#org574cd6d">3.2.1.31. sshrm</a></li>
</ul>
</li>
<li><a href="#h:5e3e21e0-57af-4dad-b32f-6400af9b7aab">3.2.2. Overlays (additions, overrides, nixpkgs-stable)</a></li>
@ -314,37 +314,37 @@
<ul>
<li><a href="#h:14e68518-8ec7-48ec-b208-0e3d6d49954d">3.2.3.1. NixOS</a>
<ul>
<li><a href="#orgdd9d40e">3.2.3.1.1. Personal</a></li>
<li><a href="#org3eac254">3.2.3.1.2. Chaostheatre</a></li>
<li><a href="#org25edfe0">3.2.3.1.3. toto</a></li>
<li><a href="#org68fa02f">3.2.3.1.4. Work</a></li>
<li><a href="#orgb25d40f">3.2.3.1.5. Framework</a></li>
<li><a href="#orgdad73fe">3.2.3.1.6. AMD CPU</a></li>
<li><a href="#orge755b1b">3.2.3.1.7. AMD GPU</a></li>
<li><a href="#org70cdc6a">3.2.3.1.8. Hibernation</a></li>
<li><a href="#org76f803a">3.2.3.1.9. BTRFS</a></li>
<li><a href="#orgf393e5f">3.2.3.1.10. Local Server</a></li>
<li><a href="#org2eb8736">3.2.3.1.11. OCI Sync Server</a></li>
<li><a href="#org9540c81">3.2.3.1.1. Personal</a></li>
<li><a href="#orgb031aa7">3.2.3.1.2. Chaostheatre</a></li>
<li><a href="#orge3b8a11">3.2.3.1.3. toto</a></li>
<li><a href="#org97e8434">3.2.3.1.4. Work</a></li>
<li><a href="#org1651e06">3.2.3.1.5. Framework</a></li>
<li><a href="#orgfb7e7ef">3.2.3.1.6. AMD CPU</a></li>
<li><a href="#org28d376c">3.2.3.1.7. AMD GPU</a></li>
<li><a href="#orge0f7e21">3.2.3.1.8. Hibernation</a></li>
<li><a href="#org57279ad">3.2.3.1.9. BTRFS</a></li>
<li><a href="#org9389ad4">3.2.3.1.10. Local Server</a></li>
<li><a href="#org62936e1">3.2.3.1.11. OCI Sync Server</a></li>
</ul>
</li>
<li><a href="#h:ced5841f-c088-4d88-b3a1-7d62aad8837b">3.2.3.2. home-manager</a>
<ul>
<li><a href="#orgfcf3911">3.2.3.2.1. Personal</a></li>
<li><a href="#org9582cbb">3.2.3.2.2. Chaostheatre</a></li>
<li><a href="#org12bf9e6">3.2.3.2.3. toto</a></li>
<li><a href="#org1e8da31">3.2.3.2.4. Work</a></li>
<li><a href="#org203c8ec">3.2.3.2.5. Framework</a></li>
<li><a href="#org9c7c1fa">3.2.3.2.6. Darwin</a></li>
<li><a href="#org74c8c2d">3.2.3.2.7. Local Server</a></li>
<li><a href="#org504871a">3.2.3.2.1. Personal</a></li>
<li><a href="#org2efe6c4">3.2.3.2.2. Chaostheatre</a></li>
<li><a href="#org8a77e3c">3.2.3.2.3. toto</a></li>
<li><a href="#orgf5221b5">3.2.3.2.4. Work</a></li>
<li><a href="#orgfe652dc">3.2.3.2.5. Framework</a></li>
<li><a href="#org937a4bd">3.2.3.2.6. Darwin</a></li>
<li><a href="#orga153f41">3.2.3.2.7. Local Server</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#h:4d38c9f7-2680-4c02-a1f4-ed8db0d55ce4">3.2.4. Library functions</a></li>
<li><a href="#org083dac2">3.2.5. Auxiliary files</a>
<li><a href="#org07b63f7">3.2.5. Auxiliary files</a>
<ul>
<li><a href="#orgfa509ef">3.2.5.1. extra-builtins</a></li>
<li><a href="#orgcd7312a">3.2.5.2. sops-decrypt-and-cache</a></li>
<li><a href="#orge66996a">3.2.5.1. extra-builtins</a></li>
<li><a href="#org92dfdc5">3.2.5.2. sops-decrypt-and-cache</a></li>
</ul>
</li>
</ul>
@ -384,7 +384,7 @@
<li><a href="#h:f101daa2-604d-4553-99e2-f64b9c207f51">3.3.1.20.3. enable GVfs</a></li>
<li><a href="#h:08d213d5-a9f4-4309-8635-ba557b01dc7d">3.3.1.20.4. interception-tools: Make CAPS work as ESC/CTRL</a></li>
<li><a href="#h:82fbba41-3a46-4db7-aade-49e4c23fc475">3.3.1.20.5. power-profiles-daemon</a></li>
<li><a href="#org7d66c15">3.3.1.20.6. SwayOSD</a></li>
<li><a href="#orga0912b6">3.3.1.20.6. SwayOSD</a></li>
</ul>
</li>
<li><a href="#h:7a89b5e3-b700-4167-8b14-2b8172f33936">3.3.1.21. Hardware compatibility settings (Yubikey, Ledger, Keyboards) - udev rules</a>
@ -436,7 +436,7 @@
<li><a href="#h:9da3df74-6fc5-4ee1-a345-23ab4e8a613d">3.3.2.24. FreshRSS</a></li>
<li><a href="#h:a9965660-4358-4b9a-8c46-d55f28598344">3.3.2.25. forgejo (git server)</a></li>
<li><a href="#h:cb3f6552-7751-4f9a-b4c7-8d8ba5b255c4">3.3.2.26. Anki Sync Server</a></li>
<li><a href="#org5c1eff2">3.3.2.27. IDM (kanidm + oauth2-proxy)</a></li>
<li><a href="#orga72fc5f">3.3.2.27. IDM (kanidm + oauth2-proxy)</a></li>
</ul>
</li>
<li><a href="#h:ac0cd8b3-06cf-4dca-ba73-6100c8fedb47">3.3.3. Darwin</a>
@ -451,11 +451,11 @@
<li><a href="#h:34db28fb-62f7-4597-a9ff-0de2991a8415">3.3.4.3. VmWare</a></li>
<li><a href="#h:fa8d9ec4-3e22-458a-9239-859cffe7f55c">3.3.4.4. Auto-login</a></li>
<li><a href="#h:5c41c4ee-22ca-405b-9e4f-cc4051634edd">3.3.4.5. nswitch-rcm</a></li>
<li><a href="#org0b892d4">3.3.4.6. Framework</a></li>
<li><a href="#org131181f">3.3.4.7. AMD CPU</a></li>
<li><a href="#org7a2eac9">3.3.4.8. AMD GPU</a></li>
<li><a href="#orgcec36da">3.3.4.9. Hibernation</a></li>
<li><a href="#org5a89e28">3.3.4.10. BTRFS</a></li>
<li><a href="#orge86d03d">3.3.4.6. Framework</a></li>
<li><a href="#org9bb01a6">3.3.4.7. AMD CPU</a></li>
<li><a href="#org2ed326a">3.3.4.8. AMD GPU</a></li>
<li><a href="#org001805e">3.3.4.9. Hibernation</a></li>
<li><a href="#org7477124">3.3.4.10. BTRFS</a></li>
<li><a href="#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf">3.3.4.11. work</a></li>
<li><a href="#h:3fc1d301-7bae-4678-9085-d12c23eed8ac">3.3.4.12. Minimal Install</a></li>
</ul>
@ -504,7 +504,7 @@
<li><a href="#h:cb812c8a-247c-4ce5-a00c-59332c2f5fb9">3.4.1.29.1. gnome-keyring</a></li>
<li><a href="#h:be6afd89-9e1e-40b6-8542-5c07a0ab780d">3.4.1.29.2. KDE Connect</a></li>
<li><a href="#h:99d05729-df35-4958-9940-3319d6a41359">3.4.1.29.3. Mako</a></li>
<li><a href="#org2defd4e">3.4.1.29.4. SwayOSD</a></li>
<li><a href="#orgd46f1e1">3.4.1.29.4. SwayOSD</a></li>
<li><a href="#h:1598c90b-f195-41a0-9132-94612edf3586">3.4.1.29.5. yubikey-touch-detector</a></li>
</ul>
</li>
@ -529,7 +529,7 @@
<ul>
<li><a href="#h:84fd7029-ecb6-4131-9333-289982f24ffa">3.4.4.1. Gaming</a></li>
<li><a href="#h:f0b2ea93-94c8-48d8-8d47-6fe58f58e0e6">3.4.4.2. Work</a></li>
<li><a href="#org4b44dda">3.4.4.3. Framework</a></li>
<li><a href="#org0b1babc">3.4.4.3. Framework</a></li>
</ul>
</li>
</ul>
@ -707,7 +707,7 @@
<ul>
<li><a href="#h:c1e53aed-fb47-4aff-930c-dc52f3c5dcb8">6.1. Server Emacs config</a></li>
<li><a href="#h:fc64f42f-e7cf-4829-89f6-2d0d58e04f51">6.2. tridactylrc</a></li>
<li><a href="#orgf1e21cc">6.3. tridactyl theme</a></li>
<li><a href="#org13d682a">6.3. tridactyl theme</a></li>
<li><a href="#h:77b1c523-5074-4610-b320-90af95e6134d">6.4. Waybar style.css</a></li>
<li><a href="#h:788937cf-8816-466b-8e57-1b695cb50f52">6.5. justfile</a></li>
</ul>
@ -716,7 +716,7 @@
</div>
</div>
<p>
<b>This file has 66261 words spanning 17435 lines and was last revised on 2025-06-11 02:13:52 +0200.</b>
<b>This file has 66145 words spanning 17412 lines and was last revised on 2025-06-11 02:27:48 +0200.</b>
</p>
<p>
@ -769,7 +769,7 @@ This section defines my Emacs configuration. For a while, I considered to use ry
</p>
<p>
My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2025-06-11 02:13:52 +0200)
My emacs is built using the emacs-overlay nix flake, which builds a bleeding edge emacs on wayland (pgtk) with utilities like treesitter support. By executing the below source block, the current build setting can be updated at any time, and you can see my most up-to-date build options (last updated: 2025-06-11 02:27:48 +0200)
</p></li>
</ul>
@ -2906,8 +2906,8 @@ This is just a demo host. It applies all the configuration found in the common p
I also set the <code>WLR_RENDERER_ALLOW_SOFTWARE=1</code> to allow this configuration to run in a virtualized environment. I also enable <code>qemuGuest</code> for a smoother experience when testing on QEMU.
</p>
</div>
<div id="outline-container-orgd338b08" class="outline-6">
<h6 id="orgd338b08"><span class="section-number-6">3.1.4.4.1.</span> Main configuration</h6>
<div id="outline-container-org4964f49" class="outline-6">
<h6 id="org4964f49"><span class="section-number-6">3.1.4.4.1.</span> Main configuration</h6>
<div class="outline-text-6" id="text-3-1-4-4-1">
<div class="org-src-container">
<pre class="src src-nix">{ self, inputs, config, pkgs, lib, primaryUser, ... }:
@ -2986,8 +2986,8 @@ in
</div>
</div>
</div>
<div id="outline-container-orgc8f8cbc" class="outline-6">
<h6 id="orgc8f8cbc"><span class="section-number-6">3.1.4.4.2.</span> NixOS dummy options configuration</h6>
<div id="outline-container-orgbfce898" class="outline-6">
<h6 id="orgbfce898"><span class="section-number-6">3.1.4.4.2.</span> NixOS dummy options configuration</h6>
<div class="outline-text-6" id="text-3-1-4-4-2">
<div class="org-src-container">
<pre class="src src-nix">_:
@ -2997,8 +2997,8 @@ in
</div>
</div>
</div>
<div id="outline-container-orga9a043c" class="outline-6">
<h6 id="orga9a043c"><span class="section-number-6">3.1.4.4.3.</span> home-manager dummy options configuration</h6>
<div id="outline-container-org43ab5be" class="outline-6">
<h6 id="org43ab5be"><span class="section-number-6">3.1.4.4.3.</span> home-manager dummy options configuration</h6>
<div class="outline-text-6" id="text-3-1-4-4-3">
<div class="org-src-container">
<pre class="src src-nix">_:
@ -4779,8 +4779,8 @@ appimageTools.wrapType2 {
</div>
</div>
</div>
<div id="outline-container-org0e1f6ca" class="outline-5">
<h5 id="org0e1f6ca"><span class="section-number-5">3.2.1.30.</span> swarsel-deploy</h5>
<div id="outline-container-orgeae634d" class="outline-5">
<h5 id="orgeae634d"><span class="section-number-5">3.2.1.30.</span> swarsel-deploy</h5>
<div class="outline-text-5" id="text-3-2-1-30">
<div class="org-src-container">
<pre class="src src-nix"># heavily inspired from https://github.com/oddlama/nix-config/blob/d42cbde676001a7ad8a3cace156e050933a4dcc3/pkgs/deploy.nix
@ -4912,8 +4912,8 @@ writeShellApplication {
</div>
</div>
</div>
<div id="outline-container-org8dd4d59" class="outline-5">
<h5 id="org8dd4d59"><span class="section-number-5">3.2.1.31.</span> sshrm</h5>
<div id="outline-container-org574cd6d" class="outline-5">
<h5 id="org574cd6d"><span class="section-number-5">3.2.1.31.</span> sshrm</h5>
<div class="outline-text-5" id="text-3-2-1-31">
<p>
This programs simply runs ssh-keygen on the last host that I tried to ssh into. I need this frequently when working with cloud-init usually.
@ -5070,8 +5070,8 @@ in
</pre>
</div>
</div>
<div id="outline-container-orgdd9d40e" class="outline-6">
<h6 id="orgdd9d40e"><span class="section-number-6">3.2.3.1.1.</span> Personal</h6>
<div id="outline-container-org9540c81" class="outline-6">
<h6 id="org9540c81"><span class="section-number-6">3.2.3.1.1.</span> Personal</h6>
<div class="outline-text-6" id="text-3-2-3-1-1">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5140,8 +5140,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org3eac254" class="outline-6">
<h6 id="org3eac254"><span class="section-number-6">3.2.3.1.2.</span> Chaostheatre</h6>
<div id="outline-container-orgb031aa7" class="outline-6">
<h6 id="orgb031aa7"><span class="section-number-6">3.2.3.1.2.</span> Chaostheatre</h6>
<div class="outline-text-6" id="text-3-2-3-1-2">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5203,8 +5203,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org25edfe0" class="outline-6">
<h6 id="org25edfe0"><span class="section-number-6">3.2.3.1.3.</span> toto</h6>
<div id="outline-container-orge3b8a11" class="outline-6">
<h6 id="orge3b8a11"><span class="section-number-6">3.2.3.1.3.</span> toto</h6>
<div class="outline-text-6" id="text-3-2-3-1-3">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5236,8 +5236,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org68fa02f" class="outline-6">
<h6 id="org68fa02f"><span class="section-number-6">3.2.3.1.4.</span> Work</h6>
<div id="outline-container-org97e8434" class="outline-6">
<h6 id="org97e8434"><span class="section-number-6">3.2.3.1.4.</span> Work</h6>
<div class="outline-text-6" id="text-3-2-3-1-4">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5258,8 +5258,8 @@ in
</div>
</div>
</div>
<div id="outline-container-orgb25d40f" class="outline-6">
<h6 id="orgb25d40f"><span class="section-number-6">3.2.3.1.5.</span> Framework</h6>
<div id="outline-container-org1651e06" class="outline-6">
<h6 id="org1651e06"><span class="section-number-6">3.2.3.1.5.</span> Framework</h6>
<div class="outline-text-6" id="text-3-2-3-1-5">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5280,8 +5280,8 @@ in
</div>
</div>
</div>
<div id="outline-container-orgdad73fe" class="outline-6">
<h6 id="orgdad73fe"><span class="section-number-6">3.2.3.1.6.</span> AMD CPU</h6>
<div id="outline-container-orgfb7e7ef" class="outline-6">
<h6 id="orgfb7e7ef"><span class="section-number-6">3.2.3.1.6.</span> AMD CPU</h6>
<div class="outline-text-6" id="text-3-2-3-1-6">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5302,8 +5302,8 @@ in
</div>
</div>
</div>
<div id="outline-container-orge755b1b" class="outline-6">
<h6 id="orge755b1b"><span class="section-number-6">3.2.3.1.7.</span> AMD GPU</h6>
<div id="outline-container-org28d376c" class="outline-6">
<h6 id="org28d376c"><span class="section-number-6">3.2.3.1.7.</span> AMD GPU</h6>
<div class="outline-text-6" id="text-3-2-3-1-7">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5324,8 +5324,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org70cdc6a" class="outline-6">
<h6 id="org70cdc6a"><span class="section-number-6">3.2.3.1.8.</span> Hibernation</h6>
<div id="outline-container-orge0f7e21" class="outline-6">
<h6 id="orge0f7e21"><span class="section-number-6">3.2.3.1.8.</span> Hibernation</h6>
<div class="outline-text-6" id="text-3-2-3-1-8">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5346,8 +5346,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org76f803a" class="outline-6">
<h6 id="org76f803a"><span class="section-number-6">3.2.3.1.9.</span> BTRFS</h6>
<div id="outline-container-org57279ad" class="outline-6">
<h6 id="org57279ad"><span class="section-number-6">3.2.3.1.9.</span> BTRFS</h6>
<div class="outline-text-6" id="text-3-2-3-1-9">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5368,8 +5368,8 @@ in
</div>
</div>
</div>
<div id="outline-container-orgf393e5f" class="outline-6">
<h6 id="orgf393e5f"><span class="section-number-6">3.2.3.1.10.</span> Local Server</h6>
<div id="outline-container-org9389ad4" class="outline-6">
<h6 id="org9389ad4"><span class="section-number-6">3.2.3.1.10.</span> Local Server</h6>
<div class="outline-text-6" id="text-3-2-3-1-10">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5420,8 +5420,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org2eb8736" class="outline-6">
<h6 id="org2eb8736"><span class="section-number-6">3.2.3.1.11.</span> OCI Sync Server</h6>
<div id="outline-container-org62936e1" class="outline-6">
<h6 id="org62936e1"><span class="section-number-6">3.2.3.1.11.</span> OCI Sync Server</h6>
<div class="outline-text-6" id="text-3-2-3-1-11">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5476,8 +5476,8 @@ in
</pre>
</div>
</div>
<div id="outline-container-orgfcf3911" class="outline-6">
<h6 id="orgfcf3911"><span class="section-number-6">3.2.3.2.1.</span> Personal</h6>
<div id="outline-container-org504871a" class="outline-6">
<h6 id="org504871a"><span class="section-number-6">3.2.3.2.1.</span> Personal</h6>
<div class="outline-text-6" id="text-3-2-3-2-1">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5534,8 +5534,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org9582cbb" class="outline-6">
<h6 id="org9582cbb"><span class="section-number-6">3.2.3.2.2.</span> Chaostheatre</h6>
<div id="outline-container-org2efe6c4" class="outline-6">
<h6 id="org2efe6c4"><span class="section-number-6">3.2.3.2.2.</span> Chaostheatre</h6>
<div class="outline-text-6" id="text-3-2-3-2-2">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5587,8 +5587,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org12bf9e6" class="outline-6">
<h6 id="org12bf9e6"><span class="section-number-6">3.2.3.2.3.</span> toto</h6>
<div id="outline-container-org8a77e3c" class="outline-6">
<h6 id="org8a77e3c"><span class="section-number-6">3.2.3.2.3.</span> toto</h6>
<div class="outline-text-6" id="text-3-2-3-2-3">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5608,8 +5608,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org1e8da31" class="outline-6">
<h6 id="org1e8da31"><span class="section-number-6">3.2.3.2.4.</span> Work</h6>
<div id="outline-container-orgf5221b5" class="outline-6">
<h6 id="orgf5221b5"><span class="section-number-6">3.2.3.2.4.</span> Work</h6>
<div class="outline-text-6" id="text-3-2-3-2-4">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5629,8 +5629,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org203c8ec" class="outline-6">
<h6 id="org203c8ec"><span class="section-number-6">3.2.3.2.5.</span> Framework</h6>
<div id="outline-container-orgfe652dc" class="outline-6">
<h6 id="orgfe652dc"><span class="section-number-6">3.2.3.2.5.</span> Framework</h6>
<div class="outline-text-6" id="text-3-2-3-2-5">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5651,8 +5651,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org9c7c1fa" class="outline-6">
<h6 id="org9c7c1fa"><span class="section-number-6">3.2.3.2.6.</span> Darwin</h6>
<div id="outline-container-org937a4bd" class="outline-6">
<h6 id="org937a4bd"><span class="section-number-6">3.2.3.2.6.</span> Darwin</h6>
<div class="outline-text-6" id="text-3-2-3-2-6">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5670,8 +5670,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org74c8c2d" class="outline-6">
<h6 id="org74c8c2d"><span class="section-number-6">3.2.3.2.7.</span> Local Server</h6>
<div id="outline-container-orga153f41" class="outline-6">
<h6 id="orga153f41"><span class="section-number-6">3.2.3.2.7.</span> Local Server</h6>
<div class="outline-text-6" id="text-3-2-3-2-7">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -5902,12 +5902,12 @@ in
</div>
</div>
</div>
<div id="outline-container-org083dac2" class="outline-4">
<h4 id="org083dac2"><span class="section-number-4">3.2.5.</span> Auxiliary files</h4>
<div id="outline-container-org07b63f7" class="outline-4">
<h4 id="org07b63f7"><span class="section-number-4">3.2.5.</span> Auxiliary files</h4>
<div class="outline-text-4" id="text-3-2-5">
</div>
<div id="outline-container-orgfa509ef" class="outline-5">
<h5 id="orgfa509ef"><span class="section-number-5">3.2.5.1.</span> extra-builtins</h5>
<div id="outline-container-orge66996a" class="outline-5">
<h5 id="orge66996a"><span class="section-number-5">3.2.5.1.</span> extra-builtins</h5>
<div class="outline-text-5" id="text-3-2-5-1">
<div class="org-src-container">
<pre class="src src-nix">
@ -5932,20 +5932,18 @@ in
"The file to decrypt must be given as a path to prevent impurity.";
assert assertMsg (hasSuffix ".nix.age" nixFile)
"The content of the decrypted file must be a nix expression and should therefore end in .nix.age";
exec (
[
exec [
./sops-decrypt-and-cache.sh
nixFile
]
);
];
}
</pre>
</div>
</div>
</div>
<div id="outline-container-orgcd7312a" class="outline-5">
<h5 id="orgcd7312a"><span class="section-number-5">3.2.5.2.</span> sops-decrypt-and-cache</h5>
<div id="outline-container-org92dfdc5" class="outline-5">
<h5 id="org92dfdc5"><span class="section-number-5">3.2.5.2.</span> sops-decrypt-and-cache</h5>
<div class="outline-text-5" id="text-3-2-5-2">
<div class="org-src-container">
<pre class="src src-shell">#!/usr/bin/env bash
@ -5953,9 +5951,9 @@ in
set -euo pipefail
print_out_path=false
if [[ "$1" == "--print-out-path" ]]; then
print_out_path=true
shift
if [[ $1 == "--print-out-path" ]]; then
print_out_path=true
shift
fi
file="$1"
@ -5963,8 +5961,8 @@ shift
basename="$file"
# store path prefix or ./ if applicable
[[ "$file" == "/nix/store/"* ]] &amp;&amp; basename="${basename#*"-"}"
[[ "$file" == "./"* ]] &amp;&amp; basename="${basename#"./"}"
[[ $file == "/nix/store/"* ]] &amp;&amp; basename="${basename#*"-"}"
[[ $file == "./"* ]] &amp;&amp; basename="${basename#"./"}"
# Calculate a unique content-based identifier (relocations of
# the source file in the nix store should not affect caching)
@ -5977,16 +5975,16 @@ umask 077
mkdir -p "$(dirname "$out")"
# Decrypt only if necessary
if [[ ! -e "$out" ]]; then
agekey=$(sudo ssh-to-age -private-key -i /etc/ssh/sops || sudo ssh-to-age -private-key -i /etc/ssh/ssh_host_ed25519_key)
SOPS_AGE_KEY="$agekey" sops decrypt "${args[@]}" --output "$out" "$file"
if [[ ! -e $out ]]; then
agekey=$(sudo ssh-to-age -private-key -i /etc/ssh/sops || sudo ssh-to-age -private-key -i /etc/ssh/ssh_host_ed25519_key)
SOPS_AGE_KEY="$agekey" sops decrypt --output "$out" "$file"
fi
# Print out path or decrypted content
if [[ "$print_out_path" == true ]]; then
echo "$out"
if [[ $print_out_path == true ]]; then
echo "$out"
else
cat "$out"
cat "$out"
fi
</pre>
</div>
@ -6193,19 +6191,11 @@ A breakdown of the flags being set:
dates = "weekly";
};
channel.enable = false;
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
registry = rec {
nixpkgs.flake = inputs.nixpkgs;
p = nixpkgs;
};
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
# extraOptions = ''
# plugin-files = ${pkgs.nix-plugins.overrideAttrs (o: {
# buildInputs = [pkgs.nixVersions.latest pkgs.boost];
# patches = (o.patches or []) ++ [ "${self}/nix/nix-plugins.patch" ];
# })}/lib/nix/plugins
# extra-builtins-file = ${self + /nix/extra-builtins.nix}
# '';
};
services.dbus.implementation = "broker";
@ -6224,21 +6214,8 @@ Mostly used to install some compilers and lsp's that I want to have available wh
</p>
<div class="org-src-container">
<pre class="src src-nix">{ self, lib, config, pkgs, ... }:
# let
# Try to access the extra builtin we loaded via nix-plugins.
# Throw an error if that doesn't exist.
# sopsImportEncrypted =
# assert lib.assertMsg (builtins ? extraBuiltins.sopsImportEncrypted)
# "The extra builtin sopsImportEncrypted' is not available, so repo.secrets cannot be decrypted. Did you forget to add nix-plugins and point it to `./nix/extra-builtins.nix` ?";
# builtins.extraBuiltins.sopsImportEncrypted;
# secretFile = ../../../secrets/repo/packages.nix.age;
# in
<pre class="src src-nix">{ lib, config, pkgs, ... }:
{
# imports = [
# (sopsImportEncrypted secretFile)
# ];
options.swarselsystems.modules.packages = lib.mkEnableOption "install packages";
config = lib.mkIf config.swarselsystems.modules.packages {
environment.systemPackages = with pkgs; [
@ -7324,8 +7301,8 @@ Most of the time I am using <code>power-saver</code>, however, it is good to be
</div>
</div>
</div>
<div id="outline-container-org7d66c15" class="outline-6">
<h6 id="org7d66c15"><span class="section-number-6">3.3.1.20.6.</span> SwayOSD</h6>
<div id="outline-container-orga0912b6" class="outline-6">
<h6 id="orga0912b6"><span class="section-number-6">3.3.1.20.6.</span> SwayOSD</h6>
<div class="outline-text-6" id="text-3-3-1-20-6">
<div class="org-src-container">
<pre class="src src-nix">{ lib, pkgs, config, ... }:
@ -10170,8 +10147,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org5c1eff2" class="outline-5">
<h5 id="org5c1eff2"><span class="section-number-5">3.3.2.27.</span> IDM (kanidm + oauth2-proxy)</h5>
<div id="outline-container-orga72fc5f" class="outline-5">
<h5 id="orga72fc5f"><span class="section-number-5">3.3.2.27.</span> IDM (kanidm + oauth2-proxy)</h5>
<div class="outline-text-5" id="text-3-3-2-27">
<p>
The forgejo configuration is a little broken and will show a 500 error when signing in through kanidm. However, when pressing back and refreshing the page, I am logged in. Currently I cannot be bothered to fix this.
@ -10732,8 +10709,8 @@ This smashes Atmosphere 1.3.2 on the switch, which is what I am currenty using.
</div>
</div>
</div>
<div id="outline-container-org0b892d4" class="outline-5">
<h5 id="org0b892d4"><span class="section-number-5">3.3.4.6.</span> Framework</h5>
<div id="outline-container-orge86d03d" class="outline-5">
<h5 id="orge86d03d"><span class="section-number-5">3.3.4.6.</span> Framework</h5>
<div class="outline-text-5" id="text-3-3-4-6">
<p>
This holds configuration that is specific to framework laptops.
@ -10771,8 +10748,8 @@ This holds configuration that is specific to framework laptops.
</div>
</div>
</div>
<div id="outline-container-org131181f" class="outline-5">
<h5 id="org131181f"><span class="section-number-5">3.3.4.7.</span> AMD CPU</h5>
<div id="outline-container-org9bb01a6" class="outline-5">
<h5 id="org9bb01a6"><span class="section-number-5">3.3.4.7.</span> AMD CPU</h5>
<div class="outline-text-5" id="text-3-3-4-7">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -10788,8 +10765,8 @@ This holds configuration that is specific to framework laptops.
</div>
</div>
</div>
<div id="outline-container-org7a2eac9" class="outline-5">
<h5 id="org7a2eac9"><span class="section-number-5">3.3.4.8.</span> AMD GPU</h5>
<div id="outline-container-org2ed326a" class="outline-5">
<h5 id="org2ed326a"><span class="section-number-5">3.3.4.8.</span> AMD GPU</h5>
<div class="outline-text-5" id="text-3-3-4-8">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -10811,8 +10788,8 @@ This holds configuration that is specific to framework laptops.
</div>
</div>
</div>
<div id="outline-container-orgcec36da" class="outline-5">
<h5 id="orgcec36da"><span class="section-number-5">3.3.4.9.</span> Hibernation</h5>
<div id="outline-container-org001805e" class="outline-5">
<h5 id="org001805e"><span class="section-number-5">3.3.4.9.</span> Hibernation</h5>
<div class="outline-text-5" id="text-3-3-4-9">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -10843,8 +10820,8 @@ This holds configuration that is specific to framework laptops.
</div>
</div>
</div>
<div id="outline-container-org5a89e28" class="outline-5">
<h5 id="org5a89e28"><span class="section-number-5">3.3.4.10.</span> BTRFS</h5>
<div id="outline-container-org7477124" class="outline-5">
<h5 id="org7477124"><span class="section-number-5">3.3.4.10.</span> BTRFS</h5>
<div class="outline-text-5" id="text-3-3-4-10">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -13796,8 +13773,8 @@ The `extraConfig` section here CANNOT be reindented. This has something to do wi
</div>
</div>
</div>
<div id="outline-container-org2defd4e" class="outline-6">
<h6 id="org2defd4e"><span class="section-number-6">3.4.1.29.4.</span> SwayOSD</h6>
<div id="outline-container-orgd46f1e1" class="outline-6">
<h6 id="orgd46f1e1"><span class="section-number-6">3.4.1.29.4.</span> SwayOSD</h6>
<div class="outline-text-6" id="text-3-4-1-29-4">
<div class="org-src-container">
<pre class="src src-nix">{ lib, config, ... }:
@ -15046,8 +15023,8 @@ in
</div>
</div>
</div>
<div id="outline-container-org4b44dda" class="outline-5">
<h5 id="org4b44dda"><span class="section-number-5">3.4.4.3.</span> Framework</h5>
<div id="outline-container-org0b1babc" class="outline-5">
<h5 id="org0b1babc"><span class="section-number-5">3.4.4.3.</span> Framework</h5>
<div class="outline-text-5" id="text-3-4-4-3">
<p>
This holds configuration that is specific to framework laptops.
@ -18887,8 +18864,8 @@ autocmd DocStart vc-impimba-1.m.imp.ac.at/ui/webconsole mode ignore
</div>
</div>
</div>
<div id="outline-container-orgf1e21cc" class="outline-3">
<h3 id="orgf1e21cc"><span class="section-number-3">6.3.</span> tridactyl theme</h3>
<div id="outline-container-org13d682a" class="outline-3">
<h3 id="org13d682a"><span class="section-number-3">6.3.</span> tridactyl theme</h3>
<div class="outline-text-3" id="text-6-3">
<div class="org-src-container">
<pre class="src src-config">
@ -19385,7 +19362,7 @@ sync USER HOST:
</div>
<div id="postamble" class="status">
<p class="author">Author: Leon Schwarzäugl</p>
<p class="date">Created: 2025-06-11 Mi 02:13</p>
<p class="date">Created: 2025-06-11 Mi 02:27</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>

View file

@ -1,12 +0,0 @@
{ lib, config, ... }:
{
options.swarselsystems.modules.gc = lib.mkEnableOption "garbage collection config";
config = lib.mkIf config.swarselsystems.modules.gc {
nix.gc = {
automatic = true;
randomizedDelaySec = "14m";
dates = "weekly";
options = "--delete-older-than 10d";
};
};
}

View file

@ -1,4 +1,4 @@
{ lib, config, outputs, inputs, ... }:
{ lib, pkgs, config, outputs, inputs, ... }:
{
options.swarselsystems.modules.general = lib.mkEnableOption "general nix settings";
config = lib.mkIf config.swarselsystems.modules.general {
@ -9,6 +9,11 @@
};
};
environment.etc."nixos/configuration.nix".source = pkgs.writeText "configuration.nix" ''
assert builtins.trace "This location is not used. The config is found in ${config.swarselsystems.flakePath}!" false;
{ }
'';
nix =
let
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
@ -35,11 +40,24 @@
max-jobs = 1;
use-cgroups = lib.mkIf config.swarselsystems.isLinux true;
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 10d";
};
optimise = {
automatic = true;
dates = "weekly";
};
channel.enable = false;
registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
registry = rec {
nixpkgs.flake = inputs.nixpkgs;
p = nixpkgs;
};
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
};
services.dbus.implementation = "broker";
system.stateVersion = lib.mkDefault "23.05";
};
}

View file

@ -1,10 +0,0 @@
{ lib, config, ... }:
{
options.swarselsystems.modules.storeOptimize = lib.mkEnableOption "store optimization config";
config = lib.mkIf config.swarselsystems.modules.storeOptimize {
nix.optimise = {
automatic = true;
dates = [ "weekly" ];
};
};
}

View file

@ -9,8 +9,6 @@ in
"${modulesPath}/nixos/common/home-manager.nix"
"${modulesPath}/nixos/common/home-manager-extra.nix"
"${modulesPath}/nixos/common/xserver.nix"
"${modulesPath}/nixos/common/gc.nix"
"${modulesPath}/nixos/common/store.nix"
"${modulesPath}/nixos/common/time.nix"
"${modulesPath}/nixos/common/users.nix"
"${modulesPath}/nixos/common/nix-ld.nix"

View file

@ -11,8 +11,6 @@
users = lib.mkDefault true;
env = lib.mkDefault true;
security = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
systemdTimeout = lib.mkDefault true;
hardware = lib.mkDefault true;
pulseaudio = lib.mkDefault true;

View file

@ -9,8 +9,6 @@
home-manager = lib.mkDefault true;
home-managerExtra = lib.mkDefault true;
xserver = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
server = {

View file

@ -11,8 +11,6 @@
users = lib.mkDefault true;
env = lib.mkDefault true;
security = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
systemdTimeout = lib.mkDefault true;
hardware = lib.mkDefault true;
pulseaudio = lib.mkDefault true;

View file

@ -9,8 +9,6 @@
home-manager = lib.mkDefault true;
home-managerExtra = lib.mkDefault true;
xserver = lib.mkDefault true;
gc = lib.mkDefault true;
storeOptimize = lib.mkDefault true;
time = lib.mkDefault true;
users = lib.mkDefault true;
server = {