Compare commits

..

5 commits

Author SHA1 Message Date
RingOfStorms (Joshua Bell)
d77db080b9 update juni 2026-01-09 18:45:48 -06:00
RingOfStorms (Joshua Bell)
792a63bebf Add tmpfiles placeholders for secrets and ensure parent dirs 2026-01-09 18:32:37 -06:00
RingOfStorms (Joshua Bell)
adca8e52f4 Refactor systemd paths; add secrets-ready and jwt services 2026-01-09 18:32:25 -06:00
RingOfStorms (Joshua Bell)
7f59cebc12 fix tmux config warn 2026-01-09 17:43:02 -06:00
RingOfStorms (Joshua Bell)
0cdb4ce287 update juni 2026-01-09 17:39:01 -06:00
4 changed files with 308 additions and 162 deletions

View file

@ -30,7 +30,7 @@
}; };
}); });
extraConfig = '' extraConfig = ''
set -g @catppuccin_flavour 'mocha' set -g @catppuccin_flavor 'mocha'
set -g @catppuccin_window_left_separator "" set -g @catppuccin_window_left_separator ""
set -g @catppuccin_window_right_separator " " set -g @catppuccin_window_right_separator " "
set -g @catppuccin_window_middle_separator " " set -g @catppuccin_window_middle_separator " "

View file

