diff --git a/hosts/common/optional/docker/default.nix b/hosts/common/optional/docker/default.nix index b6dba80..f3338b3 100644 --- a/hosts/common/optional/docker/default.nix +++ b/hosts/common/optional/docker/default.nix @@ -1,26 +1,10 @@ -{ pkgs, inputs, ... }: -{ - - imports = [ inputs.arion.nixosModules.arion ]; - environment.systemPackages = [ - pkgs.arion - ]; - - # Arion works with Docker, but for NixOS-based containers, you need Podman - # since NixOS 21.05. +{pkgs, ...}: { virtualisation = { - podman = { - enable = true; - defaultNetwork.settings.dns_enabled = true; - }; docker = { enable = true; - storageDriver = "btrfs"; - rootless = { - enable = true; - setSocketVariable = true; - }; }; }; - + environment.systemPackages = with pkgs; [ + docker-compose + ]; } diff --git a/hosts/common/optional/docker/postgres.nix b/hosts/common/optional/docker/postgres.nix index 75e2ac8..bf6f230 100644 --- a/hosts/common/optional/docker/postgres.nix +++ b/hosts/common/optional/docker/postgres.nix @@ -1,5 +1,10 @@ -{ pkgs, lib, inputs, config, ... }: -let +{ + pkgs, + lib, + inputs, + config, + ... +}: let admin_dbPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/postgres/admin_db/password".path; initScript = pkgs.writeText "init.sh" '' #!/bin/bash @@ -15,20 +20,20 @@ let CREATE DATABASE $database; GRANT ALL PRIVILEGES ON DATABASE $database TO $user; EOSQL - + # Loop through extensions and create them for ext in $(echo "$extensions" | tr ',' ' '); do echo " - Installing extention $ext" psql -v --username "$POSTGRES_USER" -d "$database" -c "CREATE EXTENSION $ext;" done } - + if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then - + # Parse the JSON string database_names=$(echo "$POSTGRES_MULTIPLE_DATABASES" | jq -r '.[0] | keys[]') echo "Multiple database creation requested: $(echo "$database_names" | tr "\n" " ")" - + # Loop through each database and create it for db_name in $database_names; do user=$(echo "$POSTGRES_MULTIPLE_DATABASES" | jq -r ".[0] | .''${db_name} | .user") @@ -67,10 +72,9 @@ let timezone = 'Etc/UTC' default_text_search_config = 'pg_catalog.english' ''; -in -{ +in { sops.secrets = { - "software/postgres/admin_db/password" = { }; + "software/postgres/admin_db/password" = {}; }; virtualisation.arion = { backend = "docker"; @@ -79,15 +83,15 @@ in restart = "unless-stopped"; build.context = "/nix/store"; build.dockerfile = builtins.baseNameOf "${pkgs.writeText "pgDockerfile" '' - FROM postgres:16 - # install packages - RUN apt-get update \ - && apt-get install -y --no-install-recommends \ - postgresql-16-postgis \ - jq \ - && rm -rf /var/lib/apt/lists/* - ''}"; - command = [ "postgres" "-c" "config_file=/etc/postgresql/postgresql.conf" ]; + FROM postgres:16 + # install packages + RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + postgresql-16-postgis \ + jq \ + && rm -rf /var/lib/apt/lists/* + ''}"; + command = ["postgres" "-c" "config_file=/etc/postgresql/postgresql.conf"]; environment = { POSTGRES_PASSWORD_FILE = admin_dbPasswordFile; POSTGRES_USER = "admin"; @@ -119,9 +123,8 @@ in ] ''; }; - ports = [ "5432:5432" ]; + ports = ["5432:5432"]; volumes = [ - # Mount pgdata to external zfs volume "/mnt/postgres:/var/lib/postgresql/data" @@ -129,7 +132,7 @@ in # "${pg_hbaConfig}:/var/lib/postgres/data/pgdata/pg_hba.conf" "${pgsqlConfig}:/etc/postgresql/postgresql.conf" - # Need to mount secret file + # Need to mount secret file "${admin_dbPasswordFile}:${admin_dbPasswordFile}" # PG init script to parse json specified in POSTGRES_MULTIPLE_DATABASES @@ -140,4 +143,3 @@ in }; }; } - diff --git a/hosts/common/users/sam/default.nix b/hosts/common/users/sam/default.nix index 81dd451..9e05a19 100644 --- a/hosts/common/users/sam/default.nix +++ b/hosts/common/users/sam/default.nix @@ -23,6 +23,7 @@ in { "networkmanager" "scanner" "lp" + "docker" ]; }; diff --git a/hosts/semita/default.nix b/hosts/semita/default.nix index 75ef605..683bfe3 100644 --- a/hosts/semita/default.nix +++ b/hosts/semita/default.nix @@ -46,6 +46,7 @@ in { ../common/optional/nfs-mounts/media.nix ../common/optional/nfs-mounts/homeshare.nix ../common/optional/printing.nix + ../common/optional/docker ]; boot = { diff --git a/pkgs/default.nix b/pkgs/default.nix index a47961f..d361fc5 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,9 +1,9 @@ pkgs: { - sddm-theme = pkgs.callPackage ./sddm-theme { }; - st = pkgs.callPackage ./st { }; - dwmblocks = pkgs.callPackage ./dwmblocks { }; - dmenu = pkgs.callPackage ./dmenu { }; - nsxiv = pkgs.callPackage ./nsxiv { }; - sqlfmt = pkgs.callPackage ./sqlfmt { }; - kunst = pkgs.callPackage ./kunst { }; + sddm-theme = pkgs.callPackage ./sddm-theme {}; + st = pkgs.callPackage ./st {}; + dwmblocks = pkgs.callPackage ./dwmblocks {}; + dmenu = pkgs.callPackage ./dmenu {}; + nsxiv = pkgs.callPackage ./nsxiv {}; + sqlfmt = pkgs.callPackage ./sqlfmt {}; + kunst = pkgs.callPackage ./kunst {}; }