Kieran's opinionated (and probably slightly dumb) nix config

feat: add deploy-rs

dunkirk.sh 96d3b3ac 618af6f2

verified
Changed files
+162 -5
.github
workflows
+37
.github/workflows/deploy.yaml
···
+
name: Deploy NixOS Configurations
+
+
on:
+
push:
+
branches:
+
- main
+
workflow_dispatch:
+
+
jobs:
+
deploy:
+
runs-on: ubuntu-latest
+
steps:
+
- uses: actions/checkout@v4
+
+
- name: Install Nix
+
uses: DeterminateSystems/determinate-nix-action@main
+
+
- name: Setup Tailscale
+
uses: tailscale/github-action@v3
+
with:
+
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
+
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
+
tags: tag:deploy
+
use-cache: "true"
+
+
- name: Configure SSH
+
run: |
+
mkdir -p ~/.ssh
+
echo "StrictHostKeyChecking accept-new" >> ~/.ssh/config
+
+
- name: Deploy all configurations
+
run: |
+
nix run github:serokell/deploy-rs -- \
+
--skip-checks \
+
--remote-build \
+
--ssh-opts="-o StrictHostKeyChecking=accept-new" \
+
.
+77 -5
flake.lock
···
"type": "github"
}
},
+
"deploy-rs": {
+
"inputs": {
+
"flake-compat": "flake-compat",
+
"nixpkgs": [
+
"nixpkgs"
+
],
+
"utils": "utils"
+
},
+
"locked": {
+
"lastModified": 1762286984,
+
"narHash": "sha256-9I2H9x5We6Pl+DBYHjR1s3UT8wgwcpAH03kn9CqtdQc=",
+
"owner": "serokell",
+
"repo": "deploy-rs",
+
"rev": "9c870f63e28ec1e83305f7f6cb73c941e699f74f",
+
"type": "github"
+
},
+
"original": {
+
"owner": "serokell",
+
"repo": "deploy-rs",
+
"type": "github"
+
}
+
},
"disko": {
"inputs": {
"nixpkgs": [
···
}
},
"flake-compat": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1733328505,
+
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
+
"owner": "edolstra",
+
"repo": "flake-compat",
+
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
+
"type": "github"
+
},
+
"original": {
+
"owner": "edolstra",
+
"repo": "flake-compat",
+
"type": "github"
+
}
+
},
+
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
···
},
"flake-utils_3": {
"inputs": {
-
"systems": "systems_4"
+
"systems": "systems_5"
},
"locked": {
"lastModified": 1731533236,
···
},
"flake-utils_4": {
"inputs": {
-
"systems": "systems_5"
+
"systems": "systems_6"
},
"locked": {
"lastModified": 1731533236,
···
},
"flake-utils_5": {
"inputs": {
-
"systems": "systems_6"
+
"systems": "systems_7"
},
"locked": {
"lastModified": 1731533236,
···
},
"pre-commit-hooks": {
"inputs": {
-
"flake-compat": "flake-compat",
+
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": "nixpkgs_7"
},
···
"cedarlogic": "cedarlogic",
"claude-desktop": "claude-desktop",
"ctfd-alerts": "ctfd-alerts",
+
"deploy-rs": "deploy-rs",
"disko": "disko",
"flare": "flare",
"frc-nix": "frc-nix",
···
"nixpkgs": [
"nixpkgs"
],
-
"systems": "systems_7"
+
"systems": "systems_8"
},
"locked": {
"lastModified": 1763985453,
···
"type": "github"
},
+
"systems_8": {
+
"locked": {
+
"lastModified": 1681028828,
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+
"owner": "nix-systems",
+
"repo": "default",
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-systems",
+
"repo": "default",
+
"type": "github"
+
}
+
},
"terminal-wakatime": {
"inputs": {
"nixpkgs": [
···
"original": {
"owner": "taciturnaxolotl",
"repo": "terminal-wakatime",
+
"type": "github"
+
}
+
},
+
"utils": {
+
"inputs": {
+
"systems": "systems_4"
+
},
+
"locked": {
+
"lastModified": 1731533236,
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+
"owner": "numtide",
+
"repo": "flake-utils",
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+
"type": "github"
+
},
+
"original": {
+
"owner": "numtide",
+
"repo": "flake-utils",
"type": "github"
},
+48
flake.nix
···
url = "github:mrnossiom/wakatime-ls";
inputs.nixpkgs.follows = "nixpkgs";
};
+
+
deploy-rs = {
+
url = "github:serokell/deploy-rs";
+
inputs.nixpkgs.follows = "nixpkgs";
+
};
};
outputs =
···
home-manager,
nur,
nix-darwin,
+
deploy-rs,
...
}@inputs:
let
···
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt-tree;
+
+
# Deploy-rs configurations
+
deploy.nodes = {
+
# NixOS servers
+
prattle = {
+
hostname = "prattle";
+
profiles.system = {
+
sshUser = "kierank";
+
user = "root";
+
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.prattle;
+
};
+
};
+
+
terebithia = {
+
hostname = "terebithia";
+
profiles.system = {
+
sshUser = "kierank";
+
user = "root";
+
path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.terebithia;
+
};
+
};
+
+
# Home-manager machines
+
nest = {
+
hostname = "nest";
+
profiles.home = {
+
user = "kierank";
+
path = deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.nest;
+
};
+
};
+
+
ember = {
+
hostname = "ember";
+
profiles.home = {
+
user = "kierank";
+
path = deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.ember;
+
};
+
};
+
};
+
+
# Validation checks
+
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
};
}