diff options
| author | Marek Paśnikowski <marek@marekpasnikowski.pl> | 2026-01-09 08:56:19 +0100 |
|---|---|---|
| committer | Marek Paśnikowski <marek@marekpasnikowski.pl> | 2026-01-09 12:30:37 +0100 |
| commit | c1e350797a7c388375599bc64b316da9765ce237 (patch) | |
| tree | c8725de915d537745461e2aba1ae230bd4e08d3c | |
| parent | a576f74ca0511710d1f154e729d63e8f0c16e941 (diff) | |
| -rw-r--r-- | deployment/systems/aisaka.scm | 85 |
1 files changed, 82 insertions, 3 deletions
diff --git a/deployment/systems/aisaka.scm b/deployment/systems/aisaka.scm index 76c048c..e3369b6 100644 --- a/deployment/systems/aisaka.scm +++ b/deployment/systems/aisaka.scm @@ -6,11 +6,13 @@ #:use-module ((deployment keys) #:prefix deployment:keys:) #:use-module ((gnu bootloader) #:prefix gnu:bootloader:) #:use-module ((gnu bootloader grub) #:prefix gnu:bootloader:grub:) + #:use-module ((gnu packages linux) #:prefix gnu:packages:linux:) #:use-module ((gnu packages tls) #:prefix gnu:packages:tls:) #:use-module ((gnu services) #:prefix gnu:services:) #:use-module ((gnu services base) #:prefix gnu:services:base:) #:use-module ((gnu services dns) #:prefix gnu:services:dns:) #:use-module ((gnu services networking) #:prefix gnu:services:networking:) + #:use-module ((gnu services shepherd) #:prefix gnu:services:shepherd:) #:use-module ((gnu services version-control) #:prefix gnu:services:version-control:) #:use-module ((gnu services web) #:prefix gnu:services:web:) #:use-module ((gnu system) #:prefix gnu:system:) @@ -433,16 +435,92 @@ enp2s0-address-4)) (routes (list enp1s0-route-4-default)) (name-servers (list "192.168.10.1" - "192.168.1.1")))) + "192.168.1.1")) + (provision (list 'network-hardware)))) (define static-networking-configuration (list first-network)) -(define static-networking +(define network-hardware (gnu:services:service gnu:services:networking:static-networking-service-type static-networking-configuration)) +(define enp2s0-table- + #~(let + ( (ip-command- #$(file-append gnu:packages:linux:iproute + "/sbin/ip"))) + (let + ( (create-default-route- (string-append ip-command- + " route add default via 192.168.1.1 table 1 ; ")) + (create-rule-table- (string-append ip-command- + " rule add from 192.168.1.2 table 1 prio 1 ; "))) + (list create-rule-table- + ;create-default-route- + )))) + +(define ip-command + (file-append gnu:packages:linux:iproute + "/sbin/ip")) + +(define enp2s0-route-default + #~(list #$ip-command + "route" + "add" + "default" + "via" + "192.168.1.1" + "table" + "1")) + +(define enp2s0-table + #~(list #$ip-command + "rule" + "add" + "from" + "192.168.1.2" + "table" + "1" + "prio" + "1")) + +(define network-enp2s0-route-default + (gnu:services:shepherd:shepherd-service + (provision (list 'network-enp2s0-route-default)) + (requirement (list 'network-hardware)) + (one-shot? #t) + (respawn? #f) + (start #~(make-forkexec-constructor #$enp2s0-route-default)) + (stop #~(const #f)) + (actions (list)) + (auto-start? #t) + (documentation ""))) + +(define network-enp2s0-table + (gnu:services:shepherd:shepherd-service + (provision (list 'network-enp2s0-table)) + (requirement (list 'network-hardware)) + (one-shot? #t) + (respawn? #f) + (start #~(make-forkexec-constructor #$enp2s0-table)) + (stop #~(const #f)) + (actions (list)) + (auto-start? #t) + (documentation ""))) + +(define network-root + (gnu:services:shepherd:shepherd-service + (provision (list 'networking)) + (requirement (list 'network-enp2s0-table + 'network-enp2s0-route-default)))) + +(define networking + (gnu:services:simple-service 'networking + gnu:services:shepherd:shepherd-root-service-type + (list network-enp2s0-table + network-enp2s0-route-default + network-root))) + (define swap-device-izumi-1-label ((@ (gnu system file-systems) file-system-label) "izumi-swap-f")) @@ -486,7 +564,8 @@ offload-rakan (openssh) (radicale) - static-networking)) + network-hardware + networking)) (define system-users (list users:id1000:uid1000-account |
