summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.sops.yaml9
-rw-r--r--accounts/gkleen@skadhi/default.nix5
-rw-r--r--accounts/gkleen@skadhi/niri.nix8
-rw-r--r--accounts/gkleen@skadhi/shell/default.nix22
-rw-r--r--accounts/gkleen@skadhi/shell/quickshell/Bar.qml10
-rw-r--r--accounts/gkleen@skadhi/shell/quickshell/Services/Brightness.qml2
-rw-r--r--hosts/skadhi/fs.nix1
-rw-r--r--hosts/skadhi/hw.nix2
-rw-r--r--hosts/skadhi/networking/default.nix8
-rw-r--r--modules/nix-access-tokens/default.nix2
-rw-r--r--modules/nix-access-tokens/nix.conf20
-rw-r--r--modules/yggdrasil-wg/default.nix23
-rw-r--r--modules/yggdrasil-wg/hosts/4/skadhi.priv18
-rw-r--r--modules/yggdrasil-wg/hosts/4/skadhi.pub1
-rw-r--r--modules/yggdrasil-wg/hosts/6/skadhi.priv18
-rw-r--r--modules/yggdrasil-wg/hosts/6/skadhi.pub1
-rw-r--r--system-profiles/tmpfs-root.nix46
17 files changed, 137 insertions, 59 deletions
diff --git a/.sops.yaml b/.sops.yaml
index a65dca8e..2bae76c1 100644
--- a/.sops.yaml
+++ b/.sops.yaml
@@ -3,6 +3,7 @@ keys:
3 - &machine_surtr age19a7j77w267z04zls7m28a8hj4a0g5af6ltye2d5wypg33c3l89csd4r9zq 3 - &machine_surtr age19a7j77w267z04zls7m28a8hj4a0g5af6ltye2d5wypg33c3l89csd4r9zq
4 - &machine_vidhar age1qffdqvy9arld9zd5a5cylt0n98xhcns5shxhrhwjq5g4qa844ejselaa4l 4 - &machine_vidhar age1qffdqvy9arld9zd5a5cylt0n98xhcns5shxhrhwjq5g4qa844ejselaa4l
5 - &machine_sif age1fj65apkhfkrwyv5tx6zcs9nkjg8267fy733qph30sc7zfn7vapjqkd5kne 5 - &machine_sif age1fj65apkhfkrwyv5tx6zcs9nkjg8267fy733qph30sc7zfn7vapjqkd5kne
6 - &machine_skadhi age1u6xegt79rarmyz8qy4pl7jh9lh90vx8fg0frmh4u2mzam7zydq4s4agz4e
6 7
7creation_rules: 8creation_rules:
8 - path_regex: ^hosts/surtr/email/ca 9 - path_regex: ^hosts/surtr/email/ca
@@ -34,4 +35,10 @@ creation_rules:
34 - age: [ *admin_gkleen, *machine_sif ] 35 - age: [ *admin_gkleen, *machine_sif ]
35 - path_regex: ^modules/nix-access-tokens/ 36 - path_regex: ^modules/nix-access-tokens/
36 key_groups: 37 key_groups:
37 - age: [ *admin_gkleen, *machine_sif, *machine_surtr, *machine_vidhar ] 38 - age: [ *admin_gkleen, *machine_sif, *machine_skadhi, *machine_surtr, *machine_vidhar ]
39 - path_regex: ^hosts/skadhi/
40 key_groups:
41 - age: [ *admin_gkleen, *machine_skadhi ]
42 - path_regex: skadhi\/?[^\/]*$
43 key_groups:
44 - age: [ *admin_gkleen, *machine_skadhi ]
diff --git a/accounts/gkleen@skadhi/default.nix b/accounts/gkleen@skadhi/default.nix
index 553eabd5..18e23131 100644
--- a/accounts/gkleen@skadhi/default.nix
+++ b/accounts/gkleen@skadhi/default.nix
@@ -42,6 +42,11 @@ in {
42 42
43 security.pam.services.quickshell = {}; 43 security.pam.services.quickshell = {};
44 44
45 services.upower.enable = true;
46 environment.persistence."/persistent".directories = [
47 "/var/lib/upower"
48 ];
49
45 home-manager.users.${userName} = { sysConfig, config, ... }: { 50 home-manager.users.${userName} = { sysConfig, config, ... }: {
46 imports = [ 51 imports = [
47 flakeInputs.nix-index-database.homeModules.nix-index 52 flakeInputs.nix-index-database.homeModules.nix-index
diff --git a/accounts/gkleen@skadhi/niri.nix b/accounts/gkleen@skadhi/niri.nix
index b30c5701..0ae76e5c 100644
--- a/accounts/gkleen@skadhi/niri.nix
+++ b/accounts/gkleen@skadhi/niri.nix
@@ -540,10 +540,6 @@ in {
540 (flag "variable-refresh-rate") 540 (flag "variable-refresh-rate")
541 ]) 541 ])
542 542
543 (plain "debug" [
544 (sleaf "render-drm-device" "/dev/dri/by-path/pci-0000:00:02.0-render")
545 ])
546
547 (plain "animations" [ 543 (plain "animations" [
548 (sleaf "slowdown" 0.5) 544 (sleaf "slowdown" 0.5)
549 (plain "workspace-switch" [(flag "off")]) 545 (plain "workspace-switch" [(flag "off")])
@@ -552,8 +548,8 @@ in {
552 (plain "layout" [ 548 (plain "layout" [
553 (sleaf "gaps" 8) 549 (sleaf "gaps" 8)
554 (plain "struts" [ 550 (plain "struts" [
555 (sleaf "left" 26) 551 (sleaf "left" 2)
556 (sleaf "right" 26) 552 (sleaf "right" 2)
557 (sleaf "top" 0) 553 (sleaf "top" 0)
558 (sleaf "bottom" 0) 554 (sleaf "bottom" 0)
559 ]) 555 ])
diff --git a/accounts/gkleen@skadhi/shell/default.nix b/accounts/gkleen@skadhi/shell/default.nix
index 09eb6863..d38356d3 100644
--- a/accounts/gkleen@skadhi/shell/default.nix
+++ b/accounts/gkleen@skadhi/shell/default.nix
@@ -79,17 +79,17 @@
79 typeset sources=($srcs) 79 typeset sources=($srcs)
80 80
81 mkdir -p $out 81 mkdir -p $out
82 magick ''${sources[0]} -crop 10000x5625+0+79 +repage -define webp:target-size=10000000 $out/carinanebula3.webp 82 magick ''${sources[0]} -crop 8702x5801+251+0 +repage -define webp:target-size=10000000 $out/carinanebula3.webp
83 magick ''${sources[1]} -crop 6716x3778+329+80 +repage -define webp:target-size=10000000 $out/pillarsofcreation_composite.webp 83 magick ''${sources[1]} -crop 7131x4754+0+166 +repage -define webp:target-size=10000000 $out/pillarsofcreation_composite.webp
84 magick ''${sources[2]} -crop 10000x5625+0+79 +repage -define webp:target-size=10000000 $out/weic2212a.webp 84 magick ''${sources[2]} -crop 8675x5783+497+0 +repage -define webp:target-size=10000000 $out/weic2212a.webp
85 magick ''${sources[3]} -crop 7650x4302+1166+389 +repage -define webp:target-size=10000000 $out/weic2415a.webp 85 magick ''${sources[3]} -crop 7657x5105+1158+618 +repage -define webp:target-size=10000000 $out/weic2415a.webp
86 magick ''${sources[4]} -crop 8732x4912+0+434 +repage -define webp:target-size=10000000 $out/weic2330a.webp 86 magick ''${sources[4]} -crop 7582x5055+0+2253 +repage -define webp:target-size=10000000 $out/weic2330a.webp
87 magick ''${sources[5]} -crop 5302x2982+636+0 +repage -define webp:target-size=10000000 $out/weic2426a.webp 87 magick ''${sources[5]} -crop 4473x2982+1018+0 +repage -define webp:target-size=10000000 $out/weic2426a.webp
88 magick ''${sources[6]} -crop 4328x2434+0+906 +repage -define webp:target-size=10000000 $out/weic2503a.webp 88 magick ''${sources[6]} -crop 4073x2716+147+1709 +repage -define webp:target-size=10000000 $out/weic2503a.webp
89 magick ''${sources[7]} -crop 4152x2335+0+666 +repage -define webp:target-size=10000000 $out/weic2506a.webp 89 magick ''${sources[7]} -crop 3626x2417+526+811 +repage -define webp:target-size=10000000 $out/weic2506a.webp
90 magick ''${sources[8]} -crop 4320x2430+0+0 +repage -define webp:target-size=10000000 $out/weic2514a.webp 90 magick ''${sources[8]} -crop 4320x2880+0+965 +repage -define webp:target-size=10000000 $out/weic2514a.webp
91 magick ''${sources[9]} -crop 5863x3298+0+477 +repage -define webp:target-size=10000000 $out/weic2425c.webp 91 magick ''${sources[9]} -crop 5863x3909+0+326 +repage -define webp:target-size=10000000 $out/weic2425c.webp
92 magick ''${sources[10]} -crop 3990x2244+0+1379 +repage -define webp:target-size=10000000 $out/weic2605c.webp 92 magick ''${sources[10]} -rotate 90 -crop 4536x3024+1+611 +repage -define webp:target-size=10000000 $out/weic2605c.webp
93 93
94 runHook postBuild 94 runHook postBuild
95 ''; 95 '';
diff --git a/accounts/gkleen@skadhi/shell/quickshell/Bar.qml b/accounts/gkleen@skadhi/shell/quickshell/Bar.qml
index 33909884..fdaa8f56 100644
--- a/accounts/gkleen@skadhi/shell/quickshell/Bar.qml
+++ b/accounts/gkleen@skadhi/shell/quickshell/Bar.qml
@@ -25,8 +25,8 @@ PanelWindow {
25 right: true 25 right: true
26 } 26 }
27 margins { 27 margins {
28 left: bar.haveMaximizedWindow ? 0 : 26 + 8 28 left: bar.haveMaximizedWindow ? 0 : 8 + 2
29 right: bar.haveMaximizedWindow ? 0 : 26 + 8 29 right: bar.haveMaximizedWindow ? 0 : 8 + 2
30 } 30 }
31 31
32 implicitHeight: 21 32 implicitHeight: 21
@@ -35,11 +35,7 @@ PanelWindow {
35 property bool haveScreenshare: Array.from(NiriService.casts).some(cast => cast.target.Output?.name == bar.screen.name) 35 property bool haveScreenshare: Array.from(NiriService.casts).some(cast => cast.target.Output?.name == bar.screen.name)
36 36
37 Rectangle { 37 Rectangle {
38 color: { 38 color: Qt.rgba(bar.haveScreenshare ? 0.2 : 0, 0, 0, bar.haveMaximizedWindow ? 1 : 0.75)
39 if (bar.haveScreenshare)
40 return bar.haveMaximizedWindow ? Qt.rgba(0.2, 0, 0, 1) : Qt.rgba(0.2, 0, 0, 0.75);
41 return bar.haveMaximizedWindow ? "black" : Qt.rgba(0, 0, 0, 0.75);
42 }
43 anchors.fill: parent 39 anchors.fill: parent
44 // bottomLeftRadius: 8 40 // bottomLeftRadius: 8
45 // bottomRightRadius: 8 41 // bottomRightRadius: 8
diff --git a/accounts/gkleen@skadhi/shell/quickshell/Services/Brightness.qml b/accounts/gkleen@skadhi/shell/quickshell/Services/Brightness.qml
index f3ae6804..76e8c08d 100644
--- a/accounts/gkleen@skadhi/shell/quickshell/Services/Brightness.qml
+++ b/accounts/gkleen@skadhi/shell/quickshell/Services/Brightness.qml
@@ -10,7 +10,7 @@ Singleton {
10 id: root 10 id: root
11 11
12 property string subsystem: "backlight" 12 property string subsystem: "backlight"
13 property string device: "intel_backlight" 13 property string device: "amdgpu_bl1"
14 14
15 property real currBrightness 15 property real currBrightness
16 property real exponent: 4 16 property real exponent: 4
diff --git a/hosts/skadhi/fs.nix b/hosts/skadhi/fs.nix
index 64d49f7d..73191aa9 100644
--- a/hosts/skadhi/fs.nix
+++ b/hosts/skadhi/fs.nix
@@ -62,6 +62,7 @@
62 mkdir $out 62 mkdir $out
63 install -d ${lib.concatMapStringsSep " " (p: "$out/${p}") (dirs ++ subvols)} 63 install -d ${lib.concatMapStringsSep " " (p: "$out/${p}") (dirs ++ subvols)}
64 install -m 0700 -d ${lib.concatMapStringsSep " " (p: "$out/${p}") restricted} 64 install -m 0700 -d ${lib.concatMapStringsSep " " (p: "$out/${p}") restricted}
65 ln -s /etc/zoneinfo/UTC /persistent/etc/localtime
65 '')) 66 ''))
66 ] ++ lib.concatMap (p: ["--subvol" p]) (subvols ++ restricted); 67 ] ++ lib.concatMap (p: ["--subvol" p]) (subvols ++ restricted);
67 subvolumes = { 68 subvolumes = {
diff --git a/hosts/skadhi/hw.nix b/hosts/skadhi/hw.nix
index ad353208..687f04d8 100644
--- a/hosts/skadhi/hw.nix
+++ b/hosts/skadhi/hw.nix
@@ -5,7 +5,7 @@
5 ]; 5 ];
6 6
7 config = { 7 config = {
8 hardware.framework.laptop13.audioEnhancement.enable = true; 8 hardware.framework.laptop13.audioEnhancement.enable = false;
9 hardware.enableRedistributableFirmware = true; 9 hardware.enableRedistributableFirmware = true;
10 services.fstrim.enable = false; 10 services.fstrim.enable = false;
11 11
diff --git a/hosts/skadhi/networking/default.nix b/hosts/skadhi/networking/default.nix
index ea5a62e2..4d6edd97 100644
--- a/hosts/skadhi/networking/default.nix
+++ b/hosts/skadhi/networking/default.nix
@@ -26,5 +26,13 @@
26 useDHCP = false; 26 useDHCP = false;
27 useNetworkd = true; 27 useNetworkd = true;
28 }; 28 };
29
30 environment.etc."NetworkManager/dnsmasq.d/yggdrasil.conf" = {
31 text = ''
32 server=/yggdrasil/2a03:4000:52:ada:1:1::@yggdrasil
33 server=/141.10.in-addr.arpa/2a03:4000:52:ada:1:1::@yggdrasil
34 server=/1.0.0.0.a.d.a.0.2.5.0.0.0.0.0.4.3.0.a.2.ip6.arpa/2a03:4000:52:ada:1:1::@yggdrasil
35 '';
36 };
29 }; 37 };
30} 38}
diff --git a/modules/nix-access-tokens/default.nix b/modules/nix-access-tokens/default.nix
index a3b7abfa..fbfb31fc 100644
--- a/modules/nix-access-tokens/default.nix
+++ b/modules/nix-access-tokens/default.nix
@@ -4,7 +4,7 @@ let
4 cfg = config.nix.includeAccessTokens; 4 cfg = config.nix.includeAccessTokens;
5in { 5in {
6 options = { 6 options = {
7 nix.includeAccessTokens.enable = lib.mkEnableOption "including access tokens in nix.conf" // { default = lib.elem hostName ["sif" "surtr" "vidhar"]; }; 7 nix.includeAccessTokens.enable = lib.mkEnableOption "including access tokens in nix.conf" // { default = lib.elem hostName ["sif" "skadhi" "surtr" "vidhar"]; };
8 }; 8 };
9 9
10 config = lib.mkIf cfg.enable { 10 config = lib.mkIf cfg.enable {
diff --git a/modules/nix-access-tokens/nix.conf b/modules/nix-access-tokens/nix.conf
index 80d5641c..4d933eaa 100644
--- a/modules/nix-access-tokens/nix.conf
+++ b/modules/nix-access-tokens/nix.conf
@@ -3,20 +3,24 @@
3 "sops": { 3 "sops": {
4 "age": [ 4 "age": [
5 { 5 {
6 "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866", 6 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiWDlPazhId0RvZHZKbU9C\nQmR4S293KytMOXI0MmYrc2xxcVBtY0NxL2xjClpJMmdUNE41SVIyeFA3czkwek0r\nckRwVGdWYkJkVWRtRVlxcDFkMmRDSGsKLS0tIGtyOHhMRUR5aVlBQzkrYkh4dVhE\nWHNCUnZCN0NhZ0trQmJaTUJDb3ROMlUKvH5z4Fj1P5zMcwD6UlLT531Ggrd4vEmo\ne2uOmolQ/jcStDd4IMniPEfjqcxfSEtkb7fpB1Rhby0mT6Gx68GtHw==\n-----END AGE ENCRYPTED FILE-----\n",
7 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5NkZUUGI3M2pQYWVXeFV6\na2h2czRTeUJFekJCS012YlBkL1FDdTd3ekZ3ClJsTVh0R2JQM0Jua1JjL285RVA1\nRHhlbjlLdmNBUXVLelFGY2NGYWpLejQKLS0tIDBUWUhJNm8zWGoyQ0pBYnV1ZjBh\ndktNRkNPS1lpWXFITC81aEZJbXlONk0Km2c1xVKwSankaVs7O/utGJwRRX395upz\ndPbsOElTnbGmkb0esGtvGSPboTvK+gjn9w/GhaPyTnNDoos7GaIfyg==\n-----END AGE ENCRYPTED FILE-----\n" 7 "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866"
8 }, 8 },
9 { 9 {
10 "recipient": "age1fj65apkhfkrwyv5tx6zcs9nkjg8267fy733qph30sc7zfn7vapjqkd5kne", 10 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPNmowYmNTWVNwYk9UNzhI\neXllbWNCWEl4QXk1SUxLcjY5Vm5HdjBCdVRzClh2ZkY0bGUrNE9rUnhNTVdDT2tl\nTjFBYURMdGNWSjZZSDQzVXRBL2xRNXcKLS0tIEk0U05jSWQrUGoraVdxTU5QdEZ6\nQlprZlN5SjRTQzhycERsSVhiZDJmekUKUVzegV7zpd3woOeyDw+Ezpyd3D3xH0SV\nyt/UspleE/+sDRPuJTQKx6wA/k7e+hPJjGdjgMgzGnuCh+dfwNw2lw==\n-----END AGE ENCRYPTED FILE-----\n",
11 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6bS9iY2lua3U4U3lJa1pK\nSlZNMmFZMEU5M1V2bWRjaXIwajZJVDJPMlM4Cmd3TTNFWjVuSGdtbC9iODltTS91\nOE5XOEVEQkh0SFpVVW5jc3IzbzNpTmMKLS0tIEtrSU54QUVPa2tBZDhLYlRFWitR\nc2x6MFlxL0tobDJTek42dEcyZXpoWDgKXzQfU+o6FkbJBwmm6oaHu4sDPi822uUR\n5VY6gY/h3g2kM4cuS03Q4NJmeRxuh7cx0UqGU3j5Mf8muE1LHpYEPw==\n-----END AGE ENCRYPTED FILE-----\n" 11 "recipient": "age1fj65apkhfkrwyv5tx6zcs9nkjg8267fy733qph30sc7zfn7vapjqkd5kne"
12 }, 12 },
13 { 13 {
14 "recipient": "age19a7j77w267z04zls7m28a8hj4a0g5af6ltye2d5wypg33c3l89csd4r9zq", 14 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwZW51Q0RWdmtyZmdmNy9H\nMWJGSkxlbXRSc0U1eVhFSm1kZWlhaEl3UUVRCnNWWTVPWGJPaVJET1YrTXFHeGZk\na2ZYVWNQL1FwRStiSlE3ZDJmOVVHcFEKLS0tIEE1WHRsdEJPcWdiQ1lNenN2WDBE\nYW1FR0gyeENHWEpxWFB2a25RZjBOUW8KW2n77OFZXNZLH/HMWhUrwLZM4epFxheZ\nbeOSASmLVkmT4rJOOHoP1g9GxmC8UxSrM1q6uV80n69grExRfgYCig==\n-----END AGE ENCRYPTED FILE-----\n",
15 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaOVpNZ2lVT0VwbHVZNzFl\nenJsMGpnbkRvU0xOSU5obk5yT2p5ZVNzdXhNCnVlQzZtRjZNVmJLSUpKc3UwVXZs\nWi9EZ3kxZkJNeFJDSjl1L1IweTFNMXcKLS0tIDJUOTBwTldCUmlnU0tWVkZkNzJL\nejM4ajJVbVhvSm1YM2Vxa2JldllYN0UKAzxy2wkzRvCSiTy417AulpCu41z668HG\nto92eGF2ZRFfEG5LGlCKWeDcP3gM8QwKiVlm6wndbOkhMMfc4Sp3wA==\n-----END AGE ENCRYPTED FILE-----\n" 15 "recipient": "age1u6xegt79rarmyz8qy4pl7jh9lh90vx8fg0frmh4u2mzam7zydq4s4agz4e"
16 }, 16 },
17 { 17 {
18 "recipient": "age1qffdqvy9arld9zd5a5cylt0n98xhcns5shxhrhwjq5g4qa844ejselaa4l", 18 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBSUFhNWxNd3ZXMlkyU1pC\nUlNsdENaWU9WMGxJbHRqaHM0SEFVdnJ5ZHlrCkF5a0xBWXJpWGxDMEcveVhEVzJh\naFFOVmJtQkh1WlZxcUZVaWxJS1ZBUVEKLS0tIC90bTBUa09yNkhBVDRBa25STzZD\nSnNYa3JqWTBlcjZBMlhIOUdGOFVseEUKZ3El/3f+YWMZBl4Qhhz5qTB/V/zq+e/W\nCPJ7uOJ/2L6YNGx6jlh5EIE3BSHicAQktgi0ekGD4+PLSkGC7Egzlw==\n-----END AGE ENCRYPTED FILE-----\n",
19 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2ejRHcGttNUxYZnFzTU5J\nMTFvY3daQ1VMM2xxYTgvLzZwT1owazVNenhzCktaWFF6K2s5UjI2b20rSHFNSS9E\nMVlJSmZhQm15eUs3U0hGTGpSRndmSDgKLS0tIDVrcjl4eDhwak1pRithbnRWWEZy\nVE9EOEpKdEJoRTFrTXpQVDc1cmsrU1kK/goTdUmpZPeMRbY1QzLXAa6Qpg4YYYYo\n3v3GK1bzdey8szfgIr1dHTtQEzqE2WX1swzZizDXj/RiUWx01Ky3GA==\n-----END AGE ENCRYPTED FILE-----\n" 19 "recipient": "age19a7j77w267z04zls7m28a8hj4a0g5af6ltye2d5wypg33c3l89csd4r9zq"
20 },
21 {
22 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWUWM3c0R1cEV5LzBsb3pV\nM2NEU0ZFRWhoOE9IZlgyU0hsVUtZM2JCcm1NClBlVXFVVUNZUXJVbElGWm5BQkJy\nWHY2Sm1GUWl2L0NOSXZiNlFjNGFCT28KLS0tIDVCSGREN2tjQmhYbGRINVF4WTA0\nSWVzL3EyVzJZSzlCdjJ0cG1mYmZ0cHcKnMs0Sl76ZYPKeUwgiX5FT9uFEOK4F1H1\n/ieM9hQwhEZqHpslLWWdNYbGShwEhC4cs22SUNutBWrYfD/MsKv0qA==\n-----END AGE ENCRYPTED FILE-----\n",
23 "recipient": "age1qffdqvy9arld9zd5a5cylt0n98xhcns5shxhrhwjq5g4qa844ejselaa4l"
20 } 24 }
21 ], 25 ],
22 "lastmodified": "2026-01-07T09:18:20Z", 26 "lastmodified": "2026-01-07T09:18:20Z",
diff --git a/modules/yggdrasil-wg/default.nix b/modules/yggdrasil-wg/default.nix
index 8b190651..c17c8f08 100644
--- a/modules/yggdrasil-wg/default.nix
+++ b/modules/yggdrasil-wg/default.nix
@@ -48,33 +48,56 @@ let
48 PersistentKeepalive = 25; 48 PersistentKeepalive = 25;
49 family = "4"; 49 family = "4";
50 } 50 }
51 { from = "skadhi";
52 to = "surtr";
53 endpointHost = "202.61.241.61";
54 PersistentKeepalive = 25;
55 family = "4";
56 }
57 { from = "skadhi";
58 to = "surtr";
59 endpointHost = "2a03:4000:52:ada::";
60 PersistentKeepalive = 25;
61 family = "6";
62 }
63 { from = "skadhi";
64 to = "vidhar";
65 endpointHost = "10.141.0.1";
66 PersistentKeepalive = 25;
67 family = "4";
68 }
51 ]; 69 ];
52 wgHostIPs = mapAttrs (_family: wgSubnet: { 70 wgHostIPs = mapAttrs (_family: wgSubnet: {
53 surtr = "${wgSubnet}::/${toString wgHostLength}"; 71 surtr = "${wgSubnet}::/${toString wgHostLength}";
54 vidhar = "${wgSubnet}:1::/${toString wgHostLength}"; 72 vidhar = "${wgSubnet}:1::/${toString wgHostLength}";
55 sif = "${wgSubnet}:2::/${toString wgHostLength}"; 73 sif = "${wgSubnet}:2::/${toString wgHostLength}";
74 skadhi = "${wgSubnet}:3::/${toString wgHostLength}";
56 }) wgSubnet; 75 }) wgSubnet;
57 greHostMACPrefixes = { 76 greHostMACPrefixes = {
58 "4" = { 77 "4" = {
59 surtr = "02:00:01:00:00"; 78 surtr = "02:00:01:00:00";
60 vidhar = "02:00:01:00:01"; 79 vidhar = "02:00:01:00:01";
61 sif = "02:00:01:00:02"; 80 sif = "02:00:01:00:02";
81 skadhi = "02:00:01:00:03";
62 }; 82 };
63 "6" = { 83 "6" = {
64 surtr = "02:00:02:00:00"; 84 surtr = "02:00:02:00:00";
65 vidhar = "02:00:02:00:01"; 85 vidhar = "02:00:02:00:01";
66 sif = "02:00:02:00:02"; 86 sif = "02:00:02:00:02";
87 skadhi = "02:00:02:00:03";
67 }; 88 };
68 }; 89 };
69 batHostMACs = { 90 batHostMACs = {
70 surtr = "02:00:00:00:00:00"; 91 surtr = "02:00:00:00:00:00";
71 vidhar = "02:00:00:01:00:00"; 92 vidhar = "02:00:00:01:00:00";
72 sif = "02:00:00:02:00:00"; 93 sif = "02:00:00:02:00:00";
94 skadhi = "02:00:00:03:00:00";
73 }; 95 };
74 batHostIPs = { 96 batHostIPs = {
75 surtr = ["${batSubnet}::/${toString batHostLength}"]; 97 surtr = ["${batSubnet}::/${toString batHostLength}"];
76 vidhar = ["${batSubnet}:1::/${toString batHostLength}"]; 98 vidhar = ["${batSubnet}:1::/${toString batHostLength}"];
77 sif = ["${batSubnet}:2::/${toString batHostLength}"]; 99 sif = ["${batSubnet}:2::/${toString batHostLength}"];
100 skadhi = ["${batSubnet}:3::/${toString batHostLength}"];
78 }; 101 };
79 routers = [ "surtr" ]; 102 routers = [ "surtr" ];
80 103
diff --git a/modules/yggdrasil-wg/hosts/4/skadhi.priv b/modules/yggdrasil-wg/hosts/4/skadhi.priv
new file mode 100644
index 00000000..dd66633f
--- /dev/null
+++ b/modules/yggdrasil-wg/hosts/4/skadhi.priv
@@ -0,0 +1,18 @@
1{
2 "data": "ENC[AES256_GCM,data:fXF8DV6vgpbJJWQvjIS3sFZ+yUEPtWwAZQrDLT8jueqDdn/IVaZGlq+DEnT0,iv:FU0ofu31RZlq2qMcMHlzYoRB61g+vwaG2JjPrKUgxYI=,tag:+dLvtiKmYdtk9NCXV8Yn9w==,type:str]",
3 "sops": {
4 "age": [
5 {
6 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQR25od0g4MGhLY2d0Y1Fx\nS3RGVE1UbTFEc1Qzakx0VFdDbWNTdnU1MXowCkxNMXJycGlEVFEvV1dtQ3B3WXVX\nRm12ZmZTUTd6WGtvQkNJQzlsTVF1RHcKLS0tIE9tMzIzWFlWNHdINTkrSmcwYVNT\nVEVzSWFjMWJLSmRPRmZlQ1ZVMktLQ28KAUOrlZCuSZwF7QkOSz1dQ4Uj2f8gvjtM\n3c4sXQ3P77Rqluijsxo9KQx7Q0lRGBaRPMY4IrnHNPogd8iOHPeZuA==\n-----END AGE ENCRYPTED FILE-----\n",
7 "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866"
8 },
9 {
10 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArWmlPTWUrZ1QvYVBSckFL\nelZtcGdEMDBHeE5ROVdVdEJvWHpISzN3OVhjCkpSSTg2dDNqZjZYY0RyRlpuTi96\nS1l1dzJPV0NKbEJVdWpkTnZNZXJ0Qk0KLS0tIElBMmxJcmlxekVxRm1VdkgrSkNm\nZXhaMlhNdi9hVlNKaXU5MGVnK2NZWnMKjavFZczePCyYb2X4UsFNOaB5g+g1KZ52\npl+NTzRsUIXqPZnRDcCkGDjlQgLnZ+A22Enhbpj21ThiPV7bTyFh2g==\n-----END AGE ENCRYPTED FILE-----\n",
11 "recipient": "age1u6xegt79rarmyz8qy4pl7jh9lh90vx8fg0frmh4u2mzam7zydq4s4agz4e"
12 }
13 ],
14 "lastmodified": "2026-09-24T04:46:17Z",
15 "mac": "ENC[AES256_GCM,data:cubfKvUaDE6XNb9Y/1dbXpwayRXoZjiM9T3dN+YVeS6/5WX+hMC7We6mdge5VBnZ9CjA3XXNy+ZP1DEaPSg1OsBq1ubnFuVbaRKZlFl1B4I+6e4xpsZdQiyZT3SFZoM/LI1oM6kxD8e1n7KjFWNRx3yqAMaK3z1Ko1AlAmkmDx8=,iv:ME5EYC/MvuFxY7es250VcW0z2x1tCInCPrZnr4mBjrw=,tag:Jfd3uEVibe6Iw/3uNc+UTQ==,type:str]",
16 "version": "3.13.3"
17 }
18}
diff --git a/modules/yggdrasil-wg/hosts/4/skadhi.pub b/modules/yggdrasil-wg/hosts/4/skadhi.pub
new file mode 100644
index 00000000..a722609e
--- /dev/null
+++ b/modules/yggdrasil-wg/hosts/4/skadhi.pub
@@ -0,0 +1 @@
x5c5441ah63QZRbj+IV711Xv3JZOQYQON8Zo7rzU6i4=
diff --git a/modules/yggdrasil-wg/hosts/6/skadhi.priv b/modules/yggdrasil-wg/hosts/6/skadhi.priv
new file mode 100644
index 00000000..848cd299
--- /dev/null
+++ b/modules/yggdrasil-wg/hosts/6/skadhi.priv
@@ -0,0 +1,18 @@
1{
2 "data": "ENC[AES256_GCM,data:lOitSuIg4Xjr5xycgaXBWkA79zySQOy+ZPXUxRjbU3F3/YHbcyrKYatVygdf,iv:8QcEXehosL/zUYxbNE284GfQHjz6HzBIyscigtNiDw8=,tag:eRINZKIv4UwprovUq7016Q==,type:str]",
3 "sops": {
4 "age": [
5 {
6 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLY2U0S2tUZHpXSjVoTk1m\nSWlXK0UyWm5SMGxBbUtHTFp1U3NadUliemlNCjArMHdJVk5BYzVSK0F5RGdMQU1E\nMEZuUkt3R29sdHZsRnFPaVhlUzVpaWcKLS0tIDFXOEpFOC94NlEzZnZqY2F6VERt\nc3lvZEt2b0tVU3pvMU5VR1dqYUtFbUEKcRVTIkz5bz47rAkihOTJLJPvA0mqabUM\nUr+zZjdrWTKqnWuEcJ93xsCKyo4kC1k/SkaXia65krhi9z4BVe5kgQ==\n-----END AGE ENCRYPTED FILE-----\n",
7 "recipient": "age1rmmhetcmllq0ahl5qznlr0eya2zdxwl9h6y5wnl97d2wtyx5t99sm2u866"
8 },
9 {
10 "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRWUxYNXNXODAzb2daTC9Y\nSmtHRHUwZmRoaXhpTmpDbXZSMkkwMjI0Q2pnCi92RFgrK2pSTFdIL29wT09lVGZM\nTWxXamlSOVpOdXoxcSttSDNkUDJ1K0UKLS0tIC9rVnNXZWxhd2J3NGd2NkdUOUVO\nbE9ha1RyS3dOczNXa3pjVkh3bm5RS1kK4APdzi4AKkI7z5S2zpFkipkldVzeYO0Q\nGck0KtHhM8ZRTqJ9Q7WID2JwbAV5og3924SAYFbQvYdSd2zGqkD+Aw==\n-----END AGE ENCRYPTED FILE-----\n",
11 "recipient": "age1u6xegt79rarmyz8qy4pl7jh9lh90vx8fg0frmh4u2mzam7zydq4s4agz4e"
12 }
13 ],
14 "lastmodified": "2026-09-24T04:46:30Z",
15 "mac": "ENC[AES256_GCM,data:5mgUxl7FQCgmCWL2SRtf7FOi5z64scb9Qt/rUwPMdenAuTG0ED3NVGOATTVoco7l0MBbs/D7OBKDMMvJ/Odgo0I9srRDyhXdrVbVKMphD1uXAwxPaK2iUeK3xz93Kzvr17UXzd7SwXTReokv/lIcFyDqUvlBXGWxZdYsc/rf4Us=,iv:50ByoxaHrl6qQbKoEEAgUIpYyhVhp47AYnagbH8n5kA=,tag:5KjE/A7EwiG/sSGpkkQBcg==,type:str]",
16 "version": "3.13.3"
17 }
18}
diff --git a/modules/yggdrasil-wg/hosts/6/skadhi.pub b/modules/yggdrasil-wg/hosts/6/skadhi.pub
new file mode 100644
index 00000000..7a51045a
--- /dev/null
+++ b/modules/yggdrasil-wg/hosts/6/skadhi.pub
@@ -0,0 +1 @@
BtEGTPfLbtQJAAHfG/7jBissxcR/IfIRqeqhZG2dr0k=
diff --git a/system-profiles/tmpfs-root.nix b/system-profiles/tmpfs-root.nix
index 7840dadf..3b4eb9a7 100644
--- a/system-profiles/tmpfs-root.nix
+++ b/system-profiles/tmpfs-root.nix
@@ -1,25 +1,25 @@
1{ options, lib, ... }: { 1{ options, lib, ... }: {
2 config = lib.mkMerge 2 config = foldr recursiveUpdate {} ([
3 [ (lib.mkIf (options ? disko) { 3 {
4 disko.devices.nodev = { 4 security.sudo.extraConfig = ''
5 "/" = { 5 Defaults lecture = never
6 fsType = "tmpfs"; 6 '';
7 mountOptions = [ 7 }
8 "mode=0755" 8 ]
9 ]; 9 ++ (lib.optional (options ? disko) {
10 }; 10 disko.devices.nodev = {
11 }; 11 "/" = {
12 }) 12 fsType = "tmpfs";
13 (lib.mkIf (!(options ? disko)) { 13 mountOptions = [
14 fileSystems."/" = { 14 "mode=0755"
15 fsType = "tmpfs"; 15 ];
16 options = [ "mode=0755" ]; 16 };
17 }; 17 };
18 }) 18 })
19 { 19 ++ (lib.optional (!(options ? disko)) {
20 security.sudo.extraConfig = '' 20 fileSystems."/" = {
21 Defaults lecture = never 21 fsType = "tmpfs";
22 ''; 22 options = [ "mode=0755" ];
23 } 23 };
24 ]; 24 }));
25} 25}