summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deployment/systems/aisaka.scm85
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