@ -488,13 +488,34 @@ in
sec sec
]; ];
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules =
[
"d /run/openbao 0700 root root - -" "d /run/openbao 0700 root root - -"
"f /run/openbao/zitadel.jwt 0400 root root - -" "f /run/openbao/zitadel.jwt 0400 root root - -"
"d /run/secrets 0711 root root - -" "d /run/secrets 0711 root root - -"
]; ]
# Create empty placeholder files for all secret destinations so
# services that reference env files don't fail when offline.
++ (lib.unique (
lib.concatLists (
lib.mapAttrsToList (
_: secret:
let
dir = builtins.dirOf secret.path;
in
# Ensure the parent dir exists if a custom path is used.
[ "d ${dir} 0755 root root - -" ]
) cfg.secrets
)
))
++ (lib.mapAttrsToList (
_: secret:
"f ${secret.path} ${secret.mode} ${secret.owner} ${secret.group} - -"
) cfg.secrets);
systemd.paths = lib.mapAttrs' (
systemd.paths =
(lib.mapAttrs' (
name: secret: name: secret:
lib.nameValuePair "openbao-secret-${name}" { lib.nameValuePair "openbao-secret-${name}" {
description = "Path unit for OpenBao secret ${name}"; description = "Path unit for OpenBao secret ${name}";
@ -507,14 +528,39 @@ in
TriggerLimitBurst = 3; TriggerLimitBurst = 3;
}; };
} }
) cfg.secrets; ) cfg.secrets)
// {
openbao-zitadel-jwt = {
description = "React to Zitadel JWT changes (restart vault-agent)";
wantedBy = [ "multi-user.target" ];
pathConfig = {
PathChanged = cfg.zitadelJwtPath;
Unit = "openbao-jwt-changed.service";
TriggerLimitIntervalSec = 30;
TriggerLimitBurst = 3;
};
};
openbao-secrets-ready = {
description = "Re-check OpenBao secrets readiness";
wantedBy = [ "multi-user.target" ];
pathConfig = {
PathChanged = "/run/secrets";
Unit = "openbao-secrets-ready.service";
TriggerLimitIntervalSec = 30;
TriggerLimitBurst = 3;
};
};
};
systemd.timers.zitadel-mint-jwt = { systemd.timers.zitadel-mint-jwt = {
description = "Refresh Zitadel JWT for OpenBao"; description = "Refresh Zitadel JWT for OpenBao";
wantedBy = [ "timers.target" ]; wantedBy = [ "timers.target" ];
timerConfig = { timerConfig = {
OnBootSec = "1min"; OnBootSec = "30s";
OnUnitActiveSec = "10min"; OnUnitInactiveSec = "10min";
Unit = "zitadel-mint-jwt.service"; Unit = "zitadel-mint-jwt.service";
}; };
}; };
@ -531,6 +577,7 @@ in
unitConfig.ConditionPathExists = secret.path; unitConfig.ConditionPathExists = secret.path;
wants = lib.mkAfter [ "openbao-secret-${secretName}.path" ]; wants = lib.mkAfter [ "openbao-secret-${secretName}.path" ];
after = lib.mkAfter [ "openbao-secret-${secretName}.path" ]; after = lib.mkAfter [ "openbao-secret-${secretName}.path" ];
partOf = lib.mkAfter [ "openbao-secret-changed-${secretName}.service" ];
}; };
} }
) secret.hardDepend ) secret.hardDepend
@ -539,10 +586,57 @@ in
) )
) )
{ {
openbao-secrets-ready = {
description = "OpenBao: all configured secrets present";
wantedBy = [ "multi-user.target" ];
wants = [ "vault-agent.service" ];
after = [ "vault-agent.service" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
User = "root";
Group = "root";
UMask = "0077";
ExecStart = pkgs.writeShellScript "openbao-secrets-ready" ''
#!/usr/bin/env bash
set -euo pipefail
${lib.concatStringsSep "\n" (
lib.mapAttrsToList (name: secret: ''
if [ ! -s ${lib.escapeShellArg secret.path} ]; then
echo "Missing secret: ${secret.path}" >&2
exit 1
fi
'') cfg.secrets
)}
echo "All configured OpenBao secrets present." >&2
'';
};
};
openbao-jwt-changed = {
description = "Restart vault-agent after Zitadel JWT refresh";
wants = [ "vault-agent.service" ];
after = [ "vault-agent.service" ];
serviceConfig = {
Type = "oneshot";
User = "root";
Group = "root";
UMask = "0077";
ExecStart = pkgs.writeShellScript "openbao-jwt-changed" ''
#!/usr/bin/env bash
set -euo pipefail
systemctl try-restart --no-block vault-agent.service || true
'';
};
};
zitadel-mint-jwt = { zitadel-mint-jwt = {
description = "Mint Zitadel access token (JWT) for OpenBao"; description = "Mint Zitadel access token (JWT) for OpenBao";
after = [ after = [
"network-online.target" "network-online.target"
"nss-lookup.target" "nss-lookup.target"
@ -564,8 +658,11 @@ in
RestartSec = "30s"; RestartSec = "30s";
TimeoutStartSec = "2min"; TimeoutStartSec = "2min";
UMask = "0077"; UMask = "0077";
StartLimitIntervalSec = 0;
ExecStart = pkgs.writeShellScript "zitadel-mint-jwt-service" '' ExecStart = pkgs.writeShellScript "zitadel-mint-jwt-service" ''
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
@ -654,8 +751,10 @@ in
vault-agent = { vault-agent = {
description = "OpenBao agent for rendering secrets"; description = "OpenBao agent for rendering secrets";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ after = [
"network-online.target" "network-online.target"
"zitadel-mint-jwt.service"
]; ];
wants = [ wants = [
"network-online.target" "network-online.target"
@ -666,13 +765,16 @@ in
Type = "simple"; Type = "simple";
User = "root"; User = "root";
Group = "root"; Group = "root";
Restart = "on-failure"; Restart = "always";
RestartSec = "10s"; RestartSec = "10s";
TimeoutStartSec = "30s"; TimeoutStartSec = "30s";
UMask = "0077"; UMask = "0077";
StartLimitIntervalSec = 0;
ExecStart = "${pkgs.openbao}/bin/bao agent -log-level=${lib.escapeShellArg cfg.vaultAgentLogLevel} -config=${mkAgentConfig}"; ExecStart = "${pkgs.openbao}/bin/bao agent -log-level=${lib.escapeShellArg cfg.vaultAgentLogLevel} -config=${mkAgentConfig}";
}; };
}; };
} }
(lib.mapAttrs' ( (lib.mapAttrs' (
@ -713,6 +815,9 @@ in
systemctl start --no-block ${lib.escapeShellArg (svc + ".service")} || true systemctl start --no-block ${lib.escapeShellArg (svc + ".service")} || true
'') secret.hardDepend '') secret.hardDepend
)} )}
# Mark overall readiness when all secrets exist.
systemctl try-restart --no-block openbao-secrets-ready.service || true
''; '';
}; };
} }

169
hosts/juni/flake.lock generated
View file

@ -6,11 +6,11 @@
}, },
"locked": { "locked": {
"dir": "flakes/beszel", "dir": "flakes/beszel",
"lastModified": 1767760069, "lastModified": 1768000280,
"narHash": "sha256-wNt+AACETzVAEXUd0pYVLjRS2NSP+uaFdo0Rnvaz3Cc=", "narHash": "sha256-JegPSldfsBcANqnV53mEAQOx/Fv22hUd0G2VTZGUR8Y=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "ee6fa6cd9b7507d04ef232e794bf0e82f60d50e6", "rev": "a4e2cc00d86d2f3401918cfdf9f0643939871a42",
"revCount": 1094, "revCount": 1115,
"type": "git", "type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles" "url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
}, },
@ -38,28 +38,40 @@
}, },
"common": { "common": {
"locked": { "locked": {
"path": "../../flakes/common", "dir": "flakes/common",
"type": "path" "lastModified": 1768000280,
"narHash": "sha256-JegPSldfsBcANqnV53mEAQOx/Fv22hUd0G2VTZGUR8Y=",
"ref": "refs/heads/master",
"rev": "a4e2cc00d86d2f3401918cfdf9f0643939871a42",
"revCount": 1115,
"type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
}, },
"original": { "original": {
"path": "../../flakes/common", "dir": "flakes/common",
"type": "path" "type": "git",
}, "url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
"parent": [] }
}, },
"de_plasma": { "de_plasma": {
"inputs": { "inputs": {
"plasma-manager": "plasma-manager" "plasma-manager": "plasma-manager"
}, },
"locked": { "locked": {
"path": "../../flakes/de_plasma", "dir": "flakes/de_plasma",
"type": "path" "lastModified": 1768000280,
"narHash": "sha256-JegPSldfsBcANqnV53mEAQOx/Fv22hUd0G2VTZGUR8Y=",
"ref": "refs/heads/master",
"rev": "a4e2cc00d86d2f3401918cfdf9f0643939871a42",
"revCount": 1115,
"type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
}, },
"original": { "original": {
"path": "../../flakes/de_plasma", "dir": "flakes/de_plasma",
"type": "path" "type": "git",
}, "url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
"parent": [] }
}, },
"flatpaks": { "flatpaks": {
"inputs": { "inputs": {
@ -67,11 +79,11 @@
}, },
"locked": { "locked": {
"dir": "flakes/flatpaks", "dir": "flakes/flatpaks",
"lastModified": 1767760069, "lastModified": 1768000280,
"narHash": "sha256-wNt+AACETzVAEXUd0pYVLjRS2NSP+uaFdo0Rnvaz3Cc=", "narHash": "sha256-JegPSldfsBcANqnV53mEAQOx/Fv22hUd0G2VTZGUR8Y=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "ee6fa6cd9b7507d04ef232e794bf0e82f60d50e6", "rev": "a4e2cc00d86d2f3401918cfdf9f0643939871a42",
"revCount": 1094, "revCount": 1115,
"type": "git", "type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles" "url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
}, },
@ -108,11 +120,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1767619900, "lastModified": 1767910483,
"narHash": "sha256-KpoCBPvwHz3gAQtIUkohE2InRBFK3r0/FM6z5SPWfvM=", "narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=",
"owner": "rycee", "owner": "rycee",
"repo": "home-manager", "repo": "home-manager",
"rev": "6bd04da47cfb48dfd15eabf08364b78ad894f5b2", "rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -122,13 +134,38 @@
"type": "github" "type": "github"
} }
}, },
"impermanence": { "home-manager_3": {
"inputs": {
"nixpkgs": [
"impermanence",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1737831083, "lastModified": 1747978958,
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=", "narHash": "sha256-pQQnbxWpY3IiZqgelXHIe/OAE/Yv4NSQq7fch7M6nXQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "7419250703fd5eb50e99bdfb07a86671939103ea",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"impermanence": {
"inputs": {
"home-manager": "home-manager_3",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1767822991,
"narHash": "sha256-iyrn9AcPZCoyxX4OT8eMkBsjG7SRUQXXS/V1JzxS7rA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "impermanence", "repo": "impermanence",
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170", "rev": "82e5bc4508cab9e8d5a136626276eb5bbce5e9c5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -187,11 +224,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1767640445, "lastModified": 1767892417,
"narHash": "sha256-UWYqmD7JFBEDBHWYcqE6s6c77pWdcU/i+bwD6XxMb8A=", "narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9f0c42f8bc7151b8e7e5840fb3bd454ad850d8c5", "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -203,11 +240,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1767325753, "lastModified": 1767799921,
"narHash": "sha256-yA/CuWyqm+AQo2ivGy6PlYrjZBQm7jfbe461+4HF2fo=", "narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "64049ca74d63e971b627b5f3178d95642e61cedd", "rev": "d351d0653aeb7877273920cd3e823994e7579b0b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -219,11 +256,27 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1767634882, "lastModified": 1748026106,
"narHash": "sha256-2GffSfQxe3sedHzK+sTKlYo/NTIAGzbFCIsNMUPAAnk=", "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3c9db02515ef1d9b6b709fc60ba9a540957f661c", "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1767799921,
"narHash": "sha256-r4GVX+FToWVE2My8VVZH4V0pTIpnu2ZE8/Z4uxGEMBE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d351d0653aeb7877273920cd3e823994e7579b0b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -233,7 +286,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1767364772, "lastModified": 1767364772,
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=", "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
@ -249,7 +302,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1766309749, "lastModified": 1766309749,
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=",
@ -1131,34 +1184,14 @@
}, },
"opencode": { "opencode": {
"inputs": { "inputs": {
"opencode": "opencode_2" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"dir": "flakes/opencode", "lastModified": 1767994684,
"lastModified": 1767760069, "narHash": "sha256-UIijTI9ndnvhRC4tJDiSc19iMxeZZbDjkYTnfCbJpV8=",
"narHash": "sha256-wNt+AACETzVAEXUd0pYVLjRS2NSP+uaFdo0Rnvaz3Cc=",
"ref": "refs/heads/master",
"rev": "ee6fa6cd9b7507d04ef232e794bf0e82f60d50e6",
"revCount": 1094,
"type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
},
"original": {
"dir": "flakes/opencode",
"type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/dotfiles"
}
},
"opencode_2": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1767719914,
"narHash": "sha256-xAQhyRB/tDIH7nkWdJVYCP6xFFfHoOP29RF8T6bmYDI=",
"owner": "sst", "owner": "sst",
"repo": "opencode", "repo": "opencode",
"rev": "1016a52cf1c28656ddd5c66689cf97b6d028c2f6", "rev": "563b4c33f2bace782403de88e60de4f9167a3c93",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1195,7 +1228,7 @@
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"impermanence": "impermanence", "impermanence": "impermanence",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"opencode": "opencode", "opencode": "opencode",
"ros_neovim": "ros_neovim", "ros_neovim": "ros_neovim",
@ -1204,7 +1237,7 @@
}, },
"ros_neovim": { "ros_neovim": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_6",
"nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim", "nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim",
"nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim", "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim",
"nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring", "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring",
@ -1262,11 +1295,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1767195473, "lastModified": 1767816828,
"narHash": "sha256-xL3DZSWiNSvW58LsJwFIpQ9i3Vs5uaYUjbL60rpFxPk=", "narHash": "sha256-5V1nbL52dBUNs8VzxB7MxfVtNYmT71LpPwb2ccmSvOE=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "88e86b5a7d40697ade905f534dcd5372a67b8102", "rev": "3517caecde71f96305a3eec2880daeed18881d5b",
"revCount": 328, "revCount": 329,
"type": "git", "type": "git",
"url": "https://git.joshuabell.xyz/ringofstorms/nvim" "url": "https://git.joshuabell.xyz/ringofstorms/nvim"
}, },

View file

@ -9,21 +9,18 @@
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
# Use relative to get current version for testin # Use relative to get current version for testin
common.url = "path:../../flakes/common"; # common.url = "path:../../flakes/common";
# common.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/common"; common.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/common";
# secrets-bao.url = "path:../../flakes/secrets-bao"; # secrets-bao.url = "path:../../flakes/secrets-bao";
# NOTE: using an absolute path so this works before you commit/push.
# After you add `flakes/secrets-bao` to the repo, switch to a git URL like your other flakes.
secrets-bao.url = "path:../../flakes/secrets-bao"; secrets-bao.url = "path:../../flakes/secrets-bao";
# flatpaks.url = "path:../../flakes/flatpaks"; # flatpaks.url = "path:../../flakes/flatpaks";
flatpaks.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/flatpaks"; flatpaks.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/flatpaks";
# beszel.url = "path:../../flakes/beszel"; # beszel.url = "path:../../flakes/beszel";
beszel.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/beszel"; beszel.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/beszel";
de_plasma.url = "path:../../flakes/de_plasma"; # de_plasma.url = "path:../../flakes/de_plasma";
# de_plasma.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/de_plasma"; de_plasma.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/de_plasma";
# opencode.url = "path:../../flakes/opencode";
opencode.url = "git+https://git.joshuabell.xyz/ringofstorms/dotfiles?dir=flakes/opencode";
opencode.url = "github:sst/opencode";
ros_neovim.url = "git+https://git.joshuabell.xyz/ringofstorms/nvim"; ros_neovim.url = "git+https://git.joshuabell.xyz/ringofstorms/nvim";
}; };
@ -73,7 +70,6 @@
({ ({
ringofstorms-nvim.includeAllRuntimeDependencies = true; ringofstorms-nvim.includeAllRuntimeDependencies = true;
}) })
inputs.opencode.nixosModules.default
inputs.flatpaks.nixosModules.default inputs.flatpaks.nixosModules.default
@ -87,6 +83,18 @@
inputs.common.nixosModules.tty_caps_esc inputs.common.nixosModules.tty_caps_esc
inputs.common.nixosModules.zsh inputs.common.nixosModules.zsh
inputs.common.nixosModules.tailnet inputs.common.nixosModules.tailnet
(
{ pkgs, ... }:
{
environment.systemPackages = [
inputs.opencode.packages.${pkgs.system}.default
];
environment.shellAliases = {
"oc" = "all_proxy='' http_proxy='' https_proxy='' opencode";
"occ" = "oc -c";
};
}
)
( (
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ {