275 lines
9.9 KiB
Scheme
275 lines
9.9 KiB
Scheme
;; Indicate which modules to import to access the variables
|
|
;; used in this configuration.
|
|
(use-modules (gnu))
|
|
(use-package-modules databases)
|
|
(use-service-modules cups desktop networking ssh xorg docker dbus databases)
|
|
|
|
(operating-system
|
|
(locale "en_US.utf8")
|
|
(timezone "America/Chicago")
|
|
(keyboard-layout (keyboard-layout "us"))
|
|
(host-name "excellon")
|
|
|
|
;; The list of user accounts ('root' is implicit).
|
|
(users
|
|
(cons* (user-account
|
|
(name "bartronx7")
|
|
(comment "bartronx7")
|
|
(group "users")
|
|
(home-directory "/home/bartronx7")
|
|
(supplementary-groups '("wheel" "netdev" "audio" "video" "docker")))
|
|
%base-user-accounts))
|
|
|
|
;; Below is the list of system services. To search for available
|
|
;; services, run 'guix system search KEYWORD' in a terminal.
|
|
(services
|
|
(append (list
|
|
;; To configure OpenSSH, pass an 'openssh-configuration'
|
|
;; record as a second argument to 'service' below.
|
|
(service openssh-service-type)
|
|
(service dhcp-client-service-type)
|
|
(service ntp-service-type)
|
|
(service elogind-service-type
|
|
(elogind-configuration (handle-suspend-key 'ignore)))
|
|
(service dbus-root-service-type)
|
|
(service containerd-service-type)
|
|
(service docker-service-type (docker-configuration
|
|
(environment-variables (list
|
|
"TMPDIR=/tmp/dockerd"))))
|
|
|
|
(service oci-container-service-type (list
|
|
(oci-container-configuration
|
|
(image "caddy:local")
|
|
(provision "caddy")
|
|
(network "sandbox")
|
|
(ports '(
|
|
("80" . "80")
|
|
("443" . "443")))
|
|
(environment (list
|
|
'("NAMECHEAP_API_KEY" . "af43a35060854eb98fd0c0837113a384")
|
|
'("NAMECHEAP_API_USER" . "bakeley")
|
|
'("PUBLIC_IP" . "70.112.209.162")))
|
|
(volumes (list
|
|
'("/data/docker/volumes/caddy/Caddyfile" . "/etc/caddy/Caddyfile")
|
|
'("/data/docker/volumes/caddy/data" . "/data")
|
|
'("/data/docker/volumes/caddy/config" . "/config"))))
|
|
|
|
(oci-container-configuration
|
|
(image "docker.io/actualbudget/actual-server:latest")
|
|
(provision "actual")
|
|
(network "sandbox")
|
|
(ports '(
|
|
("5006" . "5006")))
|
|
(volumes (list
|
|
'("/data/docker/volumes/actual/data" . "/data"))))
|
|
|
|
(oci-container-configuration
|
|
(image "miniflux/miniflux:latest")
|
|
(provision "miniflux")
|
|
(network "sandbox")
|
|
(requirement '(miniflux-db))
|
|
(ports '(
|
|
("8081" . "8080")))
|
|
(environment (list
|
|
'("DATABASE_URL" . "postgres://miniflux:99uskas0_l@miniflux-db/miniflux?sslmode=disable")
|
|
'("RUN_MIGRATIONS" . "1")
|
|
'("CREATE_ADMIN" . "1")
|
|
'("ADMIN_USERNAME" . "admin")
|
|
'("ADMIN_PASSWORD" . "982#@2gGGHjf"))))
|
|
|
|
(oci-container-configuration
|
|
(image "postgres:17-alpine")
|
|
(provision "miniflux-db")
|
|
(network "sandbox")
|
|
(ports '(
|
|
("5432" . "5432")))
|
|
(environment (list
|
|
'("POSTGRES_USER" . "miniflux")
|
|
'("POSTGRES_PASSWORD" . "99uskas0_l")
|
|
'("POSTGRES_DB" . "miniflux")))
|
|
(volumes (list
|
|
'("/data/docker/volumes/miniflux_db" . "/var/lib/postgresql/data"))))
|
|
|
|
(oci-container-configuration
|
|
(image "codeberg.org/forgejo/forgejo:9")
|
|
(provision "forgejo")
|
|
(network "sandbox")
|
|
(ports '(
|
|
("3000" . "3000")
|
|
("2222" . "22")))
|
|
(environment (list
|
|
'("USER_UID" . "1000")
|
|
'("USER_GID" . "1000")))
|
|
(volumes (list
|
|
'("/data/docker/volumes/forgejo" . "/data")
|
|
'("/etc/timezone" . "/etc/timezone:ro")
|
|
'("/etc/localtime" . "/etc/localtime:ro"))))
|
|
|
|
(oci-container-configuration
|
|
(image "packetriot/pktriot:latest")
|
|
(provision "pktriot")
|
|
(network "sandbox")
|
|
(volumes (list
|
|
'("/data/docker/volumes/pktriot" . "/data:rw"))))
|
|
|
|
(oci-container-configuration
|
|
(image "plexinc/pms-docker")
|
|
(provision "plex")
|
|
(network "sandbox")
|
|
(extra-arguments '("--device=/dev/dvb"))
|
|
(ports '(
|
|
("32400" . "32400")
|
|
("8324" . "8324")
|
|
("32469" . "32469")
|
|
("1900" . "1900")
|
|
("32410" . "32410")
|
|
("32412" . "32412")
|
|
("32413" . "32413")
|
|
("32414" . "32414")))
|
|
(environment (list
|
|
'("TZ" . "America/Chicago")
|
|
'("PLEX_CLAIM:" . "claim-7-N1LVT5AMco6ayhy4Tm")
|
|
'("ADVERTISE_IP:" . "http://192.168.1.3:32400/")))
|
|
(volumes (list
|
|
'("/data/docker/volumes/plex/config" . "/config")
|
|
'("/data/docker/volumes/plex/transcode" . "/transcode")
|
|
'("/data" . "/data:rw"))))
|
|
|
|
(oci-container-configuration
|
|
(image "jellyfin/jellyfin:latest")
|
|
(provision "jellyfin")
|
|
(network "sandbox")
|
|
(ports '(
|
|
("8096" . "8096")))
|
|
(volumes (list
|
|
'("/data/docker/volumes/jellyfin/config" . "/config")
|
|
'("/data/docker/volumes/jellyfin/cache" . "/cache")
|
|
'("/data/shows" . "/shows")
|
|
'("/data/movies" . "/movies")
|
|
'("/data/music" . "/music"))))
|
|
|
|
(oci-container-configuration
|
|
(image "lscr.io/linuxserver/sonarr:latest")
|
|
(provision "sonarr")
|
|
(network "sandbox")
|
|
(ports '(
|
|
("8989" . "8989")))
|
|
(environment (list
|
|
'("PUID" . "1000")
|
|
'("PGID" . "1000")
|
|
'("TZ" . "US/America/Chicago")))
|
|
(volumes (list
|
|
'("/data/docker/volumes/sonarr" . "/config")
|
|
'("/data/shows" . "/tv")
|
|
'("/home/bartronx7/downloads" . "/downloads"))))
|
|
|
|
;; docker run --rm --name some-sftpgo -p 8080:8080 -p 2022:2022 -d "drakkan/sftpgo:tag"
|
|
|
|
(oci-container-configuration
|
|
(image "drakkan/sftpgo:latest")
|
|
(provision "sftpgo")
|
|
(network "sandbox")
|
|
(respawn? #t)
|
|
(ports '(
|
|
("8080":"8080")
|
|
("2022" . "2022"))))))))
|
|
|
|
;; (oci-container-configuration
|
|
;; (image "postgres:15")
|
|
;; (provision "ente-db")
|
|
;; (network "sandbox")
|
|
;; (respawn? #t)
|
|
;; (ports '(
|
|
;; ("5433" . "5432")))
|
|
;; (environment (list
|
|
;; '("POSTGRES_USER" . "ente")
|
|
;; '("POSTGRES_PASSWORD" . "00u5kas()_1")
|
|
;; '("POSTGRES_DB" . "ente_db")))
|
|
;; (volumes (list
|
|
;; '("/data/docker/volumes/ente/db" . "/var/lib/postgresql/data"))))
|
|
;;
|
|
;; (oci-container-configuration
|
|
;; (image "ghcr.io/ente-io/server")
|
|
;; (provision "ente-museum")
|
|
;; (requirement '(ente-db minio))
|
|
;; (network "sandbox")
|
|
;; (ports '(
|
|
;; ("8090" . "8080")
|
|
;; ("2112" . "2112")))
|
|
;; (environment (list
|
|
;; '("ENTE_CREDENTIALS_FILE" . "/credentials.yaml")))
|
|
;; (volumes (list
|
|
;; '("/data/docker/volumes/ente/logs" . "/var/logs")
|
|
;; '("/data/docker/volumes/ente/museum.yaml" . "/museum.yaml:ro")
|
|
;; '("/data/docker/volumes/ente/credentials.yaml" . "/credentials.yaml:ro")
|
|
;; '("/data/docker/volumes/ente/data" . "/data:ro"))))
|
|
;;
|
|
;; (oci-container-configuration
|
|
;; (image "ghcr.io/ente-io/web")
|
|
;; (provision "ente-web")
|
|
;; (requirement '(ente-museum))
|
|
;; (network "sandbox")
|
|
;; (ports '(
|
|
;; ("3010" . "3000")
|
|
;; ("3011" . "3001")
|
|
;; ("3012" . "3002")
|
|
;; ("3013" . "3003")))
|
|
;; (environment (list
|
|
;; '("ENTE_API_ORIGIN" . "https://museum.akeley.tech")
|
|
;; '("ENTE_ALBUMS_ORIGIN" . "https://localhost:3002"))))
|
|
|
|
;; (oci-container-configuration
|
|
;; (image "minio/minio")
|
|
;; (provision "minio")
|
|
;; (network "sandbox")
|
|
;; (command '("server" "--address" ":3200" "--console-address" ":3201" "/data"))
|
|
;; (ports '(
|
|
;; ("3200" . "3200")
|
|
;; ("3201" . "3201")))
|
|
;; (environment (list
|
|
;; '("MINIO_USER" . "test")
|
|
;; '("MINIO_ROOT_USER" . "myminioadmin")
|
|
;; '("MINIO_ROOT_PASSWORD" . "u8^ll01.Qs")
|
|
;; '("MINIO_CONFIG_ENV_FILE" . "/etc/config.env")))
|
|
;; (volumes (list
|
|
;; '("/data/docker/volumes/minio/data" . "/data")
|
|
;; '("/data/docker/volumes/minio/env" . "/etc/config.env")))))))
|
|
|
|
%base-services))
|
|
|
|
(bootloader (bootloader-configuration
|
|
(bootloader grub-bootloader)
|
|
(targets (list "/dev/sda"))
|
|
(keyboard-layout keyboard-layout)))
|
|
|
|
;; The devices that make up the luks "docs" labelled filesystem
|
|
(mapped-devices
|
|
(list (mapped-device
|
|
(source (uuid "cf6bafca-b225-46ca-8dfc-b82fb6ab5560"))
|
|
(target "doc1")
|
|
(type luks-device-mapping))
|
|
(mapped-device
|
|
(source (uuid "05f833fb-1c68-4453-9df5-68a454f59845"))
|
|
(target "doc2")
|
|
(type luks-device-mapping))))
|
|
|
|
;; The list of file systems that get "mounted". The unique
|
|
;; file system identifiers there ("UUIDs") can be obtained
|
|
;; by running 'blkid' in a terminal.
|
|
(file-systems
|
|
(cons* (file-system
|
|
(mount-point "/")
|
|
(device (file-system-label "guixos"))
|
|
(type "btrfs"))
|
|
|
|
(file-system
|
|
(mount-point "/data")
|
|
(device (file-system-label "datapool"))
|
|
(type "btrfs"))
|
|
|
|
(file-system
|
|
(mount-point "/docs")
|
|
(device "/dev/mapper/doc1")
|
|
(type "btrfs"))
|
|
|
|
%base-file-systems)))
|