mirror of https://git.jolheiser.com/dotnix.git
parent
06ef7114c1
commit
4fa16c9ada
|
@ -1,6 +0,0 @@
|
|||
machines/dragonwell/dex.nix:
|
||||
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
||||
machines/dragonwell/tandoor.nix:
|
||||
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
||||
machines/dragonwell/vikunja.nix:
|
||||
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
|
@ -1,4 +0,0 @@
|
|||
# Age
|
||||
machines/dragonwell/dex.nix filter=git-age diff=git-age
|
||||
machines/dragonwell/vikunja.nix filter=git-age diff=git-age
|
||||
machines/dragonwell/tandoor.nix filter=git-age diff=git-age
|
|
@ -33,12 +33,9 @@
|
|||
ripgrep
|
||||
usql
|
||||
|
||||
jolheiser.gist
|
||||
jolheiser.git-age
|
||||
tclip
|
||||
templ
|
||||
jolheiser.helix
|
||||
jolheiser.tmpl
|
||||
jolheiser.gomodinit
|
||||
jolheiser.cfg
|
||||
jolheiser.spectre
|
||||
|
@ -49,11 +46,5 @@
|
|||
stateVersion = "22.11";
|
||||
};
|
||||
|
||||
xdg.configFile."gist/config.yaml".text = ''
|
||||
username: jolheiser
|
||||
password-file: ${config.age.secrets.gist-pw.path}
|
||||
domain: gist.jojodev.com
|
||||
'';
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
use ${nu_scripts}/share/nu_scripts/custom-completions/glow/glow-completions.nu *
|
||||
use ${nu_scripts}/share/nu_scripts/custom-completions/just/just-completions.nu *
|
||||
use ${nu_scripts}/share/nu_scripts/custom-completions/nix/nix-completions.nu *
|
||||
|
||||
use ${jolheiser.tmpl}/share/tmpl-completions.nu *
|
||||
'';
|
||||
extraEnv = ''
|
||||
$env.GOPATH = "${config.xdg.dataHome}/go"
|
||||
|
|
440
flake.lock
440
flake.lock
|
@ -1,25 +1,5 @@
|
|||
{
|
||||
"nodes": {
|
||||
"actual": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733551027,
|
||||
"narHash": "sha256-nlZWAq4E+cNywCuxpnYcyky4fd+8bVzJHrS2e8QTtVs=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "7f041ffa7f204deb0fc2e36908b382804f2e108d",
|
||||
"revCount": 18,
|
||||
"type": "git",
|
||||
"url": "https://git.xeno.science/xenofem/actual-nix.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.xeno.science/xenofem/actual-nix.git"
|
||||
}
|
||||
},
|
||||
"agenix": {
|
||||
"inputs": {
|
||||
"darwin": [],
|
||||
|
@ -43,49 +23,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"bennet": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1720757073,
|
||||
"narHash": "sha256-URQMDzLPs5kckDybkMqrKZN2aqt0GvAt9V5NT4kpMW8=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "bd7287aa0d13d5af400f659963655c004789715f",
|
||||
"revCount": 4,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/bennet.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/bennet.git"
|
||||
}
|
||||
},
|
||||
"blog": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"templ": [
|
||||
"templ"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1728680363,
|
||||
"narHash": "sha256-0aJJUY0lKcDnkqLBESOFju8cgIYYrt8jvMwyFTii2Do=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "03a7f37a42affd2689a72340b8d86731bfd3d28c",
|
||||
"revCount": 26,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/blog.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/blog.git"
|
||||
}
|
||||
},
|
||||
"cfg": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -106,26 +43,6 @@
|
|||
"url": "https://git.jolheiser.com/cfg.git"
|
||||
}
|
||||
},
|
||||
"cfg-playground": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729196682,
|
||||
"narHash": "sha256-hLbpRWxw12/mqapicSSq1wxvNFfEKwEiXhzykpXWUDI=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "63c7a6886570f332ebb187e5a5580302603b4c4e",
|
||||
"revCount": 6,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/cfg-playground.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/cfg-playground.git"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
|
@ -216,24 +133,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"foundry": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726638033,
|
||||
"narHash": "sha256-+hcgXKG5t/9wibv+8T9WASWItBAWb0tsmcZXH+VIYdw=",
|
||||
"owner": "reckenrode",
|
||||
"repo": "nix-foundryvtt",
|
||||
"rev": "bf07f9dd916a97a091f8ab83358c2f295bea9ec9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "reckenrode",
|
||||
"repo": "nix-foundryvtt",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ghostty": {
|
||||
"inputs": {
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
|
@ -254,69 +153,6 @@
|
|||
"url": "ssh://git@github.com/ghostty-org/ghostty"
|
||||
}
|
||||
},
|
||||
"gist": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1702606669,
|
||||
"narHash": "sha256-98XV0l+3b4sFhxdepNoanqDzhgnEen5ZcrGtqoRp4cA=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "f393c786b0ad826866d7e30d1abbd3bea319cb34",
|
||||
"revCount": 3,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/gist.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/gist.git"
|
||||
}
|
||||
},
|
||||
"git-age": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1699932777,
|
||||
"narHash": "sha256-2OF5y1geNjHd+As+FwFEYlHxQoQ+LHxizlhSx9u/4dA=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "72352f984f8c4b2291bcb2c08b7b6dc718619a38",
|
||||
"revCount": 9,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/git-age.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/git-age.git"
|
||||
}
|
||||
},
|
||||
"git-pr": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1724120640,
|
||||
"narHash": "sha256-LLWEHAraOLKFYZ2zbR3O+AhC2PCUNsXP1xcGoDj80xs=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "6a3bca9ad87b454427940c82f3d111f2eb2c256e",
|
||||
"revCount": 10,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/git-pr-nix.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/git-pr-nix.git"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -338,29 +174,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"golink": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733941744,
|
||||
"narHash": "sha256-cIml0ewF5j2cQySLHkMmV1rl7cVH8wuoPFeFDCARi1A=",
|
||||
"owner": "tailscale",
|
||||
"repo": "golink",
|
||||
"rev": "d55b2a3302777d7f9943863644d4c84ecacb31b7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tailscale",
|
||||
"repo": "golink",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gomod2nix": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
|
@ -447,7 +260,7 @@
|
|||
},
|
||||
"jolheiser": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730336659,
|
||||
|
@ -465,7 +278,7 @@
|
|||
},
|
||||
"jolheiser_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730336541,
|
||||
|
@ -499,16 +312,16 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1726447378,
|
||||
"narHash": "sha256-2yV8nmYE1p9lfmLHhOCbYwQC/W8WYfGQABoGzJOb1JQ=",
|
||||
"lastModified": 1729880355,
|
||||
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "086b448a5d54fd117f4dc2dee55c9f0ff461bdc1",
|
||||
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -563,11 +376,11 @@
|
|||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1729880355,
|
||||
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
|
||||
"lastModified": 1734119587,
|
||||
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
|
||||
"rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -594,22 +407,6 @@
|
|||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1734119587,
|
||||
"narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1728888510,
|
||||
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
|
||||
|
@ -627,7 +424,7 @@
|
|||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
|
@ -644,59 +441,22 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1697473034,
|
||||
"narHash": "sha256-hIee7tDD9B1LRNUE7Cy11M1yrbbHHa6pnUZes3CGKxg=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "94593c9097917604f006a4dcd5e7b10a1b42beb1",
|
||||
"revCount": 6,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/resume.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/resume.git"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"actual": "actual",
|
||||
"agenix": "agenix",
|
||||
"bennet": "bennet",
|
||||
"blog": "blog",
|
||||
"cfg": "cfg",
|
||||
"cfg-playground": "cfg-playground",
|
||||
"flake-utils": "flake-utils",
|
||||
"foundry": "foundry",
|
||||
"ghostty": "ghostty",
|
||||
"gist": "gist",
|
||||
"git-age": "git-age",
|
||||
"git-pr": "git-pr",
|
||||
"golink": "golink",
|
||||
"gomodinit": "gomodinit",
|
||||
"helix": "helix",
|
||||
"home-manager": "home-manager",
|
||||
"jolheiser": "jolheiser_2",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nur": "nur",
|
||||
"resume": "resume",
|
||||
"spectre": "spectre",
|
||||
"tailproxy": "tailproxy",
|
||||
"tclip": "tclip",
|
||||
"templ": "templ",
|
||||
"tmpl": "tmpl",
|
||||
"ugit": "ugit",
|
||||
"website": "website"
|
||||
"templ": "templ"
|
||||
}
|
||||
},
|
||||
"spectre": {
|
||||
|
@ -779,113 +539,9 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tailproxy": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729968274,
|
||||
"narHash": "sha256-YmGgnwar4mGwK3+TRO3W7wvFHcIZ21JEm95PRroJpzQ=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "a7b8073ad6a2eaf931415b41156e0bba9e51fc76",
|
||||
"revCount": 9,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tailproxy.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tailproxy.git"
|
||||
}
|
||||
},
|
||||
"tailwind-ctp": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"ugit",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1695841587,
|
||||
"narHash": "sha256-fgiZd5AV+hi8Ne0bJ8SyAx5nppseW4aXJQEIDSr0VNA=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "afca060674b20e0ccecde2d6fe88c887790219a5",
|
||||
"revCount": 1,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tailwind-ctp"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tailwind-ctp"
|
||||
}
|
||||
},
|
||||
"tailwind-ctp-lsp": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"ugit",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1699401590,
|
||||
"narHash": "sha256-nx8ExuBRUux9eXSUgkWp1LJMvA3dmA76+2xggZjHTU0=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "b321333ad08bf21db242f246b10ad4a50b8fc8a0",
|
||||
"revCount": 848,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tailwind-ctp-intellisense"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tailwind-ctp-intellisense"
|
||||
}
|
||||
},
|
||||
"tailwind-ctp-lsp_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"website",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1699401590,
|
||||
"narHash": "sha256-nx8ExuBRUux9eXSUgkWp1LJMvA3dmA76+2xggZjHTU0=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "b321333ad08bf21db242f246b10ad4a50b8fc8a0",
|
||||
"revCount": 848,
|
||||
"type": "git",
|
||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp-intellisense"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp-intellisense"
|
||||
}
|
||||
},
|
||||
"tailwind-ctp_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"website",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1695841587,
|
||||
"narHash": "sha256-fgiZd5AV+hi8Ne0bJ8SyAx5nppseW4aXJQEIDSr0VNA=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "afca060674b20e0ccecde2d6fe88c887790219a5",
|
||||
"revCount": 1,
|
||||
"type": "git",
|
||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp"
|
||||
}
|
||||
},
|
||||
"tclip": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"utils": [
|
||||
"flake-utils"
|
||||
]
|
||||
|
@ -927,26 +583,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tmpl": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1707601935,
|
||||
"narHash": "sha256-SX1AT7onZVSEgkE0Egl1bDnHffWROCo8jrRMcDS6ELQ=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "c828078874c9897a8aa10b3f8d5602684f23f0f9",
|
||||
"revCount": 36,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tmpl.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/tmpl.git"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -968,56 +604,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ugit": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"tailwind-ctp": "tailwind-ctp",
|
||||
"tailwind-ctp-lsp": "tailwind-ctp-lsp"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729739080,
|
||||
"narHash": "sha256-Ps6Wo2oSK/yRd/hfxUqh+PLfXw5AcQtC2nRZ3vnBJYs=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "0f4b6ec93640a2a2aa265434e7af69360b713a04",
|
||||
"revCount": 66,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/ugit.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/ugit.git"
|
||||
}
|
||||
},
|
||||
"website": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"tailwind-ctp": "tailwind-ctp_2",
|
||||
"tailwind-ctp-lsp": "tailwind-ctp-lsp_2",
|
||||
"templ": [
|
||||
"templ"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729007532,
|
||||
"narHash": "sha256-WTCnUYILllGWI6MuG/a3Fp5HVASqPdpPbVNr7k49ZMQ=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "82a84f0c62b0a1dddf9e7e7e464680a002439dcb",
|
||||
"revCount": 18,
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/jolheiser.com.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://git.jolheiser.com/jolheiser.com.git"
|
||||
}
|
||||
},
|
||||
"xc": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_4",
|
||||
|
|
141
flake.nix
141
flake.nix
|
@ -24,47 +24,6 @@
|
|||
url = "git+https://git.jolheiser.com/helix.drv.git";
|
||||
inputs.nixpkgs.follows = "jolheiser/nixpkgs";
|
||||
};
|
||||
website = {
|
||||
url = "git+https://git.jolheiser.com/jolheiser.com.git";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
flake-utils.follows = "flake-utils";
|
||||
templ.follows = "templ";
|
||||
};
|
||||
};
|
||||
resume = {
|
||||
url = "git+https://git.jolheiser.com/resume.git";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
flake-utils.follows = "flake-utils";
|
||||
};
|
||||
};
|
||||
blog = {
|
||||
url = "git+https://git.jolheiser.com/blog.git";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
templ.follows = "templ";
|
||||
};
|
||||
};
|
||||
bennet = {
|
||||
url = "git+https://git.jolheiser.com/bennet.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
git-age = {
|
||||
url = "git+https://git.jolheiser.com/git-age.git";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
flake-utils.follows = "flake-utils";
|
||||
};
|
||||
};
|
||||
gist = {
|
||||
url = "git+https://git.jolheiser.com/gist.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
tmpl = {
|
||||
url = "git+https://git.jolheiser.com/tmpl.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
gomodinit = {
|
||||
url = "git+https://git.jolheiser.com/gomodinit.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -73,51 +32,21 @@
|
|||
url = "git+https://git.jolheiser.com/cfg.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
cfg-playground = {
|
||||
url = "git+https://git.jolheiser.com/cfg-playground.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
ugit = {
|
||||
url = "git+https://git.jolheiser.com/ugit.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
git-pr = {
|
||||
url = "git+https://git.jolheiser.com/git-pr-nix.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
spectre = {
|
||||
url = "git+https://git.jolheiser.com/go-spectre.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# Other flakes
|
||||
golink = {
|
||||
url = "github:tailscale/golink";
|
||||
inputs = {
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
flake-utils.follows = "flake-utils";
|
||||
};
|
||||
};
|
||||
tclip = {
|
||||
url = "github:tailscale-dev/tclip";
|
||||
inputs = {
|
||||
#nixpkgs.follows = "nixpkgs";
|
||||
utils.follows = "flake-utils";
|
||||
};
|
||||
};
|
||||
templ = {
|
||||
url = "github:a-h/templ";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
actual = {
|
||||
url = "git+https://git.xeno.science/xenofem/actual-nix.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
foundry.url = "github:reckenrode/nix-foundryvtt";
|
||||
tailproxy = {
|
||||
url = "git+https://git.jolheiser.com/tailproxy.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
ghostty.url = "git+ssh://git@github.com/ghostty-org/ghostty";
|
||||
tclip = {
|
||||
url = "github:tailscale-dev/tclip";
|
||||
inputs = {
|
||||
utils.follows = "flake-utils";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
outputs =
|
||||
|
@ -137,22 +66,14 @@
|
|||
};
|
||||
jolheiser = {
|
||||
helix = inputs.helix.packages.${prev.system}.default;
|
||||
website = inputs.website.packages.${prev.system}.default;
|
||||
resume = inputs.resume.packages.${prev.system}.default;
|
||||
git-age = inputs.git-age.packages.${prev.system}.default;
|
||||
gist = inputs.gist.packages.${prev.system}.default;
|
||||
tmpl = inputs.tmpl.packages.${prev.system}.default;
|
||||
gomodinit = inputs.gomodinit.packages.${prev.system}.default;
|
||||
cfg = inputs.cfg.packages.${prev.system}.default;
|
||||
blog = inputs.blog.packages.${prev.system}.default;
|
||||
bennet = inputs.bennet.packages.${prev.system}.default;
|
||||
spectre = inputs.spectre.packages.${prev.system}.default;
|
||||
};
|
||||
tclip = inputs.tclip.packages.${prev.system}.tclip;
|
||||
templ = inputs.templ.packages.${prev.system}.templ;
|
||||
ghostty = inputs.ghostty.packages.${prev.system}.ghostty;
|
||||
})
|
||||
inputs.golink.overlay
|
||||
];
|
||||
pkgs = import inputs.nixpkgs {
|
||||
inherit overlays system;
|
||||
|
@ -163,8 +84,6 @@
|
|||
{
|
||||
config = {
|
||||
nixpkgs.overlays = overlays;
|
||||
# TODO Remove when apps are updated
|
||||
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ];
|
||||
};
|
||||
};
|
||||
username = "jolheiser";
|
||||
|
@ -181,21 +100,20 @@
|
|||
secretsMountPoint = "/home/${username}/.agenix/agenix.d";
|
||||
identityPaths = [ "/home/${username}/.ssh/nix" ];
|
||||
secrets = {
|
||||
ssh-config.file = ./secrets/shared/ssh-config.age;
|
||||
ssh-config.file = ./secrets/ssh-config.age;
|
||||
spotify = {
|
||||
file = ./secrets/shared/spotify.age;
|
||||
file = ./secrets/spotify.age;
|
||||
path = "/home/${username}/.cache/spotify-player/credentials.json";
|
||||
};
|
||||
irc-pw.file = ./secrets/shared/irc-pw.age;
|
||||
gist-pw.file = ./secrets/shared/gist-pw.age;
|
||||
spectre-pw.file = ./secrets/shared/spectre-pw.age;
|
||||
git-send-email.file = ./secrets/shared/git-send-email.age;
|
||||
irc-pw.file = ./secrets/irc-pw.age;
|
||||
spectre-pw.file = ./secrets/spectre-pw.age;
|
||||
git-send-email.file = ./secrets/git-send-email.age;
|
||||
cachix = {
|
||||
file = ./secrets/shared/cachix.age;
|
||||
file = ./secrets/cachix.age;
|
||||
path = "/home/${username}/.config/cachix/cachix.dhall";
|
||||
};
|
||||
llm = {
|
||||
file = ./secrets/shared/llm.age;
|
||||
file = ./secrets/llm.age;
|
||||
path = "/home/${username}/.config/io.datasette.llm/keys.json";
|
||||
};
|
||||
};
|
||||
|
@ -229,38 +147,6 @@
|
|||
];
|
||||
};
|
||||
};
|
||||
colmena = {
|
||||
meta = {
|
||||
nixpkgs = import nixpkgs { inherit overlays system; };
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
};
|
||||
dragonwell =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.agenix.nixosModules.default
|
||||
inputs.golink.nixosModules.default
|
||||
inputs.ugit.nixosModules.default
|
||||
inputs.git-pr.nixosModules.default
|
||||
inputs.actual.nixosModules.default
|
||||
inputs.tailproxy.nixosModules.default
|
||||
inputs.foundry.nixosModules.foundryvtt
|
||||
inputs.cfg-playground.nixosModules.default
|
||||
./modules/tclip
|
||||
./modules/miniserve
|
||||
./machines/dragonwell
|
||||
];
|
||||
services.tclip.package = inputs.tclip.packages.${pkgs.system}.tclipd;
|
||||
};
|
||||
gunpowder = {
|
||||
imports = [
|
||||
inputs.tailproxy.nixosModules.default
|
||||
./machines/gunpowder
|
||||
];
|
||||
};
|
||||
};
|
||||
nixConfig = {
|
||||
extra-substitutors = [ "https://jolheiser.cachix.org" ];
|
||||
extra-trusted-public-keys = [
|
||||
|
@ -270,7 +156,6 @@
|
|||
devShells.${system}.default = pkgs.mkShell {
|
||||
nativeBuildInputs = [
|
||||
agenix.packages.${system}.agenix
|
||||
pkgs.colmena
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
5
justfile
5
justfile
|
@ -20,11 +20,6 @@ hm:
|
|||
boot *args:
|
||||
@just rebuild boot {{args}}
|
||||
|
||||
# Run colmena for remote deploy
|
||||
colmena node:
|
||||
@git add .
|
||||
@nix run nixpkgs#colmena -- apply --on {{node}}
|
||||
|
||||
# Update the flake
|
||||
update-flake:
|
||||
@nix flake update
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
services = {
|
||||
actual = {
|
||||
enable = true;
|
||||
hostname = "127.0.0.1";
|
||||
port = 5006;
|
||||
};
|
||||
tailproxy.actualbudget = {
|
||||
enable = true;
|
||||
hostname = "actualbudget";
|
||||
port = 5006;
|
||||
authKey = "tskey-auth-kC3B2nznCk11CNTRL-G5QvPvrNWrcHcbQxh2XCrcCz3qe2jUrsh"; # One-time key
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
modules = import ./go.nix;
|
||||
in
|
||||
{
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
virtualHosts = {
|
||||
"jolheiser.com" = {
|
||||
extraConfig = ''
|
||||
handle_path /.well-known/webfinger {
|
||||
header Content-Type application/jrd+json
|
||||
respond ${
|
||||
builtins.toJSON {
|
||||
subject = "acct:john@jolheiser.com";
|
||||
links = [
|
||||
{
|
||||
rel = "http://openid.net/specs/connect/1.0/issuer";
|
||||
href = "https://auth.jolheiser.com";
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
handle_path /bennet* {
|
||||
root * ${pkgs.jolheiser.bennet}
|
||||
file_server
|
||||
}
|
||||
handle /resume* {
|
||||
root * ${pkgs.jolheiser.resume}
|
||||
rewrite /resume /resume.pdf
|
||||
file_server
|
||||
}
|
||||
handle {
|
||||
root * ${pkgs.jolheiser.website}
|
||||
file_server
|
||||
}
|
||||
'';
|
||||
serverAliases = [ "www.jolheiser.com" ];
|
||||
};
|
||||
"blog.jolheiser.com" = {
|
||||
extraConfig = ''
|
||||
root * ${pkgs.jolheiser.blog}
|
||||
file_server
|
||||
'';
|
||||
};
|
||||
"go.jolheiser.com" = {
|
||||
extraConfig = ''
|
||||
header Content-Type text/html
|
||||
${modules}
|
||||
respond /* `<html><head>
|
||||
<meta name="go-import" content="go.jolheiser.com{path} git https://git.jolheiser.com{path}.git">
|
||||
<meta http-equiv="refresh" content="3; url=https://pkg.go.dev/go.jolheiser.com{path}" />
|
||||
</head><body>
|
||||
Redirecting to <a href="https://pkg.go.dev/go.jolheiser.com{path}">https://pkg.go.dev/go.jolheiser.com{path}</a>
|
||||
</body></html>`
|
||||
'';
|
||||
};
|
||||
"git.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:8449
|
||||
'';
|
||||
"pr.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:7449
|
||||
'';
|
||||
"social.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:4686
|
||||
'';
|
||||
"auth.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:2884
|
||||
'';
|
||||
"todo.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:8636
|
||||
'';
|
||||
"recipes.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:3663
|
||||
'';
|
||||
"irc.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:7658
|
||||
'';
|
||||
"dnd.jolheiser.com".extraConfig = ''
|
||||
reverse_proxy localhost:30000
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
services.cfg-playground = {
|
||||
enable = true;
|
||||
verbose = true;
|
||||
auth-key = "tskey-auth-ksTZtpeU1i11CNTRL-HmmWuAFifG3xxy8UDr1yG3UdjiYJ3mtGe"; # One-time key
|
||||
};
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
let
|
||||
username = "jolheiser";
|
||||
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL+uhnfFLhlyfGGsksSxh5IIY6gnIMryeQ2EiM979kZa";
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
# ./actual.nix
|
||||
./caddy.nix
|
||||
./cfg.nix
|
||||
./dex.nix
|
||||
./foundry.nix
|
||||
./git-pr.nix
|
||||
./golink.nix
|
||||
./gotosocial.nix
|
||||
./miniserve.nix
|
||||
./pubserve.nix
|
||||
./restic.nix
|
||||
./soju.nix
|
||||
./tandoor.nix
|
||||
./tclip.nix
|
||||
./ugit.nix
|
||||
./vikunja.nix
|
||||
./hardware.nix
|
||||
];
|
||||
|
||||
boot.tmp.cleanOnBoot = true;
|
||||
zramSwap.enable = true;
|
||||
|
||||
networking = {
|
||||
hostName = "dragonwell";
|
||||
|
||||
firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
6697
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
openssh.enable = true;
|
||||
tailscale.enable = true;
|
||||
};
|
||||
|
||||
users.users = {
|
||||
"${username}" = {
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"docker"
|
||||
"storage"
|
||||
];
|
||||
isNormalUser = true;
|
||||
openssh.authorizedKeys.keys = [ key ];
|
||||
};
|
||||
"root".openssh.authorizedKeys.keys = [ key ];
|
||||
};
|
||||
|
||||
system.stateVersion = "22.11";
|
||||
}
|
Binary file not shown.
|
@ -1,12 +0,0 @@
|
|||
{ inputs, pkgs, ... }:
|
||||
{
|
||||
services.foundryvtt = {
|
||||
enable = true;
|
||||
hostName = "dnd.jolheiser.com";
|
||||
minifyStaticFiles = true;
|
||||
proxyPort = 443;
|
||||
proxySSL = true;
|
||||
upnp = false;
|
||||
package = inputs.foundry.packages.${pkgs.system}.foundryvtt_12;
|
||||
};
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
services.git-pr = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
url = "pr.jolheiser.com";
|
||||
admins = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJXoiWcPkL5kUAqJfMxnPM/ND4qJ4kKShDhXdqnYv2ZB" ];
|
||||
sshPort = 7448;
|
||||
enableWeb = true;
|
||||
webPort = 7449;
|
||||
theme = "catppuccin-mocha";
|
||||
timeFormat = "01/02/2006 at 03:04:05PM";
|
||||
repos = [
|
||||
{
|
||||
id = "ugit";
|
||||
cloneAddr = "https://git.jolheiser.com/ugit.git";
|
||||
desc = "Minimal git service";
|
||||
}
|
||||
{
|
||||
id = "git-pr-nix";
|
||||
cloneAddr = "https://git.jolheiser.com/git-pr-nix.git";
|
||||
desc = "Nix flake, package, and module for git-pr";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
let
|
||||
modules = [
|
||||
{
|
||||
name = "hcaptcha";
|
||||
repo = "gitea.com/jolheiser/hcaptcha";
|
||||
}
|
||||
{
|
||||
name = "pwn";
|
||||
repo = "gitea.com/jolheiser/pwn";
|
||||
}
|
||||
];
|
||||
in
|
||||
builtins.concatStringsSep "\n" (
|
||||
builtins.map (module: ''
|
||||
respond /${module.name}* `<html><head>
|
||||
<meta name="go-import" content="go.jolheiser.com/${module.name} git https://${module.repo}.git">
|
||||
<meta http-equiv="refresh" content="3; url=https://pkg.go.dev/go.jolheiser.com/${module.name}" />
|
||||
</head><body>
|
||||
Redirecting to <a href="https://pkg.go.dev/go.jolheiser.com/${module.name}">https://pkg.go.dev/go.jolheiser.com/${module.name}</a>
|
||||
</body></html>`
|
||||
'') modules
|
||||
)
|
|
@ -1,7 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.golink = {
|
||||
enable = true;
|
||||
tailscaleAuthKeyFile = pkgs.writeText "tskey" "tskey-auth-kGaKxz5CNTRL-nvyRLm7J38B37QZ2gCDM8BqtwyC6zJUh7"; # One-time key
|
||||
};
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
services.gotosocial = {
|
||||
enable = true;
|
||||
settings = {
|
||||
application-name = "jolheiser GtS";
|
||||
host = "social.jolheiser.com";
|
||||
port = 4686;
|
||||
accounts-registration-open = false;
|
||||
landing-page-user = "jolheiser";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
{ modulesPath, ... }:
|
||||
{
|
||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
boot.initrd.availableKernelModules = [
|
||||
"ata_piix"
|
||||
"uhci_hcd"
|
||||
"xen_blkfront"
|
||||
"vmw_pvscsi"
|
||||
];
|
||||
boot.initrd.kernelModules = [ "nvme" ];
|
||||
fileSystems."/" = {
|
||||
device = "/dev/sda1";
|
||||
fsType = "ext4";
|
||||
};
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
{
|
||||
services = {
|
||||
miniserve = {
|
||||
enable = true;
|
||||
port = 3453;
|
||||
showHidden = true;
|
||||
uploadFiles = "";
|
||||
mkdir = true;
|
||||
overwriteFiles = true;
|
||||
enableTar = true;
|
||||
enableTarGz = true;
|
||||
enableZip = true;
|
||||
dirsFirst = true;
|
||||
title = "Files";
|
||||
hideThemeSelector = true;
|
||||
hideVersionFooter = true;
|
||||
readme = true;
|
||||
};
|
||||
tailproxy.miniserve = {
|
||||
enable = true;
|
||||
hostname = "files";
|
||||
port = 3453;
|
||||
authKey = "tskey-auth-kNNZJXfSDb11CNTRL-DsdZPygdA7Lrye5WJjnr6LGNffgzo3PUH"; # One-time key
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
user = "pubserve";
|
||||
path = "/var/lib/pubserve";
|
||||
in
|
||||
{
|
||||
users.users.${user} = {
|
||||
group = user;
|
||||
home = path;
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
isNormalUser = false;
|
||||
|
||||
};
|
||||
users.groups.${user} = { };
|
||||
|
||||
systemd.services =
|
||||
let
|
||||
commonArgs = [
|
||||
"-i '127.0.0.1'"
|
||||
"-H"
|
||||
"-D"
|
||||
"-F"
|
||||
"--hide-theme-selector"
|
||||
"--readme"
|
||||
path
|
||||
];
|
||||
in
|
||||
{
|
||||
pubserve = {
|
||||
description = "Miniserve Public File Server";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.miniserve}/bin/miniserve -t 'PubServe' -p 3454 ${lib.concatStringsSep " " commonArgs}";
|
||||
Restart = "on-failure";
|
||||
User = user;
|
||||
Group = user;
|
||||
};
|
||||
};
|
||||
privserve = {
|
||||
description = "Miniserve Public File Server (Admin)";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.miniserve}/bin/miniserve -u -U -o -t 'PrivServe' -p 3455 ${lib.concatStringsSep " " commonArgs}";
|
||||
Restart = "on-failure";
|
||||
User = user;
|
||||
Group = user;
|
||||
};
|
||||
};
|
||||
};
|
||||
services.tailproxy = {
|
||||
pubserve = {
|
||||
enable = true;
|
||||
hostname = "pubserve";
|
||||
funnel = true;
|
||||
port = 3454;
|
||||
authKey = "tskey-auth-kJrnknpMsL11CNTRL-ot1kkasErR2cLZZmfuKYR2b9za7fCzVR"; # One-time key
|
||||
};
|
||||
privserve = {
|
||||
enable = true;
|
||||
hostname = "privserve";
|
||||
port = 3455;
|
||||
authKey = "tskey-auth-kKFv865ykk11CNTRL-dfmxUREHP5evuuMsfPy55ehXECXrLF1N7"; # One-time key
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
age.secrets = {
|
||||
restic-env.file = ../../secrets/personal/restic-env.age;
|
||||
restic-pass.file = ../../secrets/personal/restic-pass.age;
|
||||
restic-repo.file = ../../secrets/personal/restic-repo.age;
|
||||
};
|
||||
services.restic.backups.dragonwell = {
|
||||
initialize = true;
|
||||
environmentFile = config.age.secrets.restic-env.path;
|
||||
passwordFile = config.age.secrets.restic-pass.path;
|
||||
repositoryFile = config.age.secrets.restic-repo.path;
|
||||
paths = [
|
||||
"/var/lib/ugit/repos"
|
||||
"/var/lib/miniserve"
|
||||
"/var/lib/foundryvtt/Data"
|
||||
"/var/lib/foundryvtt/Config"
|
||||
];
|
||||
pruneOpts = [
|
||||
"--keep-daily 7"
|
||||
"--keep-weekly 2"
|
||||
"--keep-monthly 2"
|
||||
];
|
||||
timerConfig = {
|
||||
OnCalendar = "daily";
|
||||
Persistent = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
baseCertPath = "/var/lib/acme/irc.jolheiser.com";
|
||||
in
|
||||
{
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
email = "irc@jolheiser.com";
|
||||
certs."irc.jolheiser.com" = {
|
||||
listenHTTP = ":7658";
|
||||
postRun = "systemctl reload soju";
|
||||
group = "soju";
|
||||
};
|
||||
};
|
||||
services.soju = {
|
||||
enable = true;
|
||||
tlsCertificate = "${baseCertPath}/fullchain.pem";
|
||||
tlsCertificateKey = "${baseCertPath}/key.pem";
|
||||
};
|
||||
systemd.services.soju.serviceConfig = {
|
||||
DynamicUser = lib.mkForce false;
|
||||
User = "soju";
|
||||
Group = "soju";
|
||||
ReadOnlyPaths = baseCertPath;
|
||||
};
|
||||
users = {
|
||||
users.soju = {
|
||||
isSystemUser = true;
|
||||
group = "soju";
|
||||
};
|
||||
groups.soju = { };
|
||||
};
|
||||
}
|
Binary file not shown.
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
services.tclip = {
|
||||
enable = true;
|
||||
hostname = "paste";
|
||||
useFunnel = true;
|
||||
hideFunnelUsers = true;
|
||||
authKey = "tskey-auth-k1VerP4gam11CNTRL-89rpeDcfTdJqkF9AECWmdJLVgo1jQcSAB"; # One-time key
|
||||
};
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
{
|
||||
services.ugit = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
authorizedKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJXoiWcPkL5kUAqJfMxnPM/ND4qJ4kKShDhXdqnYv2ZB"
|
||||
];
|
||||
tsAuthKey = "tskey-auth-kRUJE7zxH621CNTRL-Td29STXSrtTUHdacaKaYtTD82uyDXZj7"; # One-time key
|
||||
config = {
|
||||
ssh.clone-url = "ugit@git.jolheiser.com";
|
||||
http.clone-url = "https://git.jolheiser.com";
|
||||
log.json = true;
|
||||
profile = {
|
||||
username = "jolheiser";
|
||||
email = "ugit@jolheiser.com";
|
||||
links = [
|
||||
"Github,https://github.com/jolheiser"
|
||||
"Gitea,https://gitea.com/jolheiser"
|
||||
"JoJoDev,https://git.jojodev.com/jolheiser"
|
||||
"Fediverse,https://social.jolheiser.com/@jolheiser"
|
||||
];
|
||||
};
|
||||
tailscale = {
|
||||
enable = true;
|
||||
hostname = "git";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Binary file not shown.
|
@ -1,438 +0,0 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.miniserve;
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkOption
|
||||
mkIf
|
||||
types
|
||||
optionalString
|
||||
concatMapStringsSep
|
||||
concatStringsSep
|
||||
;
|
||||
in
|
||||
{
|
||||
options.services.miniserve = {
|
||||
enable = mkEnableOption "miniserve service";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
description = "miniserve package to use";
|
||||
default = pkgs.miniserve;
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "miniserve";
|
||||
description = "User account for miniserve service";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "miniserve";
|
||||
description = "Group for miniserve service";
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/miniserve";
|
||||
description = "Which path to serve";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8080;
|
||||
description = "Port to use";
|
||||
};
|
||||
|
||||
interfaces = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "127.0.0.1" ];
|
||||
description = "Interface to listen on";
|
||||
};
|
||||
|
||||
verbose = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Be verbose, includes emitting access logs";
|
||||
};
|
||||
|
||||
indexFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The name of a directory index file to serve, like "index.html"
|
||||
|
||||
Normally, when miniserve serves a directory, it creates a listing for that directory. However, if a directory
|
||||
contains this file, miniserve will serve that file instead.
|
||||
'';
|
||||
};
|
||||
|
||||
spa = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Activate SPA (Single Page Application) mode
|
||||
|
||||
This will cause the file given by --index to be served for all non-existing file paths. In effect, this will serve
|
||||
the index file whenever a 404 would otherwise occur in order to allow the SPA router to handle the request instead.
|
||||
'';
|
||||
};
|
||||
|
||||
prettyUrls = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Activate Pretty URLs mode
|
||||
|
||||
This will cause the server to serve the equivalent `.html` file indicated by the path.
|
||||
|
||||
`/about` will try to find `about.html` and serve it.
|
||||
'';
|
||||
};
|
||||
|
||||
auth = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Set authentication
|
||||
|
||||
Currently supported formats:
|
||||
username:password, username:sha256:hash, username:sha512:hash
|
||||
(e.g. joe:123, joe:sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3)
|
||||
'';
|
||||
};
|
||||
|
||||
authFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
Read authentication values from a file
|
||||
|
||||
Example file content:
|
||||
|
||||
joe:123
|
||||
bob:sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
|
||||
bill:
|
||||
'';
|
||||
};
|
||||
|
||||
routePrefix = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Use a specific route prefix";
|
||||
};
|
||||
|
||||
randomRoute = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Generate a random 6-hexdigit route";
|
||||
};
|
||||
|
||||
hideSymlinks = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Hide symlinks in listing and prevent them from being followed";
|
||||
};
|
||||
|
||||
showHidden = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Show hidden files";
|
||||
};
|
||||
|
||||
sortingMethod = mkOption {
|
||||
type = types.enum [
|
||||
"name"
|
||||
"size"
|
||||
"date"
|
||||
];
|
||||
default = "name";
|
||||
description = ''
|
||||
Default sorting method for file list
|
||||
|
||||
Possible values:
|
||||
- name: Sort by name
|
||||
- size: Sort by size
|
||||
- date: Sort by last modification date (natural sort: follows alphanumerical order)
|
||||
'';
|
||||
};
|
||||
|
||||
sortingOrder = mkOption {
|
||||
type = types.enum [
|
||||
"asc"
|
||||
"desc"
|
||||
];
|
||||
default = "desc";
|
||||
description = ''
|
||||
Default sorting order for file list
|
||||
|
||||
Possible values:
|
||||
- asc: Ascending order
|
||||
- desc: Descending order
|
||||
'';
|
||||
};
|
||||
|
||||
colorScheme = mkOption {
|
||||
type = types.enum [
|
||||
"squirrel"
|
||||
"archlinux"
|
||||
"zenburn"
|
||||
"monokai"
|
||||
];
|
||||
default = "squirrel";
|
||||
description = ''
|
||||
Default color scheme
|
||||
|
||||
Possible values: squirrel, archlinux, zenburn, monokai
|
||||
'';
|
||||
};
|
||||
|
||||
colorSchemeDark = mkOption {
|
||||
type = types.enum [
|
||||
"squirrel"
|
||||
"archlinux"
|
||||
"zenburn"
|
||||
"monokai"
|
||||
];
|
||||
default = "archlinux";
|
||||
description = ''
|
||||
Default color scheme
|
||||
|
||||
Possible values: squirrel, archlinux, zenburn, monokai
|
||||
'';
|
||||
};
|
||||
|
||||
qrcode = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable QR code display";
|
||||
};
|
||||
|
||||
uploadFiles = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Enable file uploading (and optionally specify for which directory)";
|
||||
};
|
||||
|
||||
mkdir = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable creating directories";
|
||||
};
|
||||
|
||||
mediaType = mkOption {
|
||||
type = types.nullOr (
|
||||
types.enum [
|
||||
"image"
|
||||
"audio"
|
||||
"video"
|
||||
]
|
||||
);
|
||||
default = null;
|
||||
description = ''
|
||||
Specify uploadable media types
|
||||
|
||||
Possible values: image, audio, video
|
||||
'';
|
||||
};
|
||||
|
||||
rawMediaType = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Directly specify the uploadable media type expression";
|
||||
};
|
||||
|
||||
overwriteFiles = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable overriding existing files during file upload";
|
||||
};
|
||||
|
||||
enableTar = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable uncompressed tar archive generation";
|
||||
};
|
||||
|
||||
enableTarGz = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable gz-compressed tar archive generation";
|
||||
};
|
||||
|
||||
enableZip = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable zip archive generation
|
||||
|
||||
WARNING: Zipping large directories can result in out-of-memory exception because zip generation is done in memory
|
||||
and cannot be sent on the fly
|
||||
'';
|
||||
};
|
||||
|
||||
compressResponse = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Compress response
|
||||
|
||||
WARNING: Enabling this option may slow down transfers due to CPU overhead, so it is disabled by default.
|
||||
|
||||
Only enable this option if you know that your users have slow connections or if you want to minimize your server's bandwidth usage.
|
||||
'';
|
||||
};
|
||||
|
||||
dirsFirst = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "List directories first";
|
||||
};
|
||||
|
||||
title = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Shown instead of host in page title and heading";
|
||||
};
|
||||
|
||||
headers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Inserts custom headers into the responses. Specify each header as a 'Header:Value' pair.
|
||||
This parameter can be used multiple times to add multiple headers.
|
||||
|
||||
Example:
|
||||
--header "Header1:Value1" --header "Header2:Value2"
|
||||
(If a header is already set or previously inserted, it will not be overwritten.)
|
||||
'';
|
||||
};
|
||||
|
||||
showSymlinkInfo = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Visualize symlinks in directory listing";
|
||||
};
|
||||
|
||||
hideVersionFooter = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Hide version footer";
|
||||
};
|
||||
|
||||
hideThemeSelector = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Hide theme selector";
|
||||
};
|
||||
|
||||
showWgetFooter = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "If enabled, display a wget command to recursively download the current directory";
|
||||
};
|
||||
|
||||
tlsCert = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "TLS certificate to use";
|
||||
};
|
||||
|
||||
tlsKey = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "TLS private key to use";
|
||||
};
|
||||
|
||||
readme = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable README.md rendering in directories";
|
||||
};
|
||||
|
||||
disableIndexing = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Disable indexing
|
||||
|
||||
This will prevent directory listings from being generated and return an error instead.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.miniserve = {
|
||||
description = "Miniserve File Server";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart =
|
||||
let
|
||||
args = [
|
||||
(optionalString cfg.verbose "-v")
|
||||
(optionalString (cfg.indexFile != null) "--index '${cfg.indexFile}'")
|
||||
(optionalString cfg.spa "--spa")
|
||||
(optionalString cfg.prettyUrls "--pretty-urls")
|
||||
"-p ${toString cfg.port}"
|
||||
(concatMapStringsSep " " (i: "-i ${i}") cfg.interfaces)
|
||||
(optionalString (cfg.auth != null) "-a '${cfg.auth}'")
|
||||
(optionalString (cfg.authFile != null) "--auth-file ${cfg.authFile}")
|
||||
(optionalString (cfg.routePrefix != null) "--route-prefix '${cfg.routePrefix}'")
|
||||
(optionalString cfg.randomRoute "--random-route")
|
||||
(optionalString cfg.hideSymlinks "-P")
|
||||
(optionalString cfg.showHidden "-H")
|
||||
"-S ${cfg.sortingMethod}"
|
||||
"-O ${cfg.sortingOrder}"
|
||||
"-c ${cfg.colorScheme}"
|
||||
"-d ${cfg.colorSchemeDark}"
|
||||
(optionalString cfg.qrcode "-q")
|
||||
(optionalString (cfg.uploadFiles != null) (
|
||||
if (cfg.uploadFiles != "") then "-u '${cfg.uploadFiles}'" else "-u"
|
||||
))
|
||||
(optionalString cfg.mkdir "-U")
|
||||
(optionalString (cfg.mediaType != null) "-m ${cfg.mediaType}")
|
||||
(optionalString (cfg.rawMediaType != null) "-M '${cfg.rawMediaType}'")
|
||||
(optionalString cfg.overwriteFiles "-o")
|
||||
(optionalString cfg.enableTar "-r")
|
||||
(optionalString cfg.enableTarGz "-g")
|
||||
(optionalString cfg.enableZip "-z")
|
||||
(optionalString cfg.compressResponse "-C")
|
||||
(optionalString cfg.dirsFirst "-D")
|
||||
(optionalString (cfg.title != null) "-t '${cfg.title}'")
|
||||
(concatMapStringsSep " " (h: "--header '${h}'") cfg.headers)
|
||||
(optionalString cfg.showSymlinkInfo "-l")
|
||||
(optionalString cfg.hideVersionFooter "-F")
|
||||
(optionalString cfg.hideThemeSelector "--hide-theme-selector")
|
||||
(optionalString cfg.showWgetFooter "-W")
|
||||
(optionalString (cfg.tlsCert != null) "--tls-cert ${cfg.tlsCert}")
|
||||
(optionalString (cfg.tlsKey != null) "--tls-key ${cfg.tlsKey}")
|
||||
(optionalString cfg.readme "--readme")
|
||||
(optionalString cfg.disableIndexing "-I")
|
||||
cfg.path
|
||||
];
|
||||
in
|
||||
"${pkgs.miniserve}/bin/miniserve ${concatStringsSep " " args}";
|
||||
Restart = "on-failure";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
};
|
||||
};
|
||||
|
||||
users.users.${cfg.user} = {
|
||||
group = cfg.group;
|
||||
home = cfg.path;
|
||||
createHome = true;
|
||||
isSystemUser = true;
|
||||
isNormalUser = false;
|
||||
};
|
||||
users.groups.${cfg.group} = { };
|
||||
};
|
||||
}
|
|
@ -1,108 +0,0 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.services.tclip;
|
||||
in
|
||||
{
|
||||
options.services.tclip = {
|
||||
enable = lib.mkEnableOption "tclip service";
|
||||
|
||||
hostname = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "paste";
|
||||
description = "The hostname to use on your tailnet";
|
||||
};
|
||||
|
||||
dataLocation = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/var/lib/tclip";
|
||||
description = "Where program data is stored";
|
||||
};
|
||||
|
||||
tsnetVerbose = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Log verbosely to stderr";
|
||||
};
|
||||
|
||||
useFunnel = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Expose pastes with tailscale funnel";
|
||||
};
|
||||
|
||||
hideFunnelUsers = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Hide usernamd/image on funnel";
|
||||
};
|
||||
|
||||
httpPort = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.port;
|
||||
default = null;
|
||||
description = "Expose pastes on an HTTP server at the given port";
|
||||
};
|
||||
|
||||
controlURL = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "Custom control server (e.g. headscale)";
|
||||
};
|
||||
|
||||
disableHTTPS = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Disable serving on HTTPS";
|
||||
};
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
description = "The tclip package to use";
|
||||
};
|
||||
|
||||
authKey = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "Tailscale auth key";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.tclip = {
|
||||
description = "tclip Service";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart =
|
||||
let
|
||||
args =
|
||||
lib.optionals (cfg.httpPort != null) [ "--http-port=${cfg.httpPort}" ]
|
||||
++ lib.optionals (cfg.controlURL != null) [ "--control-url=${cfg.controlURL}" ]
|
||||
++ [
|
||||
(lib.optionalString cfg.disableHTTPS "--disable-https")
|
||||
"--hostname=${cfg.hostname}"
|
||||
"--data-location=${cfg.dataLocation}"
|
||||
(lib.optionalString cfg.tsnetVerbose "--tsnet-verbose")
|
||||
(lib.optionalString cfg.useFunnel "--use-funnel")
|
||||
(lib.optionalString cfg.hideFunnelUsers "--hide-funnel-users")
|
||||
];
|
||||
in
|
||||
"${cfg.package}/bin/tclipd ${lib.concatStringsSep " " args}";
|
||||
Restart = "always";
|
||||
User = "tclip";
|
||||
Group = "tclip";
|
||||
Environment = [ "TS_AUTHKEY=${cfg.authKey}" ];
|
||||
};
|
||||
};
|
||||
|
||||
# Create user and group
|
||||
users.users.tclip = {
|
||||
isSystemUser = true;
|
||||
group = "tclip";
|
||||
home = cfg.dataLocation;
|
||||
createHome = true;
|
||||
};
|
||||
|
||||
users.groups.tclip = { };
|
||||
};
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 E8j6/g QWZGgeu5+89wRzWH31D1GdNuhrNyyKsKqv/b4Kkyn2s
|
||||
3vYwTYDVOMyiNeE+NtNPyplmGiknjyTQvln2DRxUPg0
|
||||
-> ssh-ed25519 f31uNA NVB2C1IjxvB25uA+PdB9lmNgmPQ16wSRl8lS0Wp4Tzg
|
||||
Fe7BCcnb+1HzJ43Iq+YtHCI/i2m7TT5xO1rZwb9yZ70
|
||||
--- 4Fmm3sQzE/funn3yI79REu1SVRzgUMQ1r8bUaNgVYZE
|
||||
Î<EFBFBD>Æ
|
||||
—¸ü,Fï ê´õ/ÃÅ~Å”TëD’Û¨Ù<C2A8>‘”<E28098>t`)9ƒö<C692>óþ¬+xÙy~+
|
|
@ -1,7 +0,0 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 E8j6/g npvjWOaLtdQ8shF6rkXfUlXXf1MAe/pvPBPIPY9R1XY
|
||||
gO6lr8kHN7fOQb5NXaybFqhghx5VqcK0LaHCVvlsdvs
|
||||
-> ssh-ed25519 f31uNA qrbvpL4AuM1wPSR2Qc9VKSpO4Ho0WgpmOIThWvotBCQ
|
||||
Q1oMS4SAxzqb1vQffM4dpsnlXP1M2fZ5nYYIpyB9uoA
|
||||
--- ESb6mxdTZnHs053UowTuWZRn+W+QlOeVM8/kL1VWSgw
|
||||
Hì²DÏÝDŠÁƒÖÊÖ¢Ìw•oûk›G<E280BA>EJ¾-Ó_up»œÔ!¤ !’¼¯žB
|
|
@ -1,8 +0,0 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 E8j6/g rUc81FjzuShzhp/3we9dQPPAqIPEoKAagCF9K0/S9lw
|
||||
0mv/S6RCEosLF1aWvb/2+oPdQEfTHraOqVI8v3PMcrI
|
||||
-> ssh-ed25519 f31uNA C3OusAWxSswFYZxr26XtuB5EpJUzkxcP0US+F4SZFlc
|
||||
L/soUr5i+7+RyZ8mMUI6AOfTXdWzqO+a9OFLHGw28SI
|
||||
--- rVDcNMV2dVpwhNiIx964+sw6ak5lcZzaeGASLlVNac8
|
||||
®ö&sE
|
||||
H'à«/åS¹ù×|òª%8Ó›¿€Ô§@°Zº:2íÕÎj1¨Ò5p<35>À.Å
|
Binary file not shown.
Binary file not shown.
|
@ -1,7 +0,0 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 E8j6/g c3mP+3muM3Nk+CR8X2GRdVDgc88Y5FHblV7EzxaYF08
|
||||
dVEE+rQ6Y7ki9Uyr+8B3xYRZtO9VeGWwFboasp5ycqg
|
||||
-> ssh-ed25519 f31uNA Xq8QkBgX9mpIkenoJQCt+hyg/AVf/kwkVMJnOxqEARM
|
||||
tkte19pOr+Lb2lk1BVQibsC8d8k38oKwllx6cySVtt0
|
||||
--- geKlgkUKw/FYhJNqGSZmXoTSTfRQR+dlz7fq5WzL7SU
|
||||
Ïl,Ì<0E>Ù—¤ðÈWLÙð±ùú4VEÃÒøŸ¾€ÿ¹<C3BF>Ýbç6¥Y8†ÌÔÒØ
|
|
@ -1,7 +0,0 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 E8j6/g vLXo/gyZOwGUJyLHIqcrpCmvLmbFpgrFHBRLmqzyiwg
|
||||
ha7V1vSM3r5Y0PQyeNL01wqqvSuMOWfwbdZjJSMpzhk
|
||||
-> ssh-ed25519 f31uNA NGUshv3FTRw4kARWfLgSqp2EbLvPnm638rKAULFLZlY
|
||||
3owquk+she5gB+cjdpPYdIFlz+RtA25RbwxIGftD6BI
|
||||
--- MZfK5Wquy6pyOWuQdRYa9y46X8lD1ndOeXqkImvIDpM
|
||||
e7ÀkôUWsmæ7ߨ<C39F>Úã—›DƒÁÚd…©µé\(1®Üªd¯j$$îNµ¬á^Јié.b*}(ž2$ñž%¬±•B¾¤<C2BE>[Ó5Soõ1¶Aå¾±+#†¥žc
|
|
@ -3,51 +3,20 @@ let
|
|||
matcha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILZxjkZLj/9xvmg1enK+B7k8qf6Px0j4kTZ2caQfYmB1";
|
||||
genmaicha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKhyzwMV0eoS8RSAcUvLkPhbXoR9/06cLoBmUVyb9DTw";
|
||||
sencha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJurjAMu4IXgpBwgUP0QvE2ySE5/Orn/yflkdWVvy6Am";
|
||||
dragonwell = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN32Cwxer2AOGvEqSqXSPp49gj1VtR7G2XmPnmXj6o53";
|
||||
|
||||
all = [
|
||||
jolheiser
|
||||
matcha
|
||||
genmaicha
|
||||
sencha
|
||||
dragonwell
|
||||
];
|
||||
in
|
||||
{
|
||||
"shared/cachix.age".publicKeys = all;
|
||||
"shared/ssh-config.age".publicKeys = all;
|
||||
"shared/spotify.age".publicKeys = all;
|
||||
"shared/irc-pw.age".publicKeys = all;
|
||||
"shared/gist-pw.age".publicKeys = all;
|
||||
"shared/git-send-email.age".publicKeys = all;
|
||||
"shared/llm.age".publicKeys = all;
|
||||
"shared/spectre-pw.age".publicKeys = [ jolheiser ];
|
||||
"personal/restic-env.age".publicKeys = [
|
||||
jolheiser
|
||||
dragonwell
|
||||
];
|
||||
"personal/restic-pass.age".publicKeys = [
|
||||
jolheiser
|
||||
dragonwell
|
||||
];
|
||||
"personal/restic-repo.age".publicKeys = [
|
||||
jolheiser
|
||||
dragonwell
|
||||
];
|
||||
"personal/dex.age".publicKeys = [
|
||||
jolheiser
|
||||
dragonwell
|
||||
];
|
||||
"personal/dex-tailscale.age".publicKeys = [
|
||||
jolheiser
|
||||
dragonwell
|
||||
];
|
||||
"personal/dex-vikunja.age".publicKeys = [
|
||||
jolheiser
|
||||
dragonwell
|
||||
];
|
||||
"personal/dex-tandoor.age".publicKeys = [
|
||||
jolheiser
|
||||
dragonwell
|
||||
];
|
||||
"cachix.age".publicKeys = all;
|
||||
"ssh-config.age".publicKeys = all;
|
||||
"spotify.age".publicKeys = all;
|
||||
"irc-pw.age".publicKeys = all;
|
||||
"git-send-email.age".publicKeys = all;
|
||||
"llm.age".publicKeys = all;
|
||||
"spectre-pw.age".publicKeys = [ jolheiser ];
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue