From 638ef7093e0f16c882a51d2cbda8c136f0d2e079 Mon Sep 17 00:00:00 2001 From: Nickolaj Jepsen Date: Thu, 20 Feb 2025 22:50:06 +0100 Subject: [PATCH] update --- devshell.nix | 20 +++ flake.nix | 8 +- parts/formatter.nix => formatter.nix | 0 hosts/bootstrap/configuration.nix | 5 + {parts/hosts => hosts}/default.nix | 9 ++ .../desktop/disk-configuration.nix | 0 {parts/hosts => hosts}/desktop/facter.json | 0 {parts/hosts => hosts}/desktop/monitors.nix | 0 .../hosts/work => hosts/desktop}/nvidia.nix | 3 + .../hosts => hosts}/laptop/configuration.nix | 0 .../laptop/disk-configuration.nix | 0 {parts/hosts => hosts}/laptop/facter.json | 0 .../work/disk-configuration.nix | 2 +- .../hosts/desktop => hosts/work}/nvidia.nix | 0 justfile | 148 +++++++++++------- {parts/modules => modules}/apps/firefox.nix | 0 {parts/modules => modules}/apps/ghostty.nix | 0 {parts/modules => modules}/apps/pycharm.nix | 0 modules/apps/spotify.nix | 22 +++ modules/apps/sublime-merge.nix | 5 + modules/apps/virtualbox.nix | 9 ++ {parts/modules => modules}/apps/vscode.nix | 1 + {parts/modules => modules}/base/boot.nix | 0 .../modules => modules}/base/default-apps.nix | 0 {parts/modules => modules}/base/envvar.nix | 0 {parts/modules => modules}/base/ld.nix | 2 +- .../modules => modules}/base/networking.nix | 2 +- {parts/modules => modules}/base/nix.nix | 0 {parts/modules => modules}/base/secrets.nix | 4 +- {parts/modules => modules}/base/security.nix | 0 {parts/modules => modules}/base/ssh.nix | 12 +- {parts/modules => modules}/base/time.nix | 2 +- {parts/modules => modules}/base/user.nix | 2 +- .../modules => modules}/desktop/astal/app.ts | 0 .../desktop/astal/biome.json | 0 .../desktop/astal/default.nix | 0 .../desktop/astal/env.d.ts | 0 .../desktop/astal/icons/README.md | 0 .../astal/icons/chrome-custom-symbolic.svg | 0 .../astal/icons/circle-filled-symbolic.svg | 0 .../desktop/astal/icons/circle-symbolic.svg | 0 .../astal/icons/firefox-custom-symbolic.svg | 0 .../desktop/astal/icons/git-symbolic.svg | 0 .../icons/microphone-custom-symbolic.svg | 0 .../desktop/astal/icons/plus-symbolic.svg | 0 .../desktop/astal/icons/python-symbolic.svg | 0 .../astal/icons/star-filled-symbolic.svg | 0 .../desktop/astal/icons/terminal-symbolic.svg | 0 .../astal/icons/vscode-custom-symbolic.svg | 0 .../desktop/astal/node_modules/.bin/biome | 0 .../astal/node_modules/.package-lock.json | 0 .../@biomejs/biome/LICENSE-APACHE | 0 .../node_modules/@biomejs/biome/LICENSE-MIT | 0 .../node_modules/@biomejs/biome/README.hi.md | 0 .../node_modules/@biomejs/biome/README.ja.md | 0 .../node_modules/@biomejs/biome/README.kr.md | 0 .../node_modules/@biomejs/biome/README.md | 0 .../@biomejs/biome/README.pt-BR.md | 0 .../@biomejs/biome/README.zh-CN.md | 0 .../@biomejs/biome/README.zh-TW.md | 0 .../@biomejs/biome/ROME-LICENSE-MIT | 0 .../node_modules/@biomejs/biome/bin/biome | 0 .../@biomejs/biome/configuration_schema.json | 0 .../node_modules/@biomejs/biome/package.json | 0 .../node_modules/@biomejs/cli-linux-x64/biome | Bin .../@biomejs/cli-linux-x64/package.json | 0 .../desktop/astal/node_modules/astal | 0 .../desktop/astal/package-lock.json | 0 .../desktop/astal/package.json | 0 .../desktop/astal/src/bar/Bar.scss | 0 .../desktop/astal/src/bar/Bar.tsx | 0 .../desktop/astal/src/bar/SecondaryBar.tsx | 0 .../astal/src/bar/sections/Dropdown.scss | 0 .../astal/src/bar/sections/Dropdown.tsx | 0 .../desktop/astal/src/bar/sections/Media.scss | 0 .../desktop/astal/src/bar/sections/Media.tsx | 0 .../astal/src/bar/sections/Playback.scss | 0 .../astal/src/bar/sections/Playback.tsx | 0 .../astal/src/bar/sections/Workspace.scss | 0 .../astal/src/bar/sections/Workspace.tsx | 0 .../desktop/astal/src/config.ts | 0 .../desktop/astal/src/main.scss | 0 .../desktop/astal/src/main.ts | 0 .../astal/src/notification/Notification.scss | 0 .../astal/src/notification/Notification.tsx | 0 .../src/notification/NotificationPopups.tsx | 0 .../desktop/astal/src/utils/gtk.ts | 0 .../desktop/astal/src/utils/io.ts | 0 .../desktop/astal/src/utils/monitors.ts | 0 .../desktop/astal/src/utils/timeout.ts | 0 .../desktop/astal/src/utils/var-map.ts | 0 .../desktop/astal/src/variables.scss | 0 .../desktop/astal/src/widgets.ts | 0 .../desktop/astal/tsconfig.json | 0 {parts/modules => modules}/desktop/fonts.nix | 0 {parts/modules => modules}/desktop/greetd.nix | 0 .../desktop/gtk/default.nix | 20 ++- .../modules => modules}/desktop/gtk/theme.css | 0 modules/desktop/hyprland/background.svg | 9 ++ .../desktop/hyprland/default.nix | 5 +- modules/desktop/hyprland/hyprpaper.nix | 39 +++++ .../desktop/hyprland/hyprpolkitagent.nix | 0 .../desktop/walker/default.nix | 0 .../desktop/walker/theme.nix | 0 {parts/modules => modules}/dev/docker.nix | 8 +- {parts/modules => modules}/dev/just.nix | 0 {parts/modules => modules}/dev/k8s.nix | 13 +- {parts/modules => modules}/dev/python.nix | 2 +- {parts/modules => modules}/dev/tilt.nix | 0 {parts/modules => modules}/devenv.nix | 2 + {parts/modules => modules}/graphical.nix | 1 + {parts/modules => modules}/hardware/audio.nix | 0 .../modules => modules}/hardware/monitors.nix | 0 {parts/modules => modules}/hardware/usb.nix | 1 + .../modules => modules}/hardware/yubikey.nix | 0 {parts/modules => modules}/required.nix | 0 {parts/modules => modules}/shell.nix | 2 + modules/shell/comma.nix | 1 + {parts/modules => modules}/shell/core.nix | 1 - .../shell/fish/default.nix | 0 .../modules => modules}/shell/fish/k8s.fish | 0 .../modules => modules}/shell/fish/theme.fish | 0 {parts/modules => modules}/shell/git.nix | 0 {parts/modules => modules}/shell/neovim.nix | 0 modules/shell/zellij.nix | 11 ++ parts/devshell.nix | 29 ---- result | 2 +- ...6cfdef5dee6baf8dbbbe05c39cadb1-ssh-key.age | Bin 0 -> 686 bytes ...d1b1bc0ea99e5a278-hashed-user-password.age | 8 + ...5b0ff06b3abca21a3a0c1535d1f-ssh-key-ao.age | Bin 0 -> 2205 bytes ...09bfa8db892b2145082da0fb-hosts-private.age | Bin 0 -> 420 bytes secrets/hosts/bootstrap/id_ed25519.age | Bin 0 -> 769 bytes secrets/hosts/bootstrap/id_ed25519.pub | 1 + ...6fa2407a7e04b3273f11cf5-spotify-player.age | Bin 0 -> 637 bytes ...6fa2407a7e04b3273f11cf5-spotify-player.age | Bin 0 -> 598 bytes secrets/hosts/test/id_ed25519.age | 9 ++ secrets/hosts/test/id_ed25519.pub | 1 + ...a761afee1eec87601c0327f-spotify-player.age | 7 + secrets/spotify-player.age | Bin 0 -> 739 bytes parts/vm.nix => vm.nix | 0 140 files changed, 307 insertions(+), 121 deletions(-) create mode 100644 devshell.nix rename parts/formatter.nix => formatter.nix (100%) create mode 100644 hosts/bootstrap/configuration.nix rename {parts/hosts => hosts}/default.nix (93%) rename {parts/hosts => hosts}/desktop/disk-configuration.nix (100%) rename {parts/hosts => hosts}/desktop/facter.json (100%) rename {parts/hosts => hosts}/desktop/monitors.nix (100%) rename {parts/hosts/work => hosts/desktop}/nvidia.nix (72%) rename {parts/hosts => hosts}/laptop/configuration.nix (100%) rename {parts/hosts => hosts}/laptop/disk-configuration.nix (100%) rename {parts/hosts => hosts}/laptop/facter.json (100%) rename {parts/hosts => hosts}/work/disk-configuration.nix (95%) rename {parts/hosts/desktop => hosts/work}/nvidia.nix (100%) rename {parts/modules => modules}/apps/firefox.nix (100%) rename {parts/modules => modules}/apps/ghostty.nix (100%) rename {parts/modules => modules}/apps/pycharm.nix (100%) create mode 100644 modules/apps/spotify.nix create mode 100644 modules/apps/sublime-merge.nix create mode 100644 modules/apps/virtualbox.nix rename {parts/modules => modules}/apps/vscode.nix (98%) rename {parts/modules => modules}/base/boot.nix (100%) rename {parts/modules => modules}/base/default-apps.nix (100%) rename {parts/modules => modules}/base/envvar.nix (100%) rename {parts/modules => modules}/base/ld.nix (95%) rename {parts/modules => modules}/base/networking.nix (90%) rename {parts/modules => modules}/base/nix.nix (100%) rename {parts/modules => modules}/base/secrets.nix (80%) rename {parts/modules => modules}/base/security.nix (100%) rename {parts/modules => modules}/base/ssh.nix (69%) rename {parts/modules => modules}/base/time.nix (95%) rename {parts/modules => modules}/base/user.nix (89%) rename {parts/modules => modules}/desktop/astal/app.ts (100%) rename {parts/modules => modules}/desktop/astal/biome.json (100%) rename {parts/modules => modules}/desktop/astal/default.nix (100%) rename {parts/modules => modules}/desktop/astal/env.d.ts (100%) rename {parts/modules => modules}/desktop/astal/icons/README.md (100%) rename {parts/modules => modules}/desktop/astal/icons/chrome-custom-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/circle-filled-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/circle-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/firefox-custom-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/git-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/microphone-custom-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/plus-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/python-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/star-filled-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/terminal-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/icons/vscode-custom-symbolic.svg (100%) rename {parts/modules => modules}/desktop/astal/node_modules/.bin/biome (100%) rename {parts/modules => modules}/desktop/astal/node_modules/.package-lock.json (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/LICENSE-APACHE (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/LICENSE-MIT (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/README.hi.md (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/README.ja.md (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/README.kr.md (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/README.md (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/README.pt-BR.md (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/README.zh-CN.md (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/README.zh-TW.md (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/ROME-LICENSE-MIT (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/bin/biome (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/configuration_schema.json (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/biome/package.json (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/cli-linux-x64/biome (100%) rename {parts/modules => modules}/desktop/astal/node_modules/@biomejs/cli-linux-x64/package.json (100%) rename {parts/modules => modules}/desktop/astal/node_modules/astal (100%) rename {parts/modules => modules}/desktop/astal/package-lock.json (100%) rename {parts/modules => modules}/desktop/astal/package.json (100%) rename {parts/modules => modules}/desktop/astal/src/bar/Bar.scss (100%) rename {parts/modules => modules}/desktop/astal/src/bar/Bar.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/bar/SecondaryBar.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Dropdown.scss (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Dropdown.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Media.scss (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Media.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Playback.scss (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Playback.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Workspace.scss (100%) rename {parts/modules => modules}/desktop/astal/src/bar/sections/Workspace.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/config.ts (100%) rename {parts/modules => modules}/desktop/astal/src/main.scss (100%) rename {parts/modules => modules}/desktop/astal/src/main.ts (100%) rename {parts/modules => modules}/desktop/astal/src/notification/Notification.scss (100%) rename {parts/modules => modules}/desktop/astal/src/notification/Notification.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/notification/NotificationPopups.tsx (100%) rename {parts/modules => modules}/desktop/astal/src/utils/gtk.ts (100%) rename {parts/modules => modules}/desktop/astal/src/utils/io.ts (100%) rename {parts/modules => modules}/desktop/astal/src/utils/monitors.ts (100%) rename {parts/modules => modules}/desktop/astal/src/utils/timeout.ts (100%) rename {parts/modules => modules}/desktop/astal/src/utils/var-map.ts (100%) rename {parts/modules => modules}/desktop/astal/src/variables.scss (100%) rename {parts/modules => modules}/desktop/astal/src/widgets.ts (100%) rename {parts/modules => modules}/desktop/astal/tsconfig.json (100%) rename {parts/modules => modules}/desktop/fonts.nix (100%) rename {parts/modules => modules}/desktop/greetd.nix (100%) rename {parts/modules => modules}/desktop/gtk/default.nix (54%) rename {parts/modules => modules}/desktop/gtk/theme.css (100%) create mode 100644 modules/desktop/hyprland/background.svg rename {parts/modules => modules}/desktop/hyprland/default.nix (98%) create mode 100644 modules/desktop/hyprland/hyprpaper.nix rename {parts/modules => modules}/desktop/hyprland/hyprpolkitagent.nix (100%) rename {parts/modules => modules}/desktop/walker/default.nix (100%) rename {parts/modules => modules}/desktop/walker/theme.nix (100%) rename {parts/modules => modules}/dev/docker.nix (86%) rename {parts/modules => modules}/dev/just.nix (100%) rename {parts/modules => modules}/dev/k8s.nix (78%) rename {parts/modules => modules}/dev/python.nix (98%) rename {parts/modules => modules}/dev/tilt.nix (100%) rename {parts/modules => modules}/devenv.nix (72%) rename {parts/modules => modules}/graphical.nix (92%) rename {parts/modules => modules}/hardware/audio.nix (100%) rename {parts/modules => modules}/hardware/monitors.nix (100%) rename {parts/modules => modules}/hardware/usb.nix (55%) rename {parts/modules => modules}/hardware/yubikey.nix (100%) rename {parts/modules => modules}/required.nix (100%) rename {parts/modules => modules}/shell.nix (72%) create mode 100644 modules/shell/comma.nix rename {parts/modules => modules}/shell/core.nix (97%) rename {parts/modules => modules}/shell/fish/default.nix (100%) rename {parts/modules => modules}/shell/fish/k8s.fish (100%) rename {parts/modules => modules}/shell/fish/theme.fish (100%) rename {parts/modules => modules}/shell/git.nix (100%) rename {parts/modules => modules}/shell/neovim.nix (100%) create mode 100644 modules/shell/zellij.nix delete mode 100644 parts/devshell.nix create mode 100644 secrets/hosts/bootstrap/.rekey/006cfdef5dee6baf8dbbbe05c39cadb1-ssh-key.age create mode 100644 secrets/hosts/bootstrap/.rekey/36c574349a88c5ad1b1bc0ea99e5a278-hashed-user-password.age create mode 100644 secrets/hosts/bootstrap/.rekey/6cf125b0ff06b3abca21a3a0c1535d1f-ssh-key-ao.age create mode 100644 secrets/hosts/bootstrap/.rekey/9027794209bfa8db892b2145082da0fb-hosts-private.age create mode 100644 secrets/hosts/bootstrap/id_ed25519.age create mode 100644 secrets/hosts/bootstrap/id_ed25519.pub create mode 100644 secrets/hosts/desktop/.rekey/5f97a27cf6fa2407a7e04b3273f11cf5-spotify-player.age create mode 100644 secrets/hosts/laptop/.rekey/5f97a27cf6fa2407a7e04b3273f11cf5-spotify-player.age create mode 100644 secrets/hosts/test/id_ed25519.age create mode 100644 secrets/hosts/test/id_ed25519.pub create mode 100644 secrets/hosts/work/.rekey/7e53c5cd0a761afee1eec87601c0327f-spotify-player.age create mode 100644 secrets/spotify-player.age rename parts/vm.nix => vm.nix (100%) diff --git a/devshell.nix b/devshell.nix new file mode 100644 index 0000000..77393a6 --- /dev/null +++ b/devshell.nix @@ -0,0 +1,20 @@ +{inputs, ...}: { + imports = [inputs.agenix-rekey.flakeModule]; + + perSystem = { + system, + pkgs, + ... + }: { + devShells.default = pkgs.mkShell { + inherit system; + + packages = [ + pkgs.nix + pkgs.nixos-rebuild + pkgs.nixos-rebuild + pkgs.nh + ]; + }; + }; +} diff --git a/flake.nix b/flake.nix index 129d59a..4b4d0d4 100644 --- a/flake.nix +++ b/flake.nix @@ -66,10 +66,10 @@ flake-parts.lib.mkFlake {inherit inputs;} { imports = [ inputs.agenix-rekey.flakeModule - ./parts/devshell.nix - ./parts/vm.nix - ./parts/formatter.nix - ./parts/hosts + ./devshell.nix + ./vm.nix + ./formatter.nix + ./hosts ]; systems = [ "x86_64-linux" diff --git a/parts/formatter.nix b/formatter.nix similarity index 100% rename from parts/formatter.nix rename to formatter.nix diff --git a/hosts/bootstrap/configuration.nix b/hosts/bootstrap/configuration.nix new file mode 100644 index 0000000..da5caad --- /dev/null +++ b/hosts/bootstrap/configuration.nix @@ -0,0 +1,5 @@ +{username, ...}: { + networking.wireless.enable = false; + networking.networkmanager.enable = true; + users.users.${username}.extraGroups = [ "networkmanager" ]; +} diff --git a/parts/hosts/default.nix b/hosts/default.nix similarity index 93% rename from parts/hosts/default.nix rename to hosts/default.nix index 1d023c2..0d8a093 100644 --- a/parts/hosts/default.nix +++ b/hosts/default.nix @@ -55,6 +55,15 @@ with lib; let ); in { config.flake.nixosConfigurations = { + bootstrap = mkSystem { + hostname = "bootstrap"; + username = "nixos"; + modules = [ + ../modules/required.nix + ../modules/shell.nix + ]; + }; + laptop = mkSystem { hostname = "laptop"; username = "nickolaj"; diff --git a/parts/hosts/desktop/disk-configuration.nix b/hosts/desktop/disk-configuration.nix similarity index 100% rename from parts/hosts/desktop/disk-configuration.nix rename to hosts/desktop/disk-configuration.nix diff --git a/parts/hosts/desktop/facter.json b/hosts/desktop/facter.json similarity index 100% rename from parts/hosts/desktop/facter.json rename to hosts/desktop/facter.json diff --git a/parts/hosts/desktop/monitors.nix b/hosts/desktop/monitors.nix similarity index 100% rename from parts/hosts/desktop/monitors.nix rename to hosts/desktop/monitors.nix diff --git a/parts/hosts/work/nvidia.nix b/hosts/desktop/nvidia.nix similarity index 72% rename from parts/hosts/work/nvidia.nix rename to hosts/desktop/nvidia.nix index 0d4ef5e..2611b0b 100644 --- a/parts/hosts/work/nvidia.nix +++ b/hosts/desktop/nvidia.nix @@ -9,4 +9,7 @@ _: { powerManagement.enable = true; nvidiaSettings = true; }; + + # Avoid nvidia driver from crashing the system + boot.kernelParams = ["pcie_aspm=off"]; } diff --git a/parts/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix similarity index 100% rename from parts/hosts/laptop/configuration.nix rename to hosts/laptop/configuration.nix diff --git a/parts/hosts/laptop/disk-configuration.nix b/hosts/laptop/disk-configuration.nix similarity index 100% rename from parts/hosts/laptop/disk-configuration.nix rename to hosts/laptop/disk-configuration.nix diff --git a/parts/hosts/laptop/facter.json b/hosts/laptop/facter.json similarity index 100% rename from parts/hosts/laptop/facter.json rename to hosts/laptop/facter.json diff --git a/parts/hosts/work/disk-configuration.nix b/hosts/work/disk-configuration.nix similarity index 95% rename from parts/hosts/work/disk-configuration.nix rename to hosts/work/disk-configuration.nix index f5bc1d1..9e42851 100644 --- a/parts/hosts/work/disk-configuration.nix +++ b/hosts/work/disk-configuration.nix @@ -2,7 +2,7 @@ _: { disko.devices = { disk = { main = { - device = "/dev/disk/by-id/ata-SanDisk_SDSSDXPS240G_153251401377"; + device = "/dev/sda"; type = "disk"; content = { type = "gpt"; diff --git a/parts/hosts/desktop/nvidia.nix b/hosts/work/nvidia.nix similarity index 100% rename from parts/hosts/desktop/nvidia.nix rename to hosts/work/nvidia.nix diff --git a/justfile b/justfile index 5b498ca..066bf92 100644 --- a/justfile +++ b/justfile @@ -1,10 +1,15 @@ # export NIXPKGS_ALLOW_UNFREE := "1" +nixcmd := "nix --experimental-features 'nix-command flakes'" + +@_default: + just --list + [group('vm')] vm-build: git add . echo "Building VM..." - nix build .#vm + {{ nixcmd }} build .#vm echo "VM built." sudo chmod 777 result/nixos.qcow2 echo "VM permissions set." @@ -42,96 +47,119 @@ vm-destroy: virsh pool-destroy nixos virsh pool-undefine nixos -[group('nix')] -repl: - nix repl --show-trace ".#" nixpkgs - +[doc('Wrapper for nixos-facter')] [group('deploy')] -deploy-factor hostname target='': +factor hostname target='': #!/usr/bin/env -S bash -e target="{{ target }}" if [ -z "$target" ]; then - sudo nix run nixpkgs#nixos-facter -- -o parts/hosts/{{ hostname }}/facter.json + {{ nixcmd }} run nixpkgs#nixos-facter -- -o hosts/{{ hostname }}/facter.json else - nix run github:nix-community/nixos-anywhere -- \ + {{ nixcmd }} run github:nix-community/nixos-anywhere -- \ --flake .#{{ hostname }} \ --target-host {{ target }} \ --generate-hardware-config nixos-facter \ - ./parts/hosts/{{ hostname }}/facter.json + ./hosts/{{ hostname }}/facter.json fi -tmp_dir := "/tmp/secrets/" + uuid() - +[doc('Wrapper for nixos-rebuild switch')] [group("deploy")] -deploy hostname *ARGS: - nix run nixpkgs#nixos-rebuild -- \ - --flake .#{{ hostname }} \ - {{ ARGS }} switch +switch hostname target='': + #!/usr/bin/env -S bash -e + target="{{ target }}" + if [ -z "$target" ]; then + {{ nixcmd }} run nixpkgs#nixos-rebuild -- switch --flake .#{{ hostname }} + else + {{ nixcmd }} run nixpkgs#nixos-rebuild -- switch \ + --flake .#{{ hostname }} \ + --target-host {{ target }} \ + --use-remote-sudo + fi +[doc('Use nixos-anywhere to deploy to a remote host')] [group('deploy')] deploy-remote hostname target: #!/usr/bin/env -S bash -e git add . - trap "rm -rf {{ tmp_dir }}" EXIT + temp=$(mktemp -d) + trap "rm -rf $temp" EXIT - # Copy ssh key to decrypt agenix secrets - install -d -m755 {{ tmp_dir }}/etc/ssh - just secret-echo ./secrets/hosts/{{ hostname }}/id_ed25519 > {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key - chmod 600 {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key - cp ./secrets/hosts/{{ hostname }}/id_ed25519.pub {{ tmp_dir }}/etc/ssh/ssh_host_ed25519_key.pub + + install -d -m755 "$temp/etc/ssh" + + # Copy ssh key to decrypt agenix secrets + just age -d "./secrets/hosts/{{ hostname }}/id_ed25519.age" > "$temp/etc/ssh/ssh_host_ed25519_key" + chmod 600 "$temp/etc/ssh/ssh_host_ed25519_key" + + cp "./secrets/hosts/{{ hostname }}/id_ed25519.pub" "$temp/etc/ssh/ssh_host_ed25519_key.pub" # Deploy - nix run github:nix-community/nixos-anywhere -- \ + {{ nixcmd }} run github:nix-community/nixos-anywhere -- \ --flake .#{{ hostname }} \ - --disk-encryption-keys /luks-password <(just secret-echo ./secrets/luks-password) \ - --extra-files {{ tmp_dir }} \ - --target-host {{ target }} + --disk-encryption-keys /luks-password <(just age -d ./secrets/luks-password.age) \ + --extra-files "$temp" \ + --target-host "{{ target }}" +[doc('A wrapper disko-install')] [group('deploy')] -deploy-switch hostname target *ARGS: - nix run nixpkgs#nixos-rebuild -- \ - --flake .#{{ hostname }} \ - --target-host {{ target }} \ - --use-remote-sudo \ - {{ ARGS }} switch +disko-install hostname disk="/dev/sda": + sudo {{ nixcmd }} run 'github:nix-community/disko/latest#disko-install' -- --flake .#{{ hostname }} --disk main {{ disk }} +[doc('Build an install ISO for a host')] [group('deploy')] -deploy-iso hostname: - nix build .#nixosConfigurations.{{ hostname }}.config.formats.install-iso - -identifier := "./secrets/yubikey-identity.pub" - -[group("secret")] -secret-import path: - #!/usr/bin/env bash - # load the file from the root system - cat {{ path }} | nix develop --quiet --command bash -c \ - "rage -e -r -o secrets/{{ path }}.age -i {{ identifier }}" +iso hostname: + {{ nixcmd }} build .#nixosConfigurations.{{ hostname }}.config.formats.install-iso +[doc('Runs (r)age with yubikey identity')] [group('secret')] -secret-echo file: - nix develop --quiet --command bash -c \ - "rage -d {{ file }}.age -i {{ identifier }}" - -default := "" +age *ARGS="--help": + @{{ nixcmd }} shell nixpkgs#rage nixpkgs#age-plugin-yubikey --command rage {{ ARGS }} -i ./secrets/yubikey-identity.pub +[doc('Decrypt a file to stdout')] [group('secret')] -secret-edit name=default: - nix run .#agenix-rekey.x86_64-linux.edit {{ name }} +decrypt file: + just age -d {{ file }} +[doc('Edit an encrypted file in $EDITOR')] +[group('secret')] +secret-edit name: + {{ nixcmd }} run .#agenix-rekey.x86_64-linux.edit {{ name }} + +[doc('Rekey all secrets - needed when adding secrets/hosts')] [group('secret')] secret-rekey: - nix develop --quiet --command bash -c \ - "agenix rekey" - git add . + {{ nixcmd }} run .#agenix-rekey.x86_64-linux.rekey -[group('secret')] -secret-new-ssh-key hostname $USER: - #!/usr/bin/env -S nix develop --quiet --command bash +[doc("Sets up configuration + SSH keys for a new host")] +new-host hostname username: + #!/usr/bin/env -S bash -e + temp=$(mktemp -d) + trap "rm -rf $temp" EXIT - mkdir -p secrets/hosts/{{ hostname }} - ssh-keygen -t ed25519 -f secrets/hosts/{{ hostname }}/id_ed25519 -C "${USER}@{{ hostname }}" - age-plugin-yubikey -e secrets/hosts/{{ hostname }}/id_ed25519 \ - -o secrets/hosts/{{ hostname }}/id_ed25519.age - rm secrets/hosts/{{ hostname }}/id_ed25519 + echo "Setting up folders" + mkdir -p "secrets/hosts/{{ hostname }}" + mkdir -p "hosts/{{ hostname }}" + + echo "Generating SSH key for {{ username }}@{{ hostname }}" + ssh-keygen -q -t ed25519 -f "$temp/id_ed25519" -C "{{ username }}@{{ hostname }}" -N "" + cp "$temp/id_ed25519.pub" "secrets/hosts/{{ hostname }}/id_ed25519.pub" + + echo "Encrypting SSH key" + just age -e "$temp/id_ed25519" -o "secrets/hosts/{{ hostname }}/id_ed25519.age" + + echo "Remember to update ./hosts/default.nix eg:" + + # Bold with no newline + cat < + + + + + + + + \ No newline at end of file diff --git a/parts/modules/desktop/hyprland/default.nix b/modules/desktop/hyprland/default.nix similarity index 98% rename from parts/modules/desktop/hyprland/default.nix rename to modules/desktop/hyprland/default.nix index 122c400..99be7c7 100644 --- a/parts/modules/desktop/hyprland/default.nix +++ b/modules/desktop/hyprland/default.nix @@ -11,8 +11,6 @@ with lib; let then (builtins.elemAt config.monitors 0).name else ""; - - mkKeyboard = name: { inherit name; kb_layout = "eu"; @@ -20,6 +18,7 @@ with lib; let in { imports = [ ./hyprpolkitagent.nix + ./hyprpaper.nix ]; config = { @@ -79,6 +78,8 @@ in { ) config.monitors; + exec = ["systemctl --user start hyprpaper"]; + input = { # Most unknown keyboards will be of the DK layout, we set known keyboards to eu in `devices` kb_layout = "dk"; diff --git a/modules/desktop/hyprland/hyprpaper.nix b/modules/desktop/hyprland/hyprpaper.nix new file mode 100644 index 0000000..c09b781 --- /dev/null +++ b/modules/desktop/hyprland/hyprpaper.nix @@ -0,0 +1,39 @@ +{ + pkgs, + lib, + ... +}: let + background = pkgs.stdenvNoCC.mkDerivation { + pname = "desktop-background"; + version = "0.1"; + + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./background.svg + ]; + }; + + nativeBuildInputs = [pkgs.inkscape]; + + buildPhase = '' + inkscape -w 3840 -h 2160 background.svg -o background.png + ''; + + installPhase = '' + mkdir -p $out/share/backgrounds + cp *.svg *.png $out/share/backgrounds + ''; + }; + png = background + "/share/backgrounds/background.png"; +in { + fireproof.home-manager = { + services.hyprpaper = { + enable = true; + settings = { + preload = [png]; + wallpaper = [",${png}"]; + }; + }; + }; +} diff --git a/parts/modules/desktop/hyprland/hyprpolkitagent.nix b/modules/desktop/hyprland/hyprpolkitagent.nix similarity index 100% rename from parts/modules/desktop/hyprland/hyprpolkitagent.nix rename to modules/desktop/hyprland/hyprpolkitagent.nix diff --git a/parts/modules/desktop/walker/default.nix b/modules/desktop/walker/default.nix similarity index 100% rename from parts/modules/desktop/walker/default.nix rename to modules/desktop/walker/default.nix diff --git a/parts/modules/desktop/walker/theme.nix b/modules/desktop/walker/theme.nix similarity index 100% rename from parts/modules/desktop/walker/theme.nix rename to modules/desktop/walker/theme.nix diff --git a/parts/modules/dev/docker.nix b/modules/dev/docker.nix similarity index 86% rename from parts/modules/dev/docker.nix rename to modules/dev/docker.nix index c5a51cb..5db4a6b 100644 --- a/parts/modules/dev/docker.nix +++ b/modules/dev/docker.nix @@ -1,4 +1,8 @@ -{username, pkgs, ...}: { +{ + username, + pkgs, + ... +}: { environment.systemPackages = [ pkgs.docker pkgs.docker-compose @@ -7,4 +11,4 @@ virtualisation.docker.enable = true; virtualisation.docker.storageDriver = "btrfs"; users.extraGroups.docker.members = [username]; -} \ No newline at end of file +} diff --git a/parts/modules/dev/just.nix b/modules/dev/just.nix similarity index 100% rename from parts/modules/dev/just.nix rename to modules/dev/just.nix diff --git a/parts/modules/dev/k8s.nix b/modules/dev/k8s.nix similarity index 78% rename from parts/modules/dev/k8s.nix rename to modules/dev/k8s.nix index 52a5e9d..d908ce3 100644 --- a/parts/modules/dev/k8s.nix +++ b/modules/dev/k8s.nix @@ -1,17 +1,22 @@ -{pkgs, username, config, ...}: { +{ + pkgs, + username, + config, + ... +}: { environment.systemPackages = [ pkgs.kubectl ]; age.secrets.k8s-ao-dev = { - rekeyFile = ../../../secrets/k8s/ao-dev.age; + rekeyFile = ../../secrets/k8s/ao-dev.age; path = "/home/${username}/.kube/config.ao-dev"; mode = "0600"; owner = username; }; age.secrets.k8s-ao-prod = { - rekeyFile = ../../../secrets/k8s/ao-prod.age; + rekeyFile = ../../secrets/k8s/ao-prod.age; path = "/home/${username}/.kube/config.ao-prod"; mode = "0600"; owner = username; @@ -22,4 +27,4 @@ KUBECONFIG = "${config.age.secrets.k8s-ao-dev.path}:${config.age.secrets.k8s-ao-prod.path}:$HOME/.kube/config"; }; }; -} \ No newline at end of file +} diff --git a/parts/modules/dev/python.nix b/modules/dev/python.nix similarity index 98% rename from parts/modules/dev/python.nix rename to modules/dev/python.nix index 65830ee..058eb97 100644 --- a/parts/modules/dev/python.nix +++ b/modules/dev/python.nix @@ -8,7 +8,7 @@ pkgsUnstable.rye pkgs.python3 ]; - + # uv tool adds executable to $HOME/.local/bin, so add it to PATH fireproof.home-manager = { home.sessionPath = [ diff --git a/parts/modules/dev/tilt.nix b/modules/dev/tilt.nix similarity index 100% rename from parts/modules/dev/tilt.nix rename to modules/dev/tilt.nix diff --git a/parts/modules/devenv.nix b/modules/devenv.nix similarity index 72% rename from parts/modules/devenv.nix rename to modules/devenv.nix index 42165ad..f6120c0 100644 --- a/parts/modules/devenv.nix +++ b/modules/devenv.nix @@ -2,6 +2,8 @@ imports = [ ./apps/pycharm.nix ./apps/vscode.nix + ./apps/sublime-merge.nix + ./apps/virtualbox.nix ./dev/python.nix ./dev/k8s.nix ./dev/docker.nix diff --git a/parts/modules/graphical.nix b/modules/graphical.nix similarity index 92% rename from parts/modules/graphical.nix rename to modules/graphical.nix index 6a541e1..8a7b95a 100644 --- a/parts/modules/graphical.nix +++ b/modules/graphical.nix @@ -8,6 +8,7 @@ ./desktop/astal/default.nix ./desktop/walker/default.nix ./desktop/gtk/default.nix + ./apps/spotify.nix ./apps/firefox.nix ./apps/ghostty.nix ]; diff --git a/parts/modules/hardware/audio.nix b/modules/hardware/audio.nix similarity index 100% rename from parts/modules/hardware/audio.nix rename to modules/hardware/audio.nix diff --git a/parts/modules/hardware/monitors.nix b/modules/hardware/monitors.nix similarity index 100% rename from parts/modules/hardware/monitors.nix rename to modules/hardware/monitors.nix diff --git a/parts/modules/hardware/usb.nix b/modules/hardware/usb.nix similarity index 55% rename from parts/modules/hardware/usb.nix rename to modules/hardware/usb.nix index 6034d3e..2b23fa2 100644 --- a/parts/modules/hardware/usb.nix +++ b/modules/hardware/usb.nix @@ -1,3 +1,4 @@ _: { + services.devmon.enable = true; services.udisks2.enable = true; } diff --git a/parts/modules/hardware/yubikey.nix b/modules/hardware/yubikey.nix similarity index 100% rename from parts/modules/hardware/yubikey.nix rename to modules/hardware/yubikey.nix diff --git a/parts/modules/required.nix b/modules/required.nix similarity index 100% rename from parts/modules/required.nix rename to modules/required.nix diff --git a/parts/modules/shell.nix b/modules/shell.nix similarity index 72% rename from parts/modules/shell.nix rename to modules/shell.nix index 6dde81b..8922e37 100644 --- a/parts/modules/shell.nix +++ b/modules/shell.nix @@ -3,6 +3,8 @@ ./shell/core.nix ./shell/fish/default.nix ./shell/git.nix + ./shell/comma.nix ./shell/neovim.nix + ./shell/zellij.nix ]; } diff --git a/modules/shell/comma.nix b/modules/shell/comma.nix new file mode 100644 index 0000000..13c4555 --- /dev/null +++ b/modules/shell/comma.nix @@ -0,0 +1 @@ +_: {programs.nix-index-database.comma.enable = true;} diff --git a/parts/modules/shell/core.nix b/modules/shell/core.nix similarity index 97% rename from parts/modules/shell/core.nix rename to modules/shell/core.nix index 35c64a1..454dd27 100644 --- a/parts/modules/shell/core.nix +++ b/modules/shell/core.nix @@ -39,7 +39,6 @@ xz # Nix - comma nurl ]; }; diff --git a/parts/modules/shell/fish/default.nix b/modules/shell/fish/default.nix similarity index 100% rename from parts/modules/shell/fish/default.nix rename to modules/shell/fish/default.nix diff --git a/parts/modules/shell/fish/k8s.fish b/modules/shell/fish/k8s.fish similarity index 100% rename from parts/modules/shell/fish/k8s.fish rename to modules/shell/fish/k8s.fish diff --git a/parts/modules/shell/fish/theme.fish b/modules/shell/fish/theme.fish similarity index 100% rename from parts/modules/shell/fish/theme.fish rename to modules/shell/fish/theme.fish diff --git a/parts/modules/shell/git.nix b/modules/shell/git.nix similarity index 100% rename from parts/modules/shell/git.nix rename to modules/shell/git.nix diff --git a/parts/modules/shell/neovim.nix b/modules/shell/neovim.nix similarity index 100% rename from parts/modules/shell/neovim.nix rename to modules/shell/neovim.nix diff --git a/modules/shell/zellij.nix b/modules/shell/zellij.nix new file mode 100644 index 0000000..8df7b17 --- /dev/null +++ b/modules/shell/zellij.nix @@ -0,0 +1,11 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + zellij + ]; + + fireproof.home-manager = { + programs.zellij = { + enable = true; + }; + }; +} diff --git a/parts/devshell.nix b/parts/devshell.nix deleted file mode 100644 index e49a103..0000000 --- a/parts/devshell.nix +++ /dev/null @@ -1,29 +0,0 @@ -{inputs, ...}: { - imports = [inputs.agenix-rekey.flakeModule]; - - perSystem = { - config, - system, - pkgs, - ... - }: { - # agenix-rekey.nixosConfigurations = self.nodes; - devShells.default = pkgs.mkShell { - inherit system; - - packages = [ - pkgs.nix - pkgs.nixos-rebuild - pkgs.nixos-rebuild - pkgs.nh - pkgs.age - pkgs.rage - pkgs.age-plugin-yubikey - config.agenix-rekey.package - ]; - env.AGENIX_REKEY_ADD_TO_GIT = true; - }; - - agenix-rekey.nixosConfigurations = inputs.self.nixosConfigurations; # (not technically needed, as it is already the default) - }; -} diff --git a/result b/result index b4faad8..7862996 120000 --- a/result +++ b/result @@ -1 +1 @@ -/nix/store/jpdwv558x8bc92lx6vs54z296xwzhck2-nixos.iso \ No newline at end of file +/nix/store/nc1f93w32gkn9i69vhfi88fp53q29ib7-nixos-24.11.20250212.0ff09db-x86_64-linux.iso \ No newline at end of file diff --git a/secrets/hosts/bootstrap/.rekey/006cfdef5dee6baf8dbbbe05c39cadb1-ssh-key.age b/secrets/hosts/bootstrap/.rekey/006cfdef5dee6baf8dbbbe05c39cadb1-ssh-key.age new file mode 100644 index 0000000000000000000000000000000000000000..b5aa0e8d3b0bcbdaffce9db0376af8a7e0b6a7a9 GIT binary patch literal 686 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCUlH1x9w2~-Gj^sdUx z_pk_YE=$!8%MOb)@~|*=4>xtoO!h0u2{!ZavGA$Na1AL9jpPbTH?K4|i7<_<2ro7Y zip&cQPYv;Qs`3mrGxasd3Xh5m&(aPtEe`ee%Ldt|lU<~nUX+?xoXS;RX&PGUp&#Jv ztX=9{Vd3eOZB%R-5}ZXQl8R?%LY*J=aW?IZu@KdrPMC#e5PnBG~OEy?s zTUGkz)Rn@=ks-Ova$=(L2^SuyaCT=a-`hJUcAo6%848TzUrz@!%w(T}!+)UYuL zd3-c)WBHTmujVznv@vsR{${~{tjEpjPM+fFH_54cf62RXJvBlcS^UuH$Nq%qrSg)+ctya+Er~_TmL=d5fK&? mmRH|?@%TBvzq$9EeLlMXbZL}#*XLsB-S&n{Y5&rnPL2RBSR_>d literal 0 HcmV?d00001 diff --git a/secrets/hosts/bootstrap/.rekey/36c574349a88c5ad1b1bc0ea99e5a278-hashed-user-password.age b/secrets/hosts/bootstrap/.rekey/36c574349a88c5ad1b1bc0ea99e5a278-hashed-user-password.age new file mode 100644 index 0000000..e310caf --- /dev/null +++ b/secrets/hosts/bootstrap/.rekey/36c574349a88c5ad1b1bc0ea99e5a278-hashed-user-password.age @@ -0,0 +1,8 @@ +age-encryption.org/v1 +-> ssh-ed25519 I1N8TQ oHZTrwd8IVHBHKgqjXOBu3IjY1X7DUa2FKC7h0bDYAA +xDeL0WhGFY0vsFr1f/12uHmrY0QyokfpmgwN/ord5Do +-> ITY_-grease QcD_xSt WhA"L<|S *)OF o~[x|} +BYO4Uc20KSlWj7gZt7HqqtzkgNWD7whcxFNBLqewBCJauDyXrKz642OpPM1XJcPV +3zShFMHjW1F9C+Lg2zOHcyHA6wIzUgIEbHlugRbPNJ/IkcbgaFuMw1la +--- y+EIZ8/ADB80WB7fyWP+BcR+/co46qXkn7bao4koUsE +@|ƒ`:Wn.0 >ܡm4OxJ4l HS.v_aT2b7TkF0@;L;aqOi \ No newline at end of file diff --git a/secrets/hosts/bootstrap/.rekey/6cf125b0ff06b3abca21a3a0c1535d1f-ssh-key-ao.age b/secrets/hosts/bootstrap/.rekey/6cf125b0ff06b3abca21a3a0c1535d1f-ssh-key-ao.age new file mode 100644 index 0000000000000000000000000000000000000000..5b697254081911993d12678a9240652341232f44 GIT binary patch literal 2205 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCUlH1x9w2~{>=kY`>RY?>ta%#m1UNgXOi!j=j~aLo6n`ItE-^z>{b~S6=_nQ6yRTJ zQS9y!>Fa42n31>`B818IoRLs>lf6c80S1uK>3pQu(t=?YZoUlx> z`8b=!mOvl5RL`k8xssgw&;LvLV(DN$SCu`-VeY|1~q59?<|duAU#VQk--^fhbt1lxs`%kBkOT;II+-y+?& z%NAE9aQ4LCTNciv{b`=oiQm4edtLcT&x-Lg6wEK2t82Xc=d$^$&sFr^UHVnM@UQXi z6~|vjxm}ojP3O+(89GVF1%*#=WL*)^W$4&cB^;Sl!S{Dx-BJC>)f+3bzNgDg+}U7V zGbeQGm%`P@f9csxKDV&Lo2IzN&q32&>f{bidxocn z)|_vYZMl@W??k-YJWqZDriZr=%X_(MoEYSIelt!g+swUSvw4_AdQwwrk1j_FuZ`^?~2}8)xl?M=uNaNls45*9woC zC0AyqqPIboeP3Vrl#VS|a%7ceM?KZ|O`dyBKsW7Pdvo}w47MA8c@9*oweVfketTo7 z#`!A(&Hq{FTydYi&S$D?ws5TKGCP532eQ1+uS>hj`FhpE<1SB^?DgL#&2#dbb#j~T z>sQkqer8`fc=Aq&*S?y~ylYaOJI-uFE=<^dV=K=srZsY6Wq}gQ`%RUCjhcEy0tLl1rtDp07`y54S#EMN3|VZr`@%7b5h z?EWR1_5^N>4BgtwcPDaLSxo##qfakpE?d5KVtTx&!g7ht9tN7$|6*B>vf1j}XiH|t zKbff@{dD41rnwHYLvKwME&aVNHG}KXBny>_$Z!8`b`>yxU)`CX5yCMcjy=D!?5dNj z8>d+%%Q10ZmhT%{L&~{UY*C)RE7;V%$YYhUm!;~azt`Ta3Yb!(>U`eDvv8x0o?LGG zq{A!|3wNx$uJYlrYo_OJ*0opP*sq>cB5~CvV~=az?9T8)|qPJRZX;*v@Dm>S6XS^h9iiw?n z(Q?-m500F#$M!2LN4*T=DtoHq=l`=rVpsK^&&kGuCg=Y#1W#c2v1eaz#GNB9ZkHA| zoU)ow@k3GDOKH+_wlDbwZNeEe_6Tt=l!Zd08lczX7*?a*L-VUhG>UHbZa zOs5%}zO1WIy|YLDov6u{Ql|Niw{Kq-)p;Ju<*M#2R$h_gMVwBs``L>;Z)pI^PX5oCxzf0&EJ}i`yb*J=XDC3{6eg_MMm`Ep2;55 zb&k!*K3kP4*k|u+Z(t<9L!^jrZ(NMx6W0Y%zoa+ZKi;(E>ZSh~9QB6^OuEJP*!^2D zJ0k^Q6js5Ufd=ECfi=eC|a)4f)y5zzFMrTd-fkxaZ% zVZXd*Uw)Qf_4QBM*YCWS?oiLQI?KMoOiOXnuH>9@AI+}oce(#mzb|F^IW0x^#rH+* zp7zTOP6o`H^?{wSIwv~hbc9KeNW{!%;>I17nV&BxNu8+bUj5x%O)Gn5kD-`y^7m>t z-Gc$v9K~%RCzyBfSj7k5k_}$E_-e`H+GED<3g;574n*bNV&2UovX84ET)BPwhA;u$ z4gXTp2>dt*42q|r|c(dJe7;)soNl#qtvXJr=JkLXrEy0d8N{wTfgp2NiO;O zIU>Z$=`iE2CXHu{Pj&?eo=;C&Hf1WW%kmN-R$Yl#;cSN{30mief7L8DSd-r`c`zdA TP^y-H7g1$ z%qns;OEor0*S4(4cPmW|j7%%__N*$($S5}`u&B(lEQ%;`4CTs9GV``H%!~>$N)C6| z&M_-3G_pwabM*3v3=H=v^Y%^G&kAtY&I>Rt$_LqIpqpNlnpm95<>+pnS7H=qS(Tq; zVwx6_=T(sx>`|DPlI|bir=9BS5}4$XqwR0zo#X6RX^;^WY?|n8q#crC=vC|=?q^u+ z$Q6-RSmElL9A#c&ndX+Bmg|w>?owWyUYz0*;g+21m1wCQ=0D5$Z{!>3tzG789PXMGY2jOJ=;&DNm+0r2Q|un(85xqz#j}fj?&KHmKi+upg(E9; zDXYk%W&0njI_h=ZAj&B?_FxX59Fx=M%$woek8@|HA3puvPDFdkrrIT3e3rJZTFfuh$C^Yu*3oBP}%uKfM_0%`; z$uLOq^{C3SjP%RTPRR}PHMdBPFf!FIOfEDGO*IZm46sb+3M(*3sWNpgNlwi3%Fl7u z56FrNcds(?N%u8#*0+cZw=}ghPj=6B&I>CC*=3#Wteakxnpm8wV5{I*R~(`g7nP_G z$K_<;9~K(o7vK`)Y8dR26c`#|8I&DtQ5Nb{R+^vh5#ea;R%PN=5$2v86q)E8?3!eh zm2Qxc=9X`1Tv=7(pTcG6on#W2s$ZF(7oKPwl$?{AlocB4n&p+AsP9$~X_RN0<`L;x zUSeF5nqp#EVrrV=S{Yd2=g6h2tE&*4=vx}%SK{ZEot2noR_>kVR+$r&8EKGZP~olb zXJD-D7#il2l@l0I>B^PVWcj!7y_9g?!}bEhn=7t;)pXA*J#GD=*R}oN=41S~4thDd zr(VcDzWvxM@vOTu-WZ=bq-GSl-y_#TWq$wbgR6h(9o@KYYRanA@Cz5xxEc=?DqQKj z^-6ii;^^=rtK$<7**JLl$VC)d=boyiag^=*gg9;9knS4~ z*3U>}Xg5#TI^+E1z?A$6F>VVh?eEKf=(o%9o$PZ?C8S&Z{HxkSFP|S1Ew5bk^v|-R z|0{~iv}3zkR+g`Qx%^q?%i5PwX8x;JJ^FCUfHl+LHfQnsHH)rwX!Jif*}5Tgo^s;h z3486XU9(c$oMe_i|NgUtZNK_TDlNH^a+Pk*6C_NnZ@_K15gv*yoD+oB_P{EA{^?XL&t?PXjKJ$^27$IYxsec9Grh5!kZ?QNa= SU$aZheX~0CP|m$3-6jAt3P~9N literal 0 HcmV?d00001 diff --git a/secrets/hosts/bootstrap/id_ed25519.pub b/secrets/hosts/bootstrap/id_ed25519.pub new file mode 100644 index 0000000..1ebb34d --- /dev/null +++ b/secrets/hosts/bootstrap/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILjwdp2zNGHzsv7ERTbv0SEROUHzoXUcWfCOt7njS3uf nickolaj@iso-test diff --git a/secrets/hosts/desktop/.rekey/5f97a27cf6fa2407a7e04b3273f11cf5-spotify-player.age b/secrets/hosts/desktop/.rekey/5f97a27cf6fa2407a7e04b3273f11cf5-spotify-player.age new file mode 100644 index 0000000000000000000000000000000000000000..dd460ea06ffd75a2e65518aaadf06f4bedfc50fc GIT binary patch literal 637 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCR+Ep!ddFIT9jC<^fi z3wKHmt;jERb2IZX_o&hi3C;}2Hg|H3@=kOM$}aW@$u2OC$ma?(FG$HOboNN|cPccC zG)f9DcMH}o4~a02ibyG`%8d%oHVP>WHgPO4vjExVp=F@tXQ`WBl$uza%9Ru5=M-94 zSd<^`?Bo~d8(CrQ?jB%d>Z$FR>}qD_92}bETAJl+VH%X3=;I!h=lW+6OnCU z92%~j?8uc?R%U5#?BgC-l$~2#RcY*+Y*CQsSEwBlnqFp>lo=S7;_PUdkrid3?eAo6 z5~gqIVUSwpZe(N-XdKL?tE;O};+OATniUXfV38AMZkU@<y6!KK$9+Vv_l5kr;h_iFtvl6)x_p&Q~1eG5#-5ebTH!SuQ*3i^A&#yB*(a-mi{% zGi{;CzpoGY=FNQB{nYPTkI!AxLY32Tf-moyAB(m6Z6iO$Yi`1r3FnV+(mI&owB9MlAc9t>^IT(_Sg_j)Ir!9{lsK|6w%QFlWlV z*lg8Tlgg+0yi#k@6xM%HWU|BI;GN(ndwG6lY~=Xul05%cr|9ccz z>YGITwP!eYWvhkBUqdO!-}6@*OildD_H^?nqo3!}MXm_M%O&k@FBD()Ay-p%$#9|AL(dR>62wqRp@46;cw*Qtncq!YM7JHrK_u};A`aRpBa>vX_Vt{5Rz5w9F~}9 z9u}776XxiZVPceA8IbPdX%d(j8E8??)xpN=cJyd^a{s@U+;w(04qLymvun8FB)h=E z);Ik2o?E->`EQ?l*3$alc%O-0h-UoRiy~Xs`$pWqz*o{KSN&((U1k}_H*){&Bo-`> zxVQE6)?GIi+l4*+aB9MbHr4#Rhr&(nJduk+FepWdm piv-p256 q3LNVw Atsd5qd7RuiYH2sw3kP9Qr73DG/LgEUIS50SPCpWGvJN +XGDLJ6jfwLOykRty8gP0kfzmaQECMoz/e8HKbrD11dY +-> g9.(=-grease }{ D<_x> H/\ eD-H[ +ZKKXcyQoBOkmGg2JiUJXJYoqTTfMu1+ifC4OXUfeNuHTAsHjSBKU723f +--- v6PLnR8THb0wImtuH6+1WjRkwNvEh6abjUla978scYc +k -jPvTl"SwRd +g$v8`؎/\YӘoVq|>а-nHdfIe *.[r/"^$3rwX}Vkb'p>~,k +V|D=|⵾ <)nU'cK c8ՇX)tB3Ži1IiU즓{-PM+GT],S;t3pzθ5 k3CjÖ~nVi ,TkCܲέMF \ No newline at end of file diff --git a/secrets/hosts/test/id_ed25519.pub b/secrets/hosts/test/id_ed25519.pub new file mode 100644 index 0000000..c07d318 --- /dev/null +++ b/secrets/hosts/test/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMb5B2ln/fxAokwwvg5JcRt+6fjtLg06j+00/dbOMFSs test@test diff --git a/secrets/hosts/work/.rekey/7e53c5cd0a761afee1eec87601c0327f-spotify-player.age b/secrets/hosts/work/.rekey/7e53c5cd0a761afee1eec87601c0327f-spotify-player.age new file mode 100644 index 0000000..4be1c26 --- /dev/null +++ b/secrets/hosts/work/.rekey/7e53c5cd0a761afee1eec87601c0327f-spotify-player.age @@ -0,0 +1,7 @@ +age-encryption.org/v1 +-> ssh-ed25519 UQ3p6w RbeHbL5jqsbYa/7h4Hz0DfBnXOX6vdrQxLU60EFxMXA +Crz5EimHRWl9ANhdhaQJ1eRWiecIK+HhD7NY+M1oyDE +-> pD2pC-grease JWohSW 4f,/D; ++dqfefs+UlIG1ZQA6w +--- tacx2ep4qaIGOnUSZQ/fWXU/nKzHMaUiTCLyQrreW4A +ņR_6E;2'5&/Lq-ah4v(Edr7ahA;!;fPԁ- -s_7]m-ZZi PcKϝ<-$ =d+?L(vaf:A3Dt]L>QKc<̪8 q8sT+O 0R&2`QUPUoufFE=R24b)EwP4)GO^h(bv2(C)c4-d?# zNQo#luPTYmPbx^yPP7cL%m>*}kXfc%U}S2hP-yJq7gny|XyBV@svqH!>R)Q+pOsRT zl#&vfmg1r985Zi15)v5^mF(w~o}O5285CB@<(9AQon;YXnUr3V?d+EA=kIQ57~-Q} zlIr4?ryuN^ni-H15o#LZZkibhvdc&}y(l%YI8~v{&cw$c-c2FCsxVCmwqB6uM&(GY~(A~YjEX$&@D$O)0 z(A=lY+$_v3T))i1Nt>%YEkNHitR%EF&)q*bD?L!(#4M}W-Q3bS%)&DxD6rhQ$VJ;I z)gr7U$Fsz#GBT4(S65ddKh?!7IiS)CH^xpd<48XCBa7@Vg{YpE<5;0}Jo;pM6j4%L{+oFE+dS`{hS7o_Wvq zpL)msKjUi^+tP{q;u0Q&%H?TgABpp6sPU1_`q}v5l%>uuYqzgkvbQ~+&LiNFw|ej8 z!a3wTuj~Pm8ian2e_G&!Pn7aFM zu>fwY>AWKSfQ+S(oH@k{l8Y$hCg?lSHzkfuHW)=lmLku gtpGNwb;fgZnci`J