mirror of https://git.jolheiser.com/dotnix.git
Compare commits
111 Commits
8a229b1654
...
fa52dc1a8c
Author | SHA1 | Date |
---|---|---|
jolheiser | fa52dc1a8c | |
jolheiser | 5dbfb366a2 | |
jolheiser | 5facb097a5 | |
jolheiser | a42f134bf8 | |
jolheiser | bacc6d5357 | |
jolheiser | b6a30a6204 | |
jolheiser | a06382aec5 | |
jolheiser | 7a96a6da84 | |
jolheiser | 3042676258 | |
jolheiser | c9fefbf7e2 | |
jolheiser | 8d9a644a5e | |
jolheiser | e84748da71 | |
jolheiser | 18d0800aa5 | |
jolheiser | 9ca336fb9c | |
jolheiser | adff3d1294 | |
jolheiser | 40aa972e6c | |
jolheiser | 3ee3c1f0f2 | |
jolheiser | 91559661b9 | |
jolheiser | ec06b9b269 | |
jolheiser | e70db6babb | |
jolheiser | dc2fdf7773 | |
jolheiser | 253f360ccf | |
jolheiser | bd1cb035c3 | |
jolheiser | d0f4bbc55b | |
jolheiser | ee28dac8c1 | |
jolheiser | 754c59db6d | |
jolheiser | a36e0363bf | |
jolheiser | ab2c06064e | |
jolheiser | 3a79d0f661 | |
jolheiser | 43519a2400 | |
jolheiser | 21c9bef9ae | |
jolheiser | 5a886e2828 | |
jolheiser | 1e878c3343 | |
jolheiser | 7a5367abab | |
jolheiser | b7b25d99e5 | |
jolheiser | 9c02a69527 | |
jolheiser | 66bc4569a3 | |
jolheiser | 7785136999 | |
jolheiser | f00799a7ab | |
jolheiser | b6b22cba13 | |
jolheiser | 9518bb68e9 | |
jolheiser | 15fb1fe71d | |
jolheiser | 41c577c6c2 | |
jolheiser | 147b2f4c12 | |
jolheiser | 43d6f7fe48 | |
jolheiser | 2ed412a124 | |
jolheiser | 48fd0cf856 | |
jolheiser | 12fb99ca0b | |
jolheiser | 74abdc563a | |
jolheiser | 20806d6ec9 | |
jolheiser | c1947b8a36 | |
jolheiser | 0c5a17a64b | |
jolheiser | 61f5361a70 | |
jolheiser | bc65cb281d | |
jolheiser | 070c57d886 | |
jolheiser | 7074d38d04 | |
jolheiser | da15c72521 | |
jolheiser | fb5c4abe9c | |
jolheiser | 595e74caa8 | |
jolheiser | 6800193a85 | |
jolheiser | 075e21bf0b | |
jolheiser | bcc4fd836e | |
jolheiser | 1227cb3f82 | |
jolheiser | cf40e534f4 | |
jolheiser | ef92ea2e18 | |
jolheiser | 619d80dd7b | |
jolheiser | 370ad1aa2f | |
jolheiser | e7984efc49 | |
jolheiser | 7596a2851e | |
jolheiser | ec01830ff6 | |
jolheiser | f66a3fe2f3 | |
jolheiser | 2b9b540574 | |
jolheiser | e5af56dd92 | |
jolheiser | 02d96ed8dc | |
jolheiser | 4c9de84663 | |
jolheiser | dd2761b1d6 | |
jolheiser | 3412a5c86b | |
jolheiser | 0c9500e712 | |
jolheiser | c132fb7a63 | |
jolheiser | a2d136d76c | |
jolheiser | 293b086ebd | |
jolheiser | 995eaba6c6 | |
jolheiser | 1939f193eb | |
jolheiser | 3539480632 | |
jolheiser | 09d1868e29 | |
jolheiser | ce53fe0a11 | |
jolheiser | f969cd4ad0 | |
jolheiser | dc9244482f | |
jolheiser | b69eb2aff3 | |
jolheiser | 8e64ccea7e | |
jolheiser | f90b77ba50 | |
jolheiser | cf8682a116 | |
jolheiser | fef5415af4 | |
jolheiser | 2c3e1d9066 | |
jolheiser | 955ea04cbf | |
jolheiser | fdf3a2135a | |
jolheiser | 08c39b6601 | |
jolheiser | 6a5f3da703 | |
jolheiser | af5925da19 | |
jolheiser | 23aed6cdb0 | |
jolheiser | 81603162a1 | |
jolheiser | 796ab9f3d4 | |
jolheiser | 32287889da | |
jolheiser | f6f5a759e1 | |
jolheiser | 20e4aee614 | |
jolheiser | 7f4271f269 | |
jolheiser | ed59bc0ad6 | |
jolheiser | e594526fc2 | |
jolheiser | 91f0f09344 | |
jolheiser | 86e600a504 | |
jolheiser | fd36e1ffb4 |
|
@ -1,6 +1,6 @@
|
||||||
apps/gui/firefox/work.nix:
|
|
||||||
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
|
||||||
machines/chai/cifs.nix:
|
|
||||||
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
|
||||||
machines/dragonwell/dex.nix:
|
machines/dragonwell/dex.nix:
|
||||||
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
||||||
|
machines/dragonwell/tandoor.nix:
|
||||||
|
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
||||||
|
machines/dragonwell/vikunja.nix:
|
||||||
|
- age105cm5awxxegyrqthh4vhnxzr0tdy86q8uq52wkkjacfkutp2vprqwseak7
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Age
|
# Age
|
||||||
apps/gui/firefox/work.nix filter=git-age diff=git-age
|
|
||||||
machines/chai/cifs.nix filter=git-age diff=git-age
|
|
||||||
machines/dragonwell/dex.nix filter=git-age diff=git-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
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [ ./gtk.nix ];
|
||||||
|
dconf.settings =
|
||||||
|
let
|
||||||
|
wallpaper = pkgs.fetchurl {
|
||||||
|
url = "https://user.fm/files/v2-3834da30df507c4ba97a551571e98e33/nixppuccin.png";
|
||||||
|
hash = "sha256-dwM+Wi2gse7Eu4f/suU2BsVACPHMfSaXYOpZPqx6/SQ=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"org/cinnamon/desktop/background" = {
|
||||||
|
picture-uri = "file://${wallpaper}";
|
||||||
|
};
|
||||||
|
"org/cinnamon/desktop/interface" = {
|
||||||
|
font-name = "Monaspace Neon 10";
|
||||||
|
};
|
||||||
|
"org/cinnamon/desktop/wm/preferences" = {
|
||||||
|
titlebar-font = "Monaspace Neon Bold 10";
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/interface" = {
|
||||||
|
document-font-name = "Monaspace Xenon 10";
|
||||||
|
monospace-font-name = "Monaspace Argon 10";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -3,7 +3,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
home.pointerCursor = {
|
home.pointerCursor = {
|
||||||
name = "catppuccin-cursors";
|
name = "catppuccin-cursors";
|
||||||
package = pkgs.catppuccin-cursors.mochaLavender;
|
package = pkgs.catppuccin-cursors.mochaLavender;
|
||||||
|
@ -21,7 +22,7 @@
|
||||||
theme = {
|
theme = {
|
||||||
name = "Catppuccin-Mocha-Compact-Lavender-Dark";
|
name = "Catppuccin-Mocha-Compact-Lavender-Dark";
|
||||||
package = pkgs.catppuccin-gtk.override {
|
package = pkgs.catppuccin-gtk.override {
|
||||||
accents = ["lavender"];
|
accents = [ "lavender" ];
|
||||||
variant = "mocha";
|
variant = "mocha";
|
||||||
size = "compact";
|
size = "compact";
|
||||||
};
|
};
|
||||||
|
@ -41,15 +42,18 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg = let
|
xdg =
|
||||||
|
let
|
||||||
themeDir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}";
|
themeDir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}";
|
||||||
in
|
in
|
||||||
lib.mkIf config.gtk.enable {
|
lib.mkIf config.gtk.enable {
|
||||||
configFile."gtk-4.0/assets" = {
|
configFile = {
|
||||||
|
"gtk-4.0/assets" = {
|
||||||
source = "${themeDir}/gtk-4.0/assets";
|
source = "${themeDir}/gtk-4.0/assets";
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
configFile."gtk-4.0/gtk.css".source = "${themeDir}/gtk-4.0/gtk.css";
|
"gtk-4.0/gtk.css".source = "${themeDir}/gtk-4.0/gtk.css";
|
||||||
configFile."gtk-4.0/gtk-dark.css".source = "${themeDir}/gtk-4.0/gtk-dark.css";
|
"gtk-4.0/gtk-dark.css".source = "${themeDir}/gtk-4.0/gtk-dark.css";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -1,48 +1,27 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../nogui
|
../nogui
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
|
./flameshot.nix
|
||||||
./ghostty.nix
|
./ghostty.nix
|
||||||
./gtk.nix
|
./obs.nix
|
||||||
./spotify.nix
|
./spotify.nix
|
||||||
./tiny.nix
|
|
||||||
./wezterm.nix
|
./wezterm.nix
|
||||||
|
./zed.nix
|
||||||
];
|
];
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# Tools
|
# Tools
|
||||||
cinny-desktop
|
#cinny-desktop
|
||||||
delve
|
delve
|
||||||
discord
|
discord
|
||||||
obsidian
|
obsidian
|
||||||
spotify-player
|
gimp
|
||||||
|
|
||||||
# LSPs
|
# LSPs
|
||||||
marksman
|
marksman
|
||||||
nodePackages.yaml-language-server
|
nodePackages.yaml-language-server
|
||||||
|
|
||||||
# IDEs
|
|
||||||
jetbrains.goland
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
dconf.settings = let
|
|
||||||
wallpaper = pkgs.fetchurl {
|
|
||||||
url = "https://user.fm/files/v2-3834da30df507c4ba97a551571e98e33/nixppuccin.png";
|
|
||||||
hash = "sha256-dwM+Wi2gse7Eu4f/suU2BsVACPHMfSaXYOpZPqx6/SQ=";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
"org/cinnamon/desktop/background" = {
|
|
||||||
picture-uri = "file://${wallpaper}";
|
|
||||||
};
|
|
||||||
"org/cinnamon/desktop/interface" = {
|
|
||||||
font-name = "Monaspace Neon 10";
|
|
||||||
};
|
|
||||||
"org/cinnamon/desktop/wm/preferences" = {
|
|
||||||
titlebar-font = "Monaspace Neon Bold 10";
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
document-font-name = "Monaspace Xenon 10";
|
|
||||||
monospace-font-name = "Monaspace Argon 10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles.default = {
|
profiles.default = {
|
||||||
search = {
|
search = {
|
||||||
default = "Kagi";
|
default = "Kagi";
|
||||||
privateDefault = "DuckDuckGo";
|
privateDefault = "DuckDuckGo";
|
||||||
order = ["Kagi" "DuckDuckGo"];
|
order = [
|
||||||
|
"Kagi"
|
||||||
|
"DuckDuckGo"
|
||||||
|
];
|
||||||
force = true;
|
force = true;
|
||||||
engines = {
|
engines = {
|
||||||
"Kagi" = {
|
"Kagi" = {
|
||||||
definedAliases = ["@k"];
|
definedAliases = [ "@k" ];
|
||||||
urls = [
|
urls = [
|
||||||
{
|
{
|
||||||
template = "https://kagi.com/search";
|
template = "https://kagi.com/search";
|
||||||
|
@ -23,7 +27,7 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"DuckDuckGo" = {
|
"DuckDuckGo" = {
|
||||||
definedAliases = ["@d"];
|
definedAliases = [ "@d" ];
|
||||||
urls = [
|
urls = [
|
||||||
{
|
{
|
||||||
template = "https://duckduckgo.com/";
|
template = "https://duckduckgo.com/";
|
||||||
|
@ -57,11 +61,26 @@
|
||||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
"browser.newtabpage.pinned" = builtins.toJSON [
|
"browser.newtabpage.pinned" = builtins.toJSON [
|
||||||
{url = "https://github.com/";}
|
{
|
||||||
{url = "https://git.jojodev.com/";}
|
url = "https://github.com/";
|
||||||
{url = "https://git.jolheiser.com";}
|
label = "github";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://git.jojodev.com/";
|
||||||
|
label = "jojodev";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://git.jolheiser.com";
|
||||||
|
label = "ugit";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
"browser.fixup.domainwhitelist.go" = true; # golink
|
# tailscale apps
|
||||||
|
"browser.fixup.domainwhitelist.go" = true;
|
||||||
|
"browser.fixup.domainwhitelist.git" = true;
|
||||||
|
"browser.fixup.domainwhitelist.paste" = true;
|
||||||
|
"browser.fixup.domainwhitelist.radarr" = true;
|
||||||
|
"browser.fixup.domainwhitelist.sonarr" = true;
|
||||||
|
"browser.fixup.domainwhitelist.jellyfin" = true;
|
||||||
};
|
};
|
||||||
bookmarks = [
|
bookmarks = [
|
||||||
{
|
{
|
||||||
|
@ -73,31 +92,34 @@
|
||||||
bookmarks = [
|
bookmarks = [
|
||||||
{
|
{
|
||||||
name = "github";
|
name = "github";
|
||||||
tags = ["gitea"];
|
tags = [ "gitea" ];
|
||||||
keyword = "go-gitea";
|
keyword = "go-gitea";
|
||||||
url = "https://github.com/go-gitea/gitea";
|
url = "https://github.com/go-gitea/gitea";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "jojodev";
|
name = "jojodev";
|
||||||
tags = ["gitea"];
|
tags = [ "gitea" ];
|
||||||
keyword = "jojodev";
|
keyword = "jojodev";
|
||||||
url = "https://git.jojodev.com";
|
url = "https://git.jojodev.com";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "gist";
|
name = "gist";
|
||||||
tags = ["gitea" "gist"];
|
tags = [
|
||||||
|
"gitea"
|
||||||
|
"gist"
|
||||||
|
];
|
||||||
keyword = "gist";
|
keyword = "gist";
|
||||||
url = "https://gist.jojodev.com";
|
url = "https://gist.jojodev.com";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "gitea";
|
name = "gitea";
|
||||||
tags = ["gitea"];
|
tags = [ "gitea" ];
|
||||||
keyword = "gitea";
|
keyword = "gitea";
|
||||||
url = "https://gitea.com";
|
url = "https://gitea.com";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "try";
|
name = "try";
|
||||||
tags = ["gitea"];
|
tags = [ "gitea" ];
|
||||||
keyword = "try";
|
keyword = "try";
|
||||||
url = "https://try.gitea.io";
|
url = "https://try.gitea.io";
|
||||||
}
|
}
|
||||||
|
@ -108,30 +130,124 @@
|
||||||
bookmarks = [
|
bookmarks = [
|
||||||
{
|
{
|
||||||
name = "golink";
|
name = "golink";
|
||||||
tags = ["tailscale"];
|
tags = [ "tailscale" ];
|
||||||
keyword = "go";
|
keyword = "go";
|
||||||
url = "http://go";
|
url = "http://go";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "tclip";
|
||||||
|
tags = [ "tailscale" ];
|
||||||
|
keyword = "paste";
|
||||||
|
url = "http://paste";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "ugit";
|
||||||
|
tags = [
|
||||||
|
"tailscale"
|
||||||
|
"git"
|
||||||
|
];
|
||||||
|
keyword = "git";
|
||||||
|
url = "https://git";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "cfg";
|
||||||
|
tags = [
|
||||||
|
"cfg"
|
||||||
|
"tailscale"
|
||||||
|
];
|
||||||
|
keyword = "cfg";
|
||||||
|
url = "https://cfg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "media";
|
||||||
|
bookmarks = [
|
||||||
{
|
{
|
||||||
name = "jellyfin";
|
name = "jellyfin";
|
||||||
tags = ["jellyfin"];
|
tags = [
|
||||||
|
"jellyfin"
|
||||||
|
"tailscale"
|
||||||
|
];
|
||||||
keyword = "jellyfin";
|
keyword = "jellyfin";
|
||||||
url = "http://sencha:8096";
|
url = "http://jellyfin";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "sonarr";
|
||||||
|
tags = [
|
||||||
|
"sonarr"
|
||||||
|
"tailscale"
|
||||||
|
"shows"
|
||||||
|
];
|
||||||
|
keyword = "sonarr";
|
||||||
|
url = "http://sonarr";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "radarr";
|
||||||
|
tags = [
|
||||||
|
"radarr"
|
||||||
|
"tailscale"
|
||||||
|
"movies"
|
||||||
|
];
|
||||||
|
keyword = "radarr";
|
||||||
|
url = "http://radarr";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "bazarr";
|
||||||
|
tags = [
|
||||||
|
"bazarr"
|
||||||
|
"tailscale"
|
||||||
|
"translations"
|
||||||
|
];
|
||||||
|
keyword = "bazarr";
|
||||||
|
url = "http://bazarr";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "prowlarr";
|
||||||
|
tags = [
|
||||||
|
"prowlarr"
|
||||||
|
"tailscale"
|
||||||
|
"indexers"
|
||||||
|
];
|
||||||
|
keyword = "prowlarr";
|
||||||
|
url = "http://prowlarr";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "ugit";
|
name = "ugit";
|
||||||
tags = ["git" "ugit"];
|
tags = [
|
||||||
|
"git"
|
||||||
|
"ugit"
|
||||||
|
];
|
||||||
keyword = "ugit";
|
keyword = "ugit";
|
||||||
url = "https://git.jolheiser.com";
|
url = "https://git.jolheiser.com";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "git-pr";
|
||||||
|
tags = [
|
||||||
|
"git"
|
||||||
|
"pr"
|
||||||
|
];
|
||||||
|
keyword = "git-pr";
|
||||||
|
url = "https://pr.jolheiser.com";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "todo";
|
||||||
|
tags = [
|
||||||
|
"vikunja"
|
||||||
|
"todo"
|
||||||
|
];
|
||||||
|
keyword = "todo";
|
||||||
|
url = "https://todo.jolheiser.com";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
# Not in the toolbar, but still usable via keyword/searching
|
# Not in the toolbar, but still usable via keyword/searching
|
||||||
{
|
{
|
||||||
name = "Go Playground";
|
name = "Go Playground";
|
||||||
tags = ["golang"];
|
tags = [ "golang" ];
|
||||||
keyword = "play";
|
keyword = "play";
|
||||||
url = "https://go.dev/play/";
|
url = "https://go.dev/play/";
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
services.flameshot = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
General = {
|
||||||
|
showStartupLaunchMessage = false;
|
||||||
|
saveAsFileExtension = ".png";
|
||||||
|
uiColor = "#313244";
|
||||||
|
contrastUiColor = "#b4befe";
|
||||||
|
userColors = "picker, #f5e0dc, #f2cdcd, #f5c2e7, #cba6f7, #f38ba8, #eba0ac, #fab387, #f9e2af, #a6e3a1, #94e2d5, #89dceb, #74c7ec, #89b4fa, #b4befe";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
xdg.configFile."ghostty/config".text = ''
|
xdg.configFile."ghostty/config".text = ''
|
||||||
background-opacity = 0.9
|
background-opacity = 0.9
|
||||||
|
@ -8,7 +9,8 @@
|
||||||
term = xterm-256color
|
term = xterm-256color
|
||||||
'';
|
'';
|
||||||
# zig build -p ~/.local/share/ghostty -Doptimize=ReleaseFast
|
# zig build -p ~/.local/share/ghostty -Doptimize=ReleaseFast
|
||||||
xdg.systemDirs.data = ["/home/jolheiser/.local/share/ghostty/share"];
|
# xdg.systemDirs.data = [ "/home/jolheiser/.local/share/ghostty/share" ];
|
||||||
home.sessionPath = ["/home/jolheiser/.local/share/ghostty/bin"];
|
# home.sessionPath = [ "/home/jolheiser/.local/share/ghostty/bin" ];
|
||||||
programs.bash.enable = true;
|
# programs.bash.enable = true;
|
||||||
|
home.packages = [ pkgs.ghostty ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [ pkgs.obs-studio-plugins.obs-webkitgtk ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,12 +1,18 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
xdg.configFile."spotify-player/theme.toml".text = builtins.readFile (pkgs.fetchFromGitHub {
|
{
|
||||||
|
home.packages = [ pkgs.spotify-player ];
|
||||||
|
xdg.configFile."spotify-player/theme.toml".text = builtins.readFile (
|
||||||
|
pkgs.fetchFromGitHub {
|
||||||
owner = "catppuccin";
|
owner = "catppuccin";
|
||||||
repo = "spotify-player";
|
repo = "spotify-player";
|
||||||
rev = "002d51b02b3a2ebc0804e4839ee604dbdab4bec3";
|
rev = "002d51b02b3a2ebc0804e4839ee604dbdab4bec3";
|
||||||
sha256 = "sha256-IUhzVrIBMi/Dn6+HV0m9i38Msg8zzzJlR85JeEVE7EU=";
|
sha256 = "sha256-IUhzVrIBMi/Dn6+HV0m9i38Msg8zzzJlR85JeEVE7EU=";
|
||||||
}
|
}
|
||||||
+ "/src/theme.toml");
|
+ "/src/theme.toml"
|
||||||
xdg.configFile."spotify-player/app.toml".source = (pkgs.formats.toml {}).generate "spotify-player-config" {
|
);
|
||||||
|
xdg.configFile."spotify-player/app.toml".source =
|
||||||
|
(pkgs.formats.toml { }).generate "spotify-player-config"
|
||||||
|
{
|
||||||
client_id = "41af4976ba70474fbd541ee8764a2cda";
|
client_id = "41af4976ba70474fbd541ee8764a2cda";
|
||||||
theme = "Catppuccin-mocha";
|
theme = "Catppuccin-mocha";
|
||||||
enable_notify = false;
|
enable_notify = false;
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
programs.tiny = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
servers = [
|
|
||||||
{
|
|
||||||
addr = "irc.libera.chat";
|
|
||||||
port = 6697;
|
|
||||||
tls = true;
|
|
||||||
realname = "jolheiser";
|
|
||||||
nicks = ["jolheiser"];
|
|
||||||
alias = "LiberaChat";
|
|
||||||
join = ["#gitea" "#gitea-devel"];
|
|
||||||
sasl = {
|
|
||||||
username = "jolheiser";
|
|
||||||
password = {
|
|
||||||
command = "cat /run/agenix/irc-pw";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
defaults = {
|
|
||||||
nicks = ["jolheiser"];
|
|
||||||
realname = "jolheiser";
|
|
||||||
};
|
|
||||||
key_map = {
|
|
||||||
alt_left = "tab_prev";
|
|
||||||
alt_right = "tab_next";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -27,7 +27,10 @@ local cfg = wezterm.config_builder()
|
||||||
cfg.default_prog = { "nu", "--config", "~/.config/nushell/config.nu", "--env-config", "~/.config/nushell/env.nu" }
|
cfg.default_prog = { "nu", "--config", "~/.config/nushell/config.nu", "--env-config", "~/.config/nushell/env.nu" }
|
||||||
cfg.window_close_confirmation = 'NeverPrompt'
|
cfg.window_close_confirmation = 'NeverPrompt'
|
||||||
cfg.window_background_opacity = opacity
|
cfg.window_background_opacity = opacity
|
||||||
cfg.window_decorations = "RESIZE"
|
cfg.window_decorations = "INTEGRATED_BUTTONS|RESIZE"
|
||||||
|
cfg.integrated_title_button_style = "Gnome"
|
||||||
|
cfg.integrated_title_buttons = { "Maximize", "Close" }
|
||||||
|
cfg.font = wezterm.font_with_fallback { "Monaspace Neon", "Iosevka", "Hack" }
|
||||||
cfg.leader = {
|
cfg.leader = {
|
||||||
key = "Space",
|
key = "Space",
|
||||||
mods = "CTRL",
|
mods = "CTRL",
|
||||||
|
|
|
@ -0,0 +1,119 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
zed-fhs = pkgs.buildFHSUserEnv {
|
||||||
|
name = "zed";
|
||||||
|
targetPkgs =
|
||||||
|
pkgs: with pkgs; [
|
||||||
|
zed-editor
|
||||||
|
nixd
|
||||||
|
];
|
||||||
|
runScript = "zed";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = [ zed-fhs ];
|
||||||
|
xdg.configFile = {
|
||||||
|
"zed/settings.json".text = builtins.toJSON {
|
||||||
|
buffer_font_family = "Monaspace Neon";
|
||||||
|
buffer_font_size = 13;
|
||||||
|
soft_wrap = "editor_width";
|
||||||
|
telemetry = {
|
||||||
|
diagnostics = false;
|
||||||
|
metrics = false;
|
||||||
|
};
|
||||||
|
terminal = {
|
||||||
|
font_family = "Monaspace Neon";
|
||||||
|
shell = {
|
||||||
|
program = "nu";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
theme = "Catppuccin Mocha";
|
||||||
|
ui_font_size = 15;
|
||||||
|
vim_mode = false;
|
||||||
|
relative_line_numbers = true;
|
||||||
|
vim = {
|
||||||
|
use_system_clipboard = "always";
|
||||||
|
use_multiline_find = true;
|
||||||
|
};
|
||||||
|
tab_bar.show = false;
|
||||||
|
toolbar = {
|
||||||
|
breadcrumbs = true;
|
||||||
|
quick_actions = false;
|
||||||
|
};
|
||||||
|
assistant = {
|
||||||
|
version = "1";
|
||||||
|
provider.name = "anthropic";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"zed/keymap.json".text =
|
||||||
|
let
|
||||||
|
leader = "space";
|
||||||
|
in
|
||||||
|
builtins.toJSON [
|
||||||
|
{
|
||||||
|
"context" = "Dock || Terminal || Editor";
|
||||||
|
"bindings" = {
|
||||||
|
"ctrl-h" = [
|
||||||
|
"workspace::ActivatePaneInDirection"
|
||||||
|
"Left"
|
||||||
|
];
|
||||||
|
"ctrl-l" = [
|
||||||
|
"workspace::ActivatePaneInDirection"
|
||||||
|
"Right"
|
||||||
|
];
|
||||||
|
"ctrl-k" = [
|
||||||
|
"workspace::ActivatePaneInDirection"
|
||||||
|
"Up"
|
||||||
|
];
|
||||||
|
"ctrl-j" = [
|
||||||
|
"workspace::ActivatePaneInDirection"
|
||||||
|
"Down"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"context" = "Editor && VimControl && !VimWaiting && !menu";
|
||||||
|
"bindings" = {
|
||||||
|
"${leader} b" = "editor::ToggleGitBlame";
|
||||||
|
"${leader} k" = "editor::Hover";
|
||||||
|
"${leader} a" = "editor::ToggleCodeActions";
|
||||||
|
"${leader} l f" = "editor::Format";
|
||||||
|
"${leader} d" = "diagnostics::Deploy";
|
||||||
|
"${leader} f" = "file_finder::Toggle";
|
||||||
|
"${leader} o" = "tab_switcher::Toggle";
|
||||||
|
"${leader} e" = "workspace::ToggleLeftDock";
|
||||||
|
"${leader} /" = "workspace::NewSearch";
|
||||||
|
"n" = "search::SelectNextMatch";
|
||||||
|
"shift-n" = "search::SelectPrevMatch";
|
||||||
|
"${leader} t" = "workspace::NewCenterTerminal";
|
||||||
|
"${leader} c" = "editor::ToggleComments";
|
||||||
|
"${leader} w" = "workspace::Save";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"context" = "Editor && vim_mode == visual && !VimWaiting && !VimObject";
|
||||||
|
"bindings" = {
|
||||||
|
"shift-j" = "editor::MoveLineDown";
|
||||||
|
"shift-k" = "editor::MoveLineUp";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"context" = "Workspace";
|
||||||
|
"bindings" = {
|
||||||
|
"ctrl-z" = "workspace::ToggleZoom";
|
||||||
|
"cmd-k" = [
|
||||||
|
"projects::OpenRecent"
|
||||||
|
{ "create_new_window" = false; }
|
||||||
|
];
|
||||||
|
"ctrl-x" = "tab_switcher::CloseSelectedItem";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"context" = "Terminal";
|
||||||
|
"bindings" = {
|
||||||
|
"cmd-t" = "workspace::NewTerminal";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs.aerc = {
|
programs.aerc = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
|
@ -31,13 +32,15 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
stylesets = {
|
stylesets = {
|
||||||
catppuccin-mocha = builtins.readFile (pkgs.fetchFromGitHub {
|
catppuccin-mocha = builtins.readFile (
|
||||||
|
pkgs.fetchFromGitHub {
|
||||||
owner = "catppuccin";
|
owner = "catppuccin";
|
||||||
repo = "aerc";
|
repo = "aerc";
|
||||||
rev = "c1f233bd22894d7ccf69846c3bd7bcd5af0fc2a2";
|
rev = "c1f233bd22894d7ccf69846c3bd7bcd5af0fc2a2";
|
||||||
sha256 = "sha256-YJdNPROhwgge14O1zuGh/ZK/qjHDxi+xdAyPEIXRI9c=";
|
sha256 = "sha256-YJdNPROhwgge14O1zuGh/ZK/qjHDxi+xdAyPEIXRI9c=";
|
||||||
}
|
}
|
||||||
+ "/dist/catppuccin-mocha");
|
+ "/dist/catppuccin-mocha"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
programs.atuin = {
|
programs.atuin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableNushellIntegration = true;
|
enableNushellIntegration = true;
|
||||||
flags = ["--disable-up-arrow"];
|
flags = [ "--disable-up-arrow" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs.bat = {
|
programs.bat = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = {theme = "ctp-mocha";};
|
config = {
|
||||||
|
theme = "ctp-mocha";
|
||||||
|
};
|
||||||
themes = {
|
themes = {
|
||||||
ctp-mocha = {
|
ctp-mocha = {
|
||||||
src = pkgs.fetchFromGitHub {
|
src = pkgs.fetchFromGitHub {
|
||||||
|
|
|
@ -6,7 +6,14 @@
|
||||||
table_header_color = "#f5e0dc";
|
table_header_color = "#f5e0dc";
|
||||||
all_cpu_color = "#f5e0dc";
|
all_cpu_color = "#f5e0dc";
|
||||||
avg_cpu_color = "#eba0ac";
|
avg_cpu_color = "#eba0ac";
|
||||||
cpu_core_colors = ["#f38ba8" "#fab387" "#f9e2af" "#a6e3a1" "#74c7ec" "#cba6f7"];
|
cpu_core_colors = [
|
||||||
|
"#f38ba8"
|
||||||
|
"#fab387"
|
||||||
|
"#f9e2af"
|
||||||
|
"#a6e3a1"
|
||||||
|
"#74c7ec"
|
||||||
|
"#cba6f7"
|
||||||
|
];
|
||||||
ram_color = "#a6e3a1";
|
ram_color = "#a6e3a1";
|
||||||
swap_color = "#fab387";
|
swap_color = "#fab387";
|
||||||
rx_color = "#a6e3a1";
|
rx_color = "#a6e3a1";
|
||||||
|
@ -22,7 +29,14 @@
|
||||||
high_battery_color = "#a6e3a1";
|
high_battery_color = "#a6e3a1";
|
||||||
medium_battery_color = "#f9e2af";
|
medium_battery_color = "#f9e2af";
|
||||||
low_battery_color = "#f38ba8";
|
low_battery_color = "#f38ba8";
|
||||||
gpu_core_colors = ["#74c7ec" "#cba6f7" "#f38ba8" "#fab387" "#f9e2af" "#a6e3a1"];
|
gpu_core_colors = [
|
||||||
|
"#74c7ec"
|
||||||
|
"#cba6f7"
|
||||||
|
"#f38ba8"
|
||||||
|
"#fab387"
|
||||||
|
"#f9e2af"
|
||||||
|
"#a6e3a1"
|
||||||
|
];
|
||||||
arc_color = "#89dceb";
|
arc_color = "#89dceb";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
|
{ pkgs, config, ... }:
|
||||||
{
|
{
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
./aerc.nix
|
./aerc.nix
|
||||||
./atuin.nix
|
./atuin.nix
|
||||||
|
@ -14,10 +11,13 @@
|
||||||
./go.nix
|
./go.nix
|
||||||
./gpg.nix
|
./gpg.nix
|
||||||
#./helix.nix
|
#./helix.nix
|
||||||
|
./jj.nix
|
||||||
./jq.nix
|
./jq.nix
|
||||||
./lazygit.nix
|
./lazygit.nix
|
||||||
|
./llm.nix
|
||||||
./nushell.nix
|
./nushell.nix
|
||||||
./oh-my-posh.nix
|
./oh-my-posh.nix
|
||||||
|
./senpai.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./xdg.nix
|
./xdg.nix
|
||||||
./zoxide.nix
|
./zoxide.nix
|
||||||
|
@ -36,12 +36,21 @@
|
||||||
ripgrep
|
ripgrep
|
||||||
usql
|
usql
|
||||||
|
|
||||||
|
# Dhall
|
||||||
|
dhall
|
||||||
|
dhall-nix
|
||||||
|
dhall-lsp-server
|
||||||
|
|
||||||
# LSPs
|
# LSPs
|
||||||
gopls
|
gopls
|
||||||
nil
|
nil
|
||||||
|
|
||||||
|
# Jsonnet
|
||||||
|
go-jsonnet
|
||||||
|
jsonnet-language-server
|
||||||
|
|
||||||
# Formatters
|
# Formatters
|
||||||
alejandra
|
nixfmt-rfc-style
|
||||||
gofumpt
|
gofumpt
|
||||||
|
|
||||||
# Flake overlays
|
# Flake overlays
|
||||||
|
@ -52,6 +61,8 @@
|
||||||
jolheiser.helix
|
jolheiser.helix
|
||||||
jolheiser.tmpl
|
jolheiser.tmpl
|
||||||
jolheiser.gomodinit
|
jolheiser.gomodinit
|
||||||
|
jolheiser.cfg
|
||||||
|
jolheiser.spectre
|
||||||
];
|
];
|
||||||
activation.report-changes = config.lib.dag.entryAnywhere ''
|
activation.report-changes = config.lib.dag.entryAnywhere ''
|
||||||
${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff $oldGenPath $newGenPath
|
${pkgs.nvd}/bin/nvd --nix-bin-dir=${pkgs.nix}/bin diff $oldGenPath $newGenPath
|
||||||
|
@ -61,7 +72,7 @@
|
||||||
|
|
||||||
xdg.configFile."gist/config.yaml".text = ''
|
xdg.configFile."gist/config.yaml".text = ''
|
||||||
username: jolheiser
|
username: jolheiser
|
||||||
password-file: /run/agenix/gist-pw
|
password-file: ${config.age.secrets.gist-pw.path}
|
||||||
domain: gist.jojodev.com
|
domain: gist.jojodev.com
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{lib, ...}: {
|
{ lib, ... }:
|
||||||
|
{
|
||||||
programs.eza = {
|
programs.eza = {
|
||||||
enable = true;
|
enable = true;
|
||||||
git = true;
|
git = true;
|
||||||
|
|
|
@ -1,21 +1,30 @@
|
||||||
{config, ...}: let
|
{ pkgs, config, ... }:
|
||||||
key = "0xB853ADA5DA7BBF7A";
|
let
|
||||||
insteadOf = prefix: domain: {
|
insteadOf = prefix: domain: {
|
||||||
"https://${domain}/".insteadOf = "${prefix}:";
|
"https://${domain}/".insteadOf = "${prefix}:";
|
||||||
"git@${domain}:".insteadOf = "ssh:${prefix}:";
|
"git@${domain}:".insteadOf = "ssh:${prefix}:";
|
||||||
};
|
};
|
||||||
in {
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAUxLwkJOlalAHTdkbh+m49XTZGKDqWz1o/o8OLmtQdX";
|
||||||
|
sshSigning = {
|
||||||
|
user.signingkey = key;
|
||||||
|
commit.gpgSign = true;
|
||||||
|
tag.gpgSign = true;
|
||||||
|
gpg = {
|
||||||
|
format = "ssh";
|
||||||
|
ssh.allowedSignersFile = "${pkgs.writeText "allowedSigners" "git@jolheiser.com ${key}"}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = "jolheiser";
|
userName = "jolheiser";
|
||||||
userEmail = "john.olheiser@gmail.com";
|
userEmail = "git@jolheiser.com";
|
||||||
signing = {
|
|
||||||
signByDefault = true;
|
|
||||||
key = key;
|
|
||||||
};
|
|
||||||
aliases = {
|
aliases = {
|
||||||
wt = "worktree";
|
wt = "worktree";
|
||||||
ci = "commit -s -S -m";
|
ci = "commit -s -S -m";
|
||||||
|
ca = "commit --amend";
|
||||||
|
pf = "push --force";
|
||||||
br = "branch";
|
br = "branch";
|
||||||
aa = "add .";
|
aa = "add .";
|
||||||
adog = "log --all --decorate --oneline --graph";
|
adog = "log --all --decorate --oneline --graph";
|
||||||
|
@ -29,7 +38,12 @@ in {
|
||||||
tui = "!lazygit";
|
tui = "!lazygit";
|
||||||
};
|
};
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
ignores = [".idea/" "result" "node_modules" "ve"];
|
ignores = [
|
||||||
|
".idea/"
|
||||||
|
"result"
|
||||||
|
"node_modules"
|
||||||
|
"ve"
|
||||||
|
];
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
merge.conflictstyle = "zdiff3";
|
merge.conflictstyle = "zdiff3";
|
||||||
|
@ -51,25 +65,10 @@ in {
|
||||||
// insteadOf "gt" "gitea.com"
|
// insteadOf "gt" "gitea.com"
|
||||||
// insteadOf "gl" "gitlab.com"
|
// insteadOf "gl" "gitlab.com"
|
||||||
// insteadOf "cb" "codeberg.org";
|
// insteadOf "cb" "codeberg.org";
|
||||||
};
|
} // sshSigning;
|
||||||
delta = {
|
difftastic = {
|
||||||
enable = true;
|
enable = true;
|
||||||
options = {
|
|
||||||
features = "ctp-mocha";
|
|
||||||
navigate = true;
|
|
||||||
light = false;
|
|
||||||
line-numbers = true;
|
|
||||||
side-by-side = true;
|
|
||||||
};
|
};
|
||||||
};
|
includes = [ { inherit (config.age.secrets.git-send-email) path; } ];
|
||||||
includes = [
|
|
||||||
{
|
|
||||||
path = "/run/agenix/git-send-email";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
condition = "gitdir:~/ndlegis/";
|
|
||||||
path = "${config.xdg.configHome}/git/work-config";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
let
|
let
|
||||||
goPath = ".local/share/go";
|
goPath = ".local/share/go";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
programs.go = {
|
programs.go = {
|
||||||
|
inherit goPath;
|
||||||
enable = true;
|
enable = true;
|
||||||
goPath = goPath;
|
|
||||||
goBin = "${goPath}/bin";
|
goBin = "${goPath}/bin";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
key = "0xB853ADA5DA7BBF7A";
|
key = "0xB853ADA5DA7BBF7A";
|
||||||
in {
|
in
|
||||||
home.packages = with pkgs; [pinentry];
|
{
|
||||||
|
home.packages = with pkgs; [ pinentry ];
|
||||||
home.file.".mozilla/native-messaging-hosts/gpgmejson.json" = {
|
home.file.".mozilla/native-messaging-hosts/gpgmejson.json" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
text = builtins.toJSON {
|
text = builtins.toJSON {
|
||||||
|
@ -9,7 +11,7 @@ in {
|
||||||
description = "JavaScript binding for GnuPG";
|
description = "JavaScript binding for GnuPG";
|
||||||
path = pkgs.gpgme.dev + /bin/gpgme-json;
|
path = pkgs.gpgme.dev + /bin/gpgme-json;
|
||||||
type = "stdio";
|
type = "stdio";
|
||||||
allowed_extensions = ["jid1-AQqSMBYb0a8ADg@jetpack"];
|
allowed_extensions = [ "jid1-AQqSMBYb0a8ADg@jetpack" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
programs.gpg = {
|
programs.gpg = {
|
||||||
|
@ -29,9 +31,9 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.gpg-agent = {
|
services.gpg-agent = {
|
||||||
enable = true;
|
enable = false;
|
||||||
enableExtraSocket = true;
|
enableExtraSocket = true;
|
||||||
enableSshSupport = true;
|
enableSshSupport = true;
|
||||||
pinentryFlavor = "gnome3";
|
pinentryPackage = pkgs.pinentry-gnome3;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,20 @@
|
||||||
# This entire file is superceded by https://git.jolheiser.com/helix.drv
|
# This entire file is superceded by https://git.jolheiser.com/helix.drv
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
query = scm:
|
let
|
||||||
builtins.readFile (pkgs.fetchFromGitea {
|
query =
|
||||||
|
scm:
|
||||||
|
builtins.readFile (
|
||||||
|
pkgs.fetchFromGitea {
|
||||||
domain = "git.jojodev.com";
|
domain = "git.jojodev.com";
|
||||||
owner = "jolheiser";
|
owner = "jolheiser";
|
||||||
repo = "templ-helix";
|
repo = "templ-helix";
|
||||||
rev = "2a47b9c5af0fd9ae8bba8198fd66abc6d07fdf10";
|
rev = "2a47b9c5af0fd9ae8bba8198fd66abc6d07fdf10";
|
||||||
sha256 = "sha256-pTdOX9bPup626t+ko6k3Xq/tprAMAZCUBl+xeIBkhfs=";
|
sha256 = "sha256-pTdOX9bPup626t+ko6k3Xq/tprAMAZCUBl+xeIBkhfs=";
|
||||||
}
|
}
|
||||||
+ "/queries/templ/${scm}.scm");
|
+ "/queries/templ/${scm}.scm"
|
||||||
in {
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
|
@ -25,12 +30,16 @@ in {
|
||||||
normal = "block";
|
normal = "block";
|
||||||
select = "underline";
|
select = "underline";
|
||||||
};
|
};
|
||||||
file-picker = {hidden = false;};
|
file-picker = {
|
||||||
|
hidden = false;
|
||||||
|
};
|
||||||
indent-guides = {
|
indent-guides = {
|
||||||
render = true;
|
render = true;
|
||||||
skip-levels = 1;
|
skip-levels = 1;
|
||||||
};
|
};
|
||||||
soft-wrap = {enable = true;};
|
soft-wrap = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
statusline = {
|
statusline = {
|
||||||
right = [
|
right = [
|
||||||
"version-control"
|
"version-control"
|
||||||
|
@ -40,7 +49,9 @@ in {
|
||||||
"file-encoding"
|
"file-encoding"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
lsp = {display-messages = true;};
|
lsp = {
|
||||||
|
display-messages = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
keys = {
|
keys = {
|
||||||
normal = {
|
normal = {
|
||||||
|
@ -56,33 +67,61 @@ in {
|
||||||
S-right = "goto_next_buffer";
|
S-right = "goto_next_buffer";
|
||||||
S-left = "goto_previous_buffer";
|
S-left = "goto_previous_buffer";
|
||||||
C-b = ":buffer-close";
|
C-b = ":buffer-close";
|
||||||
C-s = ["select_all" "select_regex"];
|
C-s = [
|
||||||
|
"select_all"
|
||||||
|
"select_regex"
|
||||||
|
];
|
||||||
|
|
||||||
C-j = "shrink_selection";
|
C-j = "shrink_selection";
|
||||||
C-k = "expand_selection";
|
C-k = "expand_selection";
|
||||||
C-l = "select_next_sibling";
|
C-l = "select_next_sibling";
|
||||||
C-a = "select_all";
|
C-a = "select_all";
|
||||||
C-u = ["half_page_up" "align_view_center"];
|
C-u = [
|
||||||
C-d = ["half_page_down" "align_view_center"];
|
"half_page_up"
|
||||||
|
"align_view_center"
|
||||||
|
];
|
||||||
|
C-d = [
|
||||||
|
"half_page_down"
|
||||||
|
"align_view_center"
|
||||||
|
];
|
||||||
|
|
||||||
"{" = ["goto_prev_paragraph" "collapse_selection"];
|
"{" = [
|
||||||
"}" = ["goto_next_paragraph" "collapse_selection"];
|
"goto_prev_paragraph"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
"}" = [
|
||||||
|
"goto_next_paragraph"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
"0" = "goto_line_start";
|
"0" = "goto_line_start";
|
||||||
"$" = "goto_line_end";
|
"$" = "goto_line_end";
|
||||||
"^" = "goto_first_nonwhitespace";
|
"^" = "goto_first_nonwhitespace";
|
||||||
G = "goto_file_end";
|
G = "goto_file_end";
|
||||||
"%" = "match_brackets";
|
"%" = "match_brackets";
|
||||||
V = ["select_mode" "extend_to_line_bounds"];
|
V = [
|
||||||
C = ["collapse_selection" "extend_to_line_end" "change_selection"];
|
"select_mode"
|
||||||
D = ["extend_to_line_end" "delete_selection"];
|
"extend_to_line_bounds"
|
||||||
|
];
|
||||||
|
C = [
|
||||||
|
"collapse_selection"
|
||||||
|
"extend_to_line_end"
|
||||||
|
"change_selection"
|
||||||
|
];
|
||||||
|
D = [
|
||||||
|
"extend_to_line_end"
|
||||||
|
"delete_selection"
|
||||||
|
];
|
||||||
S = "surround_add";
|
S = "surround_add";
|
||||||
|
|
||||||
d = {
|
d = {
|
||||||
d = ["extend_to_line_bounds" "delete_selection"];
|
d = [
|
||||||
t = ["extend_till_char"];
|
"extend_to_line_bounds"
|
||||||
s = ["surround_delete"];
|
"delete_selection"
|
||||||
i = ["select_textobject_inner"];
|
];
|
||||||
a = ["select_textobject_around"];
|
t = [ "extend_till_char" ];
|
||||||
|
s = [ "surround_delete" ];
|
||||||
|
i = [ "select_textobject_inner" ];
|
||||||
|
a = [ "select_textobject_around" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
x = "delete_selection";
|
x = "delete_selection";
|
||||||
|
@ -101,16 +140,40 @@ in {
|
||||||
"collapse_selection"
|
"collapse_selection"
|
||||||
];
|
];
|
||||||
|
|
||||||
w = ["move_next_word_start" "move_char_right" "collapse_selection"];
|
w = [
|
||||||
e = ["move_next_word_end" "collapse_selection"];
|
"move_next_word_start"
|
||||||
b = ["move_prev_word_start" "collapse_selection"];
|
"move_char_right"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
e = [
|
||||||
|
"move_next_word_end"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
b = [
|
||||||
|
"move_prev_word_start"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
|
||||||
i = ["insert_mode" "collapse_selection"];
|
i = [
|
||||||
a = ["append_mode" "collapse_selection"];
|
"insert_mode"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
a = [
|
||||||
|
"append_mode"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
|
||||||
esc = ["collapse_selection" "keep_primary_selection"];
|
esc = [
|
||||||
|
"collapse_selection"
|
||||||
|
"keep_primary_selection"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
insert = {
|
||||||
|
esc = [
|
||||||
|
"collapse_selection"
|
||||||
|
"normal_mode"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
insert = {esc = ["collapse_selection" "normal_mode"];};
|
|
||||||
select = {
|
select = {
|
||||||
space = {
|
space = {
|
||||||
j = {
|
j = {
|
||||||
|
@ -118,28 +181,60 @@ in {
|
||||||
c = ":pipe jq -c";
|
c = ":pipe jq -c";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"{" = ["extend_to_line_bounds" "goto_prev_paragraph"];
|
"{" = [
|
||||||
"}" = ["extend_to_line_bounds" "goto_next_paragraph"];
|
"extend_to_line_bounds"
|
||||||
|
"goto_prev_paragraph"
|
||||||
|
];
|
||||||
|
"}" = [
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
"goto_next_paragraph"
|
||||||
|
];
|
||||||
"0" = "goto_line_start";
|
"0" = "goto_line_start";
|
||||||
"$" = "goto_line_end";
|
"$" = "goto_line_end";
|
||||||
"^" = "goto_first_nonwhitespace";
|
"^" = "goto_first_nonwhitespace";
|
||||||
G = "goto_file_end";
|
G = "goto_file_end";
|
||||||
D = ["extend_to_line_bounds" "delete_selection" "normal_mode"];
|
D = [
|
||||||
C = ["goto_line_start" "extend_to_line_bounds" "change_selection"];
|
"extend_to_line_bounds"
|
||||||
|
"delete_selection"
|
||||||
|
"normal_mode"
|
||||||
|
];
|
||||||
|
C = [
|
||||||
|
"goto_line_start"
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
"change_selection"
|
||||||
|
];
|
||||||
"%" = "match_brackets";
|
"%" = "match_brackets";
|
||||||
S = "surround_add";
|
S = "surround_add";
|
||||||
|
|
||||||
i = "select_textobject_inner";
|
i = "select_textobject_inner";
|
||||||
a = "select_textobject_around";
|
a = "select_textobject_around";
|
||||||
|
|
||||||
tab = ["insert_mode" "collapse_selection"];
|
tab = [
|
||||||
C-a = ["append_mode" "collapse_selection"];
|
"insert_mode"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
C-a = [
|
||||||
|
"append_mode"
|
||||||
|
"collapse_selection"
|
||||||
|
];
|
||||||
|
|
||||||
k = ["extend_line_up" "extend_to_line_bounds"];
|
k = [
|
||||||
j = ["extend_line_down" "extend_to_line_bounds"];
|
"extend_line_up"
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
];
|
||||||
|
j = [
|
||||||
|
"extend_line_down"
|
||||||
|
"extend_to_line_bounds"
|
||||||
|
];
|
||||||
|
|
||||||
d = ["yank_main_selection_to_clipboard" "delete_selection"];
|
d = [
|
||||||
x = ["yank_main_selection_to_clipboard" "delete_selection"];
|
"yank_main_selection_to_clipboard"
|
||||||
|
"delete_selection"
|
||||||
|
];
|
||||||
|
x = [
|
||||||
|
"yank_main_selection_to_clipboard"
|
||||||
|
"delete_selection"
|
||||||
|
];
|
||||||
y = [
|
y = [
|
||||||
"yank_main_selection_to_clipboard"
|
"yank_main_selection_to_clipboard"
|
||||||
"normal_mode"
|
"normal_mode"
|
||||||
|
@ -156,7 +251,11 @@ in {
|
||||||
p = "replace_selections_with_clipboard";
|
p = "replace_selections_with_clipboard";
|
||||||
P = "paste_clipboard_before";
|
P = "paste_clipboard_before";
|
||||||
|
|
||||||
esc = ["collapse_selection" "keep_primary_selection" "normal_mode"];
|
esc = [
|
||||||
|
"collapse_selection"
|
||||||
|
"keep_primary_selection"
|
||||||
|
"normal_mode"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -172,7 +271,7 @@ in {
|
||||||
name = "lua";
|
name = "lua";
|
||||||
formatter = {
|
formatter = {
|
||||||
command = "luafmt";
|
command = "luafmt";
|
||||||
args = ["--stdin"];
|
args = [ "--stdin" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -180,7 +279,10 @@ in {
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
formatter = {
|
formatter = {
|
||||||
command = "black";
|
command = "black";
|
||||||
args = ["--quiet" "-"];
|
args = [
|
||||||
|
"--quiet"
|
||||||
|
"-"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -188,7 +290,7 @@ in {
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
formatter = {
|
formatter = {
|
||||||
command = "alejandra";
|
command = "alejandra";
|
||||||
args = ["-qq"];
|
args = [ "-qq" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -196,16 +298,16 @@ in {
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
scope = "source.templ";
|
scope = "source.templ";
|
||||||
injection-regex = "templ";
|
injection-regex = "templ";
|
||||||
file-types = ["templ"];
|
file-types = [ "templ" ];
|
||||||
roots = ["go.mod"];
|
roots = [ "go.mod" ];
|
||||||
comment-token = "//";
|
comment-token = "//";
|
||||||
language-server = {
|
language-server = {
|
||||||
command = "templ";
|
command = "templ";
|
||||||
args = ["lsp"];
|
args = [ "lsp" ];
|
||||||
};
|
};
|
||||||
formatter = {
|
formatter = {
|
||||||
command = "templ";
|
command = "templ";
|
||||||
args = ["fmt"];
|
args = [ "fmt" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -222,19 +324,19 @@ in {
|
||||||
themes = {
|
themes = {
|
||||||
catppuccin_frappe_transparent = {
|
catppuccin_frappe_transparent = {
|
||||||
inherits = "catppuccin_frappe";
|
inherits = "catppuccin_frappe";
|
||||||
"ui.background" = {};
|
"ui.background" = { };
|
||||||
};
|
};
|
||||||
catppuccin_latte_transparent = {
|
catppuccin_latte_transparent = {
|
||||||
inherits = "catppuccin_latte";
|
inherits = "catppuccin_latte";
|
||||||
"ui.background" = {};
|
"ui.background" = { };
|
||||||
};
|
};
|
||||||
catppuccin_macchiato_transparent = {
|
catppuccin_macchiato_transparent = {
|
||||||
inherits = "catppuccin_macchiato";
|
inherits = "catppuccin_macchiato";
|
||||||
"ui.background" = {};
|
"ui.background" = { };
|
||||||
};
|
};
|
||||||
catppuccin_mocha_transparent = {
|
catppuccin_mocha_transparent = {
|
||||||
inherits = "catppuccin_mocha";
|
inherits = "catppuccin_mocha";
|
||||||
"ui.background" = {};
|
"ui.background" = { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.jujutsu = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user = {
|
||||||
|
name = "jolheiser";
|
||||||
|
email = "git@jolheiser.com";
|
||||||
|
};
|
||||||
|
ui = {
|
||||||
|
diff.tool = [
|
||||||
|
"${pkgs.difftastic}/bin/difft"
|
||||||
|
"--color=always"
|
||||||
|
"$left"
|
||||||
|
"$right"
|
||||||
|
];
|
||||||
|
editor = "hx";
|
||||||
|
paginate = "never";
|
||||||
|
default-command = "log";
|
||||||
|
};
|
||||||
|
git.push-bookmark-prefix = "change/";
|
||||||
|
signing = {
|
||||||
|
sign-all = true;
|
||||||
|
backend = "ssh";
|
||||||
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAUxLwkJOlalAHTdkbh+m49XTZGKDqWz1o/o8OLmtQdX";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1 +1 @@
|
||||||
{programs.jq.enable = true;}
|
{ programs.jq.enable = true; }
|
||||||
|
|
|
@ -6,14 +6,17 @@
|
||||||
update.method = "never";
|
update.method = "never";
|
||||||
gui.theme = {
|
gui.theme = {
|
||||||
lightTheme = false;
|
lightTheme = false;
|
||||||
activeBorderColor = ["#a6e3a1" "bold"];
|
activeBorderColor = [
|
||||||
inactiveBorderColor = ["#cdd6f4"];
|
"#a6e3a1"
|
||||||
optionsTextColor = ["#89b4fa"];
|
"bold"
|
||||||
selectedLineBgColor = ["#313244"];
|
];
|
||||||
selectedRangeBgColor = ["#313244"];
|
inactiveBorderColor = [ "#cdd6f4" ];
|
||||||
cherryPickedCommitBgColor = ["#94e2d5"];
|
optionsTextColor = [ "#89b4fa" ];
|
||||||
cherryPickedCommitFgColor = ["#89b4fa"];
|
selectedLineBgColor = [ "#313244" ];
|
||||||
unstagedChangesColor = ["#f38ba8"];
|
selectedRangeBgColor = [ "#313244" ];
|
||||||
|
cherryPickedCommitBgColor = [ "#94e2d5" ];
|
||||||
|
cherryPickedCommitFgColor = [ "#89b4fa" ];
|
||||||
|
unstagedChangesColor = [ "#f38ba8" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
claude =
|
||||||
|
let
|
||||||
|
inherit (pkgs) fetchFromGitHub nix-update-script python3Packages;
|
||||||
|
inherit (python3Packages)
|
||||||
|
buildPythonPackage
|
||||||
|
setuptools
|
||||||
|
anthropic
|
||||||
|
llm
|
||||||
|
pytestCheckHook
|
||||||
|
pytest
|
||||||
|
pytest-recording
|
||||||
|
;
|
||||||
|
in
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "llm-claude-3";
|
||||||
|
version = "0.4";
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "simonw";
|
||||||
|
repo = "llm-claude-3";
|
||||||
|
rev = "refs/tags/${version}";
|
||||||
|
hash = "sha256-5qF5BK319PNzB4XsLdYvtyq/SxBDdHJ9IoKWEnvNRp4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
build-system = [ setuptools ];
|
||||||
|
buildInputs = [ llm ];
|
||||||
|
dependencies = [ anthropic ];
|
||||||
|
optional-dependencies = {
|
||||||
|
test = [
|
||||||
|
pytest
|
||||||
|
pytest-recording
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Test suite requires network access to talk to Claude (duh).
|
||||||
|
nativeCheckInputs = [ pytestCheckHook ];
|
||||||
|
doCheck = false;
|
||||||
|
pythonImportsCheck = [ "llm_claude_3" ];
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "LLM plugin for interacting with the Claude 3 family of models";
|
||||||
|
homepage = "https://github.com/simonw/llm-claude-3";
|
||||||
|
license = lib.licenses.asl20;
|
||||||
|
maintainers = with lib.maintainers; [ jkachmar ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pyWithPackages = (
|
||||||
|
pkgs.python3.withPackages (py: [
|
||||||
|
py.llm
|
||||||
|
claude
|
||||||
|
])
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.runCommand "llm" { } ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
ln -s ${pyWithPackages}/bin/llm $out/bin/llm
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
}
|
|
@ -1,8 +1,5 @@
|
||||||
|
{ pkgs, config, ... }:
|
||||||
{
|
{
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.nushell = {
|
programs.nushell = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configFile.source = ./nushell/config.nu;
|
configFile.source = ./nushell/config.nu;
|
||||||
|
@ -33,7 +30,7 @@
|
||||||
};
|
};
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"nushell/jolheiser.nu".source = ./nushell/jolheiser.nu;
|
"nushell/jolheiser.nu".source = ./nushell/jolheiser.nu;
|
||||||
"nushell/zoxide.nu".source = ./nushell/zoxide.nu;
|
"nushell/ssh.nu".source = ./nushell/ssh.nu;
|
||||||
"nushell/ohmyposh.nu".source = ./nushell/ohmyposh.nu;
|
"nushell/ohmyposh.nu".source = ./nushell/ohmyposh.nu;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,13 +393,39 @@ $env.config = {
|
||||||
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto
|
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto
|
||||||
}
|
}
|
||||||
color_config: $dark_theme # if you want a light theme, replace `$dark_theme` to `$light_theme`
|
color_config: $dark_theme # if you want a light theme, replace `$dark_theme` to `$light_theme`
|
||||||
use_grid_icons: true
|
footer_mode: 25 # always, never, number_of_rows, auto
|
||||||
footer_mode: "25" # always, never, number_of_rows, auto
|
|
||||||
float_precision: 2
|
float_precision: 2
|
||||||
# buffer_editor: "emacs" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
|
# buffer_editor: "emacs" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
|
||||||
use_ansi_coloring: true
|
use_ansi_coloring: true
|
||||||
edit_mode: emacs # emacs, vi
|
edit_mode: emacs # emacs, vi
|
||||||
shell_integration: true # enables terminal markers and a workaround to arrow keys stop working issue
|
shell_integration: {
|
||||||
|
# osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title
|
||||||
|
osc2: true
|
||||||
|
# osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory
|
||||||
|
osc7: true
|
||||||
|
# osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8
|
||||||
|
osc8: true
|
||||||
|
# osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal
|
||||||
|
osc9_9: false
|
||||||
|
# osc133 is several escapes invented by Final Term which include the supported ones below.
|
||||||
|
# 133;A - Mark prompt start
|
||||||
|
# 133;B - Mark prompt end
|
||||||
|
# 133;C - Mark pre-execution
|
||||||
|
# 133;D;exit - Mark execution finished with exit code
|
||||||
|
# This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is
|
||||||
|
osc133: true
|
||||||
|
# osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features
|
||||||
|
# 633;A - Mark prompt start
|
||||||
|
# 633;B - Mark prompt end
|
||||||
|
# 633;C - Mark pre-execution
|
||||||
|
# 633;D;exit - Mark execution finished with exit code
|
||||||
|
# 633;E - NOT IMPLEMENTED - Explicitly set the command line with an optional nonce
|
||||||
|
# 633;P;Cwd=<path> - Mark the current working directory and communicate it to the terminal
|
||||||
|
# and also helps with the run recent menu in vscode
|
||||||
|
osc633: true
|
||||||
|
# reset_application_mode is escape \x1b[?1l and was added to help ssh work better
|
||||||
|
reset_application_mode: true
|
||||||
|
}
|
||||||
show_banner: false # true or false to enable or disable the banner
|
show_banner: false # true or false to enable or disable the banner
|
||||||
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
|
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
|
||||||
|
|
||||||
|
|
|
@ -69,9 +69,36 @@ def gomodsri [] {
|
||||||
echo 'nixpkgs.lib.fileContents ./go.mod.sri'
|
echo 'nixpkgs.lib.fileContents ./go.mod.sri'
|
||||||
}
|
}
|
||||||
|
|
||||||
## Other ##
|
def q [
|
||||||
$env.EDITOR = hx
|
--debug # Debug mode, only echo query
|
||||||
$env.config = ($env.config | upsert "shell_integration" ("WEZTERM_PANE" not-in $env and "SSH_CLIENT" not-in $env))
|
...args: string
|
||||||
source ~/.config/nushell/zoxide.nu
|
] {
|
||||||
source ~/.config/nushell/ohmyposh.nu
|
let input = $in
|
||||||
|
mut query = $args | str join ' '
|
||||||
|
if ($input | is-not-empty) {
|
||||||
|
$query = $"($query)\n\n($input)"
|
||||||
|
}
|
||||||
|
if ($debug) {
|
||||||
|
print $query
|
||||||
|
return
|
||||||
|
}
|
||||||
|
^llm -s "Answer in as few words as possible. Use a brief style with short replies." -m claude-3.5-sonnet $"($query)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run a command if known, otherwise run it with nix
|
||||||
|
def , [
|
||||||
|
cmd: string # The command to run
|
||||||
|
...args: string # Command arguments; all flags MUST be quoted
|
||||||
|
] {
|
||||||
|
if (not (which $cmd | is-empty)) {
|
||||||
|
^$cmd ...$args
|
||||||
|
return
|
||||||
|
}
|
||||||
|
^nix run $"nixpkgs#($cmd)" -- ...$args
|
||||||
|
}
|
||||||
|
|
||||||
|
## Other ##
|
||||||
|
$env.EDITOR = 'hx'
|
||||||
|
$env.SSH_AUTH_SOCK = '/run/user/1000/ssh-agent'
|
||||||
|
source ~/.config/nushell/ohmyposh.nu
|
||||||
|
source ~/.config/nushell/ssh.nu
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
export extern "ssh" [
|
||||||
|
destination?: string@"nu-complete ssh-host"
|
||||||
|
-4 # Forces ssh to use IPv4 addresses only.
|
||||||
|
-6 # Forces ssh to use IPv6 addresses only.
|
||||||
|
-A # Enables forwarding of connections from an authentication agent such as ssh-agent(1).
|
||||||
|
-a # Disables forwarding of the authentication agent connection.
|
||||||
|
-B: string # bind_interface
|
||||||
|
-b: string # bind_address
|
||||||
|
-C # Requests compression of all data
|
||||||
|
-c: string # cipher_spec
|
||||||
|
-D # [bind_address:]port
|
||||||
|
-E: string # log_file
|
||||||
|
-e # escape_char
|
||||||
|
-F: string # configfile
|
||||||
|
-f # Requests ssh to go to background just before command execution.
|
||||||
|
-G # Causes ssh to print its configuration after evaluating Host and Match blocks and exit.
|
||||||
|
-g # Allows remote hosts to connect to local forwarded ports
|
||||||
|
-I: string # pkcs11
|
||||||
|
-i: string@"nu-complete ssh-identity" # identity_file
|
||||||
|
-J: string # destination
|
||||||
|
-K # Enables GSSAPI-based authentication and forwarding(delegation) of GSSAPI credentials to the server.
|
||||||
|
-k # Disables forwarding (delegation) of GSSAPI credentials to the server.
|
||||||
|
-L: string # [bind_address:]port:host:hostport / [bind_address:]port:remote_socket / local_socket:host:hostport / local_socket:remote_socket
|
||||||
|
-l: string # login_name
|
||||||
|
-M # Places the ssh client into “master” mode for connection sharing.
|
||||||
|
-m: string # mac_spec
|
||||||
|
-N # Do not execute a remote command.
|
||||||
|
-n # Redirects stdin from /dev/null (5) for details.
|
||||||
|
-O: string # ctl_cmd
|
||||||
|
-o: string # option
|
||||||
|
]
|
||||||
|
|
||||||
|
def parse-host [file: string] {
|
||||||
|
let lines = $file | open | lines | str trim
|
||||||
|
|
||||||
|
mut result = []
|
||||||
|
for $line in $lines {
|
||||||
|
let data = $line | parse --regex '^Include\s+(?<file>.+)'
|
||||||
|
if ($data | is-not-empty) {
|
||||||
|
let include = parse-host ($data.file | first)
|
||||||
|
$result = ($result | append $include)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
let data = $line | parse --regex '^Host\s+(?<host>.+)'
|
||||||
|
if ($data | is-not-empty) {
|
||||||
|
let host = $data.host | first
|
||||||
|
if ($host == '*') {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
$result = ($result | append { 'value': $host, 'description': "" })
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let data = $line | parse --regex '^HostName\s+(?<hostname>.+)'
|
||||||
|
if ($data | is-not-empty) {
|
||||||
|
let last = $result | last | update 'description' ($data.hostname | first)
|
||||||
|
$result = ($result | drop | append $last)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result
|
||||||
|
}
|
||||||
|
|
||||||
|
def "nu-complete ssh-host" [] {
|
||||||
|
mut files = [
|
||||||
|
'/etc/ssh/ssh_config',
|
||||||
|
'~/.ssh/config'
|
||||||
|
] | filter { |file| $file | path exists }
|
||||||
|
|
||||||
|
|
||||||
|
$files | each { |file|
|
||||||
|
parse-host $file
|
||||||
|
} | flatten
|
||||||
|
}
|
||||||
|
|
||||||
|
def "nu-complete ssh-identity" [] {
|
||||||
|
ls ~/.ssh/
|
||||||
|
| where {|f|
|
||||||
|
($f.name | path parse | get extension) == "pub"
|
||||||
|
}
|
||||||
|
| get name
|
||||||
|
| path parse
|
||||||
|
| each {|p| {'value': $'~/.ssh/($p.stem)', 'description': $p.stem} }
|
||||||
|
}
|
||||||
|
|
||||||
|
export def ssh-add-all [] {
|
||||||
|
nu-complete ssh-identity
|
||||||
|
| each {|s| print $s.value; ^ssh-add ($s.value | path expand); print '' }
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
# Code generated by zoxide. DO NOT EDIT.
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
#
|
|
||||||
# Hook configuration for zoxide.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Initialize hook to add new entries to the database.
|
|
||||||
if (not ($env | default false __zoxide_hooked | get __zoxide_hooked)) {
|
|
||||||
$env.__zoxide_hooked = true
|
|
||||||
$env.config = ($env | default {} config).config
|
|
||||||
$env.config = ($env.config | default {} hooks)
|
|
||||||
$env.config = ($env.config | update hooks ($env.config.hooks | default {} env_change))
|
|
||||||
$env.config = ($env.config | update hooks.env_change ($env.config.hooks.env_change | default [] PWD))
|
|
||||||
$env.config = ($env.config | update hooks.env_change.PWD ($env.config.hooks.env_change.PWD | append {|_, dir|
|
|
||||||
zoxide add -- $dir
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
#
|
|
||||||
# When using zoxide with --no-cmd, alias these internal functions as desired.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Jump to a directory using only keywords.
|
|
||||||
def --env __zoxide_z [...rest:string] {
|
|
||||||
let arg0 = ($rest | append '~').0
|
|
||||||
let path = if (($rest | length) <= 1) and ($arg0 == '-' or ($arg0 | path expand | path type) == dir) {
|
|
||||||
$arg0
|
|
||||||
} else {
|
|
||||||
(zoxide query --exclude $env.PWD -- $rest | str trim -r -c "\n")
|
|
||||||
}
|
|
||||||
cd $path
|
|
||||||
}
|
|
||||||
|
|
||||||
# Jump to a directory using interactive search.
|
|
||||||
def --env __zoxide_zi [...rest:string] {
|
|
||||||
cd $'(zoxide query --interactive -- $rest | str trim -r -c "\n")'
|
|
||||||
}
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
#
|
|
||||||
# Commands for zoxide. Disable these using --no-cmd.
|
|
||||||
#
|
|
||||||
|
|
||||||
alias z = __zoxide_z
|
|
||||||
alias zi = __zoxide_zi
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
#
|
|
||||||
# Add this to your env file (find it by running `$nu.env-path` in Nushell):
|
|
||||||
#
|
|
||||||
# zoxide init nushell | save -f ~/.zoxide.nu
|
|
||||||
#
|
|
||||||
# Now, add this to the end of your config file (find it by running
|
|
||||||
# `$nu.config-path` in Nushell):
|
|
||||||
#
|
|
||||||
# source ~/.zoxide.nu
|
|
||||||
#
|
|
||||||
# Note: zoxide only supports Nushell v0.73.0 and above.
|
|
|
@ -1,8 +1,152 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
unicode = x: builtins.fromJSON ''"${x}"'';
|
||||||
|
script = pkgs.writeShellApplication {
|
||||||
|
name = "jj-prompt";
|
||||||
|
runtimeInputs = [ pkgs.jujutsu ];
|
||||||
|
text =
|
||||||
|
let
|
||||||
|
bookmarkMax = 10;
|
||||||
|
tagMax = 10;
|
||||||
|
descriptionMax = 24;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
jj log -r@ -n1 --ignore-working-copy --no-graph --color never -T '
|
||||||
|
separate(" ",
|
||||||
|
bookmarks.map(|x| if(
|
||||||
|
x.name().substr(0, ${builtins.toString bookmarkMax}).starts_with(x.name()),
|
||||||
|
" " ++ x.name().substr(0, ${builtins.toString bookmarkMax}),
|
||||||
|
" " ++ x.name().substr(0, ${builtins.toString (bookmarkMax - 1)}) ++ "…")
|
||||||
|
).join(" "),
|
||||||
|
tags.map(|x| if(
|
||||||
|
x.name().substr(0, ${builtins.toString tagMax}).starts_with(x.name()),
|
||||||
|
" " ++ x.name().substr(0, ${builtins.toString tagMax}),
|
||||||
|
" " ++ x.name().substr(0, ${builtins.toString (tagMax - 1)}) ++ "…")
|
||||||
|
).join(" "),
|
||||||
|
if(
|
||||||
|
description.first_line().substr(0, ${builtins.toString descriptionMax}).starts_with(description.first_line()),
|
||||||
|
" " ++ description.first_line().substr(0, ${builtins.toString descriptionMax}),
|
||||||
|
" " ++ description.first_line().substr(0, ${
|
||||||
|
builtins.toString (descriptionMax - 1)
|
||||||
|
}) ++ "…"
|
||||||
|
),
|
||||||
|
"•",
|
||||||
|
change_id.shortest(),
|
||||||
|
commit_id.shortest(),
|
||||||
|
if(empty, "(empty)"),
|
||||||
|
if(conflict, "(conflict)"),
|
||||||
|
if(divergent, "(divergent)"),
|
||||||
|
if(hidden, "(hidden)"),
|
||||||
|
)
|
||||||
|
'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.oh-my-posh = {
|
programs.oh-my-posh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings =
|
settings = {
|
||||||
builtins.fromJSON (builtins.unsafeDiscardStringContext
|
"$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json";
|
||||||
(builtins.readFile ./ohmyposh/config.json));
|
blocks = [
|
||||||
|
{
|
||||||
|
alignment = "left";
|
||||||
|
segments = [
|
||||||
|
{
|
||||||
|
background = "p:lavender";
|
||||||
|
foreground = "p:black";
|
||||||
|
leading_diamond = unicode "\\ue0b6";
|
||||||
|
properties = {
|
||||||
|
display_host = false;
|
||||||
|
};
|
||||||
|
style = "diamond";
|
||||||
|
template = " {{ if .SSHSession }}${unicode "\\udb80\\udf18"} {{ end }}{{ if .Env.IN_NIX_SHELL }}${unicode "\\udb84\\udd05"} {{ end }}{{ .UserName }}@{{ .HostName }} ";
|
||||||
|
trailing_diamond = unicode "\\ue0b0";
|
||||||
|
type = "session";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
background = "p:orange";
|
||||||
|
foreground = "p:black";
|
||||||
|
powerline_symbol = unicode "\\ue0b0";
|
||||||
|
properties = {
|
||||||
|
home_icon = "~";
|
||||||
|
style = "folder";
|
||||||
|
};
|
||||||
|
style = "powerline";
|
||||||
|
template = " ${unicode "\\ue613"} {{ path .Path .Location }} ";
|
||||||
|
type = "path";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
background = "p:green";
|
||||||
|
background_templates = [
|
||||||
|
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}"
|
||||||
|
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}"
|
||||||
|
"{{ if gt .Ahead 0 }}#49416D{{ end }}"
|
||||||
|
"{{ if gt .Behind 0 }}#7A306C{{ end }}"
|
||||||
|
];
|
||||||
|
foreground = "p:black";
|
||||||
|
foreground_templates = [
|
||||||
|
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:black{{ end }}"
|
||||||
|
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:white{{ end }}"
|
||||||
|
"{{ if gt .Ahead 0 }}p:white{{ end }}"
|
||||||
|
];
|
||||||
|
powerline_symbol = unicode "\\ue0b0";
|
||||||
|
properties = {
|
||||||
|
branch_max_length = 25;
|
||||||
|
fetch_status = true;
|
||||||
|
fetch_upstream_icon = true;
|
||||||
|
git_icon = unicode "\\ue702";
|
||||||
|
github_icon = unicode "\\uf408";
|
||||||
|
upstream_icons = {
|
||||||
|
"codeberg.org" = unicode "\\ue2a6";
|
||||||
|
"git.jojodev.com" = unicode "\\udb83\\udd9e";
|
||||||
|
"gitea.com" = unicode "\\udb83\\udd9e";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = "powerline";
|
||||||
|
template = "{{ if not (glob \".jj\")}} {{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }} {{ end }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} ${unicode "\\uf044"} {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} ${unicode "\\uf046"} {{ .Staging.String }}{{ end }} {{ end }}";
|
||||||
|
type = "git";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
background = "p:green";
|
||||||
|
foreground = "p:black";
|
||||||
|
powerline_symbol = unicode "\\ue0b0";
|
||||||
|
properties = {
|
||||||
|
script = "${script}/bin/jj-prompt";
|
||||||
|
};
|
||||||
|
style = "powerline";
|
||||||
|
template = "{{ if (glob \".jj\")}} {{ .Output }} {{ end }}";
|
||||||
|
type = "command";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
background = "p:blue";
|
||||||
|
background_templates = [ "{{ if gt .Code 0 }}p:red{{ end }}" ];
|
||||||
|
foreground = "p:black";
|
||||||
|
leading_diamond = "<transparent,background>${unicode "\\ue0b0"}</>";
|
||||||
|
properties = {
|
||||||
|
always_enabled = true;
|
||||||
|
};
|
||||||
|
style = "diamond";
|
||||||
|
template = " {{ if gt .Code 0 }}${unicode "\\uf00d"}{{ else }}${unicode "\\uf00c"}{{ end }} ";
|
||||||
|
trailing_diamond = unicode "\\ue0b4";
|
||||||
|
type = "exit";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
type = "prompt";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
console_title_template = "{{ .Folder }}";
|
||||||
|
final_space = true;
|
||||||
|
palette = {
|
||||||
|
black = "#1E1E1E";
|
||||||
|
blue = "#89B4FA";
|
||||||
|
green = "#A6E3A1";
|
||||||
|
lavender = "#B4BEFE";
|
||||||
|
orange = "#FAB387";
|
||||||
|
red = "#F38BA8";
|
||||||
|
white = "#CDD6F4";
|
||||||
|
yellow = "#F9E2AF";
|
||||||
|
};
|
||||||
|
version = 2;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,95 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
|
|
||||||
"blocks": [
|
|
||||||
{
|
|
||||||
"alignment": "left",
|
|
||||||
"segments": [
|
|
||||||
{
|
|
||||||
"background": "p:lavender",
|
|
||||||
"foreground": "p:black",
|
|
||||||
"leading_diamond": "\ue0b6",
|
|
||||||
"properties": {
|
|
||||||
"display_host": false
|
|
||||||
},
|
|
||||||
"style": "diamond",
|
|
||||||
"template": " {{ if .SSHSession }}\udb80\udf18 {{ end }}{{ if .Env.IN_NIX_SHELL }}\udb84\udd05 {{ end }}{{ .UserName }}@{{ .HostName }} ",
|
|
||||||
"trailing_diamond": "\ue0b0",
|
|
||||||
"type": "session"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "p:orange",
|
|
||||||
"foreground": "p:black",
|
|
||||||
"powerline_symbol": "\ue0b0",
|
|
||||||
"properties": {
|
|
||||||
"home_icon": "~",
|
|
||||||
"style": "folder"
|
|
||||||
},
|
|
||||||
"style": "powerline",
|
|
||||||
"template": " \ue613 {{ path .Path .Location }} ",
|
|
||||||
"type": "path"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "p:green",
|
|
||||||
"background_templates": [
|
|
||||||
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}",
|
|
||||||
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}",
|
|
||||||
"{{ if gt .Ahead 0 }}#49416D{{ end }}",
|
|
||||||
"{{ if gt .Behind 0 }}#7A306C{{ end }}"
|
|
||||||
],
|
|
||||||
"foreground": "p:black",
|
|
||||||
"foreground_templates": [
|
|
||||||
"{{ if or (.Working.Changed) (.Staging.Changed) }}p:black{{ end }}",
|
|
||||||
"{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:white{{ end }}",
|
|
||||||
"{{ if gt .Ahead 0 }}p:white{{ end }}"
|
|
||||||
],
|
|
||||||
"powerline_symbol": "\ue0b0",
|
|
||||||
"properties": {
|
|
||||||
"branch_max_length": 25,
|
|
||||||
"fetch_status": true,
|
|
||||||
"fetch_upstream_icon": true,
|
|
||||||
"github_icon": "\uf408",
|
|
||||||
"git_icon": "\ue702",
|
|
||||||
"upstream_icons": {
|
|
||||||
"gitea.com": "\udb83\udd9e",
|
|
||||||
"git.jojodev.com": "\udb83\udd9e",
|
|
||||||
"codeberg.org": "\ue2a6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"style": "powerline",
|
|
||||||
"template": " {{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }} {{ end }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} \uf044 {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} \uf046 {{ .Staging.String }}{{ end }} ",
|
|
||||||
"type": "git"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"background": "p:blue",
|
|
||||||
"background_templates": [
|
|
||||||
"{{ if gt .Code 0 }}p:red{{ end }}"
|
|
||||||
],
|
|
||||||
"foreground": "p:black",
|
|
||||||
"leading_diamond": "<transparent,background>\ue0b0</>",
|
|
||||||
"properties": {
|
|
||||||
"always_enabled": true
|
|
||||||
},
|
|
||||||
"style": "diamond",
|
|
||||||
"template": " {{ if gt .Code 0 }}\uf00d{{ else }}\uf00c{{ end }} ",
|
|
||||||
"trailing_diamond": "\ue0b4",
|
|
||||||
"type": "exit"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "prompt"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"console_title_template": "{{ .Folder }}",
|
|
||||||
"final_space": true,
|
|
||||||
"palette": {
|
|
||||||
"black": "#1E1E1E",
|
|
||||||
"blue": "#89B4FA",
|
|
||||||
"green": "#A6E3A1",
|
|
||||||
"orange": "#FAB387",
|
|
||||||
"red": "#F38BA8",
|
|
||||||
"white": "#CDD6F4",
|
|
||||||
"yellow": "#F9E2AF",
|
|
||||||
"lavender": "#B4BEFE"
|
|
||||||
},
|
|
||||||
"version": 2
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
programs.senpai = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
address = "ircs+insecure://irc.jolheiser.com:6697";
|
||||||
|
nickname = "jolheiser";
|
||||||
|
password-cmd = [
|
||||||
|
"cat"
|
||||||
|
"${config.age.secrets.irc-pw.path}"
|
||||||
|
];
|
||||||
|
#channel = "#pico.sh #gitea";
|
||||||
|
typings = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,9 +1,8 @@
|
||||||
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
includes = [
|
includes = [ config.age.secrets.ssh-config.path ];
|
||||||
"/run/agenix/ssh-config"
|
|
||||||
"/run/agenix/ssh-config-work"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
services.ssh-agent.enable = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
xdg = {
|
xdg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userDirs.enable = true;
|
userDirs.enable = true;
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
{
|
{
|
||||||
programs.zoxide = {
|
programs.zoxide = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# TODO remove once zoxide is updated for new nushell def --env syntax
|
|
||||||
enableNushellIntegration = false;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
589
flake.lock
589
flake.lock
|
@ -1,19 +1,40 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"actual": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728580104,
|
||||||
|
"narHash": "sha256-M+t/DmOj4cjF7/M9qBW5OK/Lam69z4LX+hXraqegz0w=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "befcf0b6e2b9540f01b5caaafcbe62fcf36a063a",
|
||||||
|
"revCount": 16,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xeno.science/xenofem/actual-nix.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.xeno.science/xenofem/actual-nix.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
"agenix": {
|
"agenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": [],
|
"darwin": [],
|
||||||
"home-manager": [],
|
"home-manager": [],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701216516,
|
"lastModified": 1723293904,
|
||||||
"narHash": "sha256-jKSeJn+7hZ1dZdiH1L+NWUGT2i/BGomKAJ54B9kT06Q=",
|
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "13ac9ac6d68b9a0896e3d43a082947233189e247",
|
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -22,25 +43,128 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat": {
|
"bennet": {
|
||||||
"flake": false,
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696426674,
|
"lastModified": 1720757073,
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
"narHash": "sha256-URQMDzLPs5kckDybkMqrKZN2aqt0GvAt9V5NT4kpMW8=",
|
||||||
"owner": "edolstra",
|
"ref": "refs/heads/main",
|
||||||
"repo": "flake-compat",
|
"rev": "bd7287aa0d13d5af400f659963655c004789715f",
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
"revCount": 4,
|
||||||
"type": "github"
|
"type": "git",
|
||||||
|
"url": "https://git.jolheiser.com/bennet.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "edolstra",
|
"type": "git",
|
||||||
"repo": "flake-compat",
|
"url": "https://git.jolheiser.com/bennet.git"
|
||||||
"type": "github"
|
}
|
||||||
|
},
|
||||||
|
"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": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1721703140,
|
||||||
|
"narHash": "sha256-SxxJm6b8xrlp3+ucPc65XrMgm42ITi1ULg7Wk9YwA5w=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "5edec76b62d532dbb0e67a427b43377277660ad2",
|
||||||
|
"revCount": 9,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.jolheiser.com/cfg.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"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-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726560853,
|
||||||
|
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705309234,
|
||||||
|
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694529238,
|
"lastModified": 1694529238,
|
||||||
|
@ -56,7 +180,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1667395993,
|
"lastModified": 1667395993,
|
||||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||||
|
@ -71,6 +195,44 @@
|
||||||
"type": "github"
|
"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",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"zig": "zig"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728604055,
|
||||||
|
"narHash": "sha256-qFzvnwoWhGob+Huh3RlCxC+j16uF0LQKKV4dJxY4nDQ=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "c26d1cb28eb5491e05ccbcff075a0eedd09ebaaa",
|
||||||
|
"revCount": 7679,
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://git@github.com/ghostty-org/ghostty"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "ssh://git@github.com/ghostty-org/ghostty"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gist": {
|
"gist": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -114,6 +276,26 @@
|
||||||
"url": "https://git.jolheiser.com/git-age.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": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -122,11 +304,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694102001,
|
"lastModified": 1709087332,
|
||||||
"narHash": "sha256-vky6VPK1n1od6vXbqzOXnekrQpTL4hbPAwUhT5J9c9E=",
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "gitignore.nix",
|
"repo": "gitignore.nix",
|
||||||
"rev": "9e21c80adf67ebcb077d75bd5e7d724d21eeafd6",
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -145,11 +327,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700065600,
|
"lastModified": 1726797346,
|
||||||
"narHash": "sha256-w/Dfwe7ejbIQgRmpT/B54dUH0urxX9S1lFxr0OFhJpY=",
|
"narHash": "sha256-Sj9WrvoV+U1YSYriUD/M+Q5tmQDGbJDXsqrFzqKTPc4=",
|
||||||
"owner": "tailscale",
|
"owner": "tailscale",
|
||||||
"repo": "golink",
|
"repo": "golink",
|
||||||
"rev": "c9212a47dee502e850c5fb36d8ac5fdfdb30ac6c",
|
"rev": "b3ab9a617620fb9be7b589ae3fee5f12e8b205a7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -170,11 +352,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694616124,
|
"lastModified": 1725515722,
|
||||||
"narHash": "sha256-c49BVhQKw3XDRgt+y+uPAbArtgUlMXCET6VxEBmzHXE=",
|
"narHash": "sha256-+gljgHaflZhQXtr3WjJrGn8NXv7MruVPAORSufuCFnw=",
|
||||||
"owner": "tweag",
|
"owner": "tweag",
|
||||||
"repo": "gomod2nix",
|
"repo": "gomod2nix",
|
||||||
"rev": "f95720e89af6165c8c0aa77f180461fe786f3c21",
|
"rev": "1c6fd4e862bf2f249c9114ad625c64c6c29a8a08",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -183,6 +365,28 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gomod2nix_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_3",
|
||||||
|
"nixpkgs": [
|
||||||
|
"templ",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722589758,
|
||||||
|
"narHash": "sha256-sbbA8b6Q2vB/t/r1znHawoXLysCyD4L/6n6/RykiSnA=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "gomod2nix",
|
||||||
|
"rev": "4e08ca09253ef996bd4c03afa383b23e35fe28a1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "gomod2nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gomodinit": {
|
"gomodinit": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -190,11 +394,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1703207093,
|
"lastModified": 1709873986,
|
||||||
"narHash": "sha256-rP9yqEogOJvro4GLysAOx7jgWL4TU0mydRCgK13spkw=",
|
"narHash": "sha256-58zWfVOlqDLXy2BI/o/cnyhtEsdRfA4CGxstPgG2xPQ=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "6686d6491326ec79522d262ea150602d6bcb6c7a",
|
"rev": "14884cafd8d4267777b40a3c13e3973ec9a81cf2",
|
||||||
"revCount": 5,
|
"revCount": 9,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jolheiser.com/gomodinit.git"
|
"url": "https://git.jolheiser.com/gomodinit.git"
|
||||||
},
|
},
|
||||||
|
@ -206,15 +410,16 @@
|
||||||
"helix": {
|
"helix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
"jolheiser",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1699390779,
|
"lastModified": 1727295896,
|
||||||
"narHash": "sha256-KOeRnuJm+iUpY16+ahJeePw0Bwxov7bZYwOOgNgZmOs=",
|
"narHash": "sha256-zubPN05Q3w01HAnPvYdPQOd7nvtPZSYwHWv9f755eIE=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "20a5d8a2ee8a8f5b6a8d0212a2eb5c9fb623750c",
|
"rev": "a6f4760ef56ffb5f8d39d322c7b0b6f1eeb97f02",
|
||||||
"revCount": 12,
|
"revCount": 21,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jolheiser.com/helix.drv.git"
|
"url": "https://git.jolheiser.com/helix.drv.git"
|
||||||
},
|
},
|
||||||
|
@ -230,11 +435,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701433070,
|
"lastModified": 1728650932,
|
||||||
"narHash": "sha256-Gf9JStfENaUQ7YWFz3V7x/srIwr4nlnVteqaAxtwpgM=",
|
"narHash": "sha256-mGKzqdsRyLnGNl6WjEr7+sghGgBtYHhJQ4mjpgRTCsU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "4a8545f5e737a6338814a4676dc8e18c7f43fc57",
|
"rev": "65ae9c147349829d3df0222151f53f79821c5134",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -243,33 +448,31 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jolheiser-nur": {
|
"jolheiser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_2"
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1700580516,
|
"lastModified": 1730336659,
|
||||||
"narHash": "sha256-h72i6afGKreU+DjpZ6+qersarYYp4YjX+DBQ+MQkOG4=",
|
"narHash": "sha256-DYQUprBce8sXdBj7Ub1h/52GnGvxiXelvucVTcTXE8I=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "a68a81cbc743e84aaee331ae7e58699398dd732d",
|
"rev": "69856a465c69e5b456ef652f0f5f17a12b9d8c02",
|
||||||
"revCount": 167,
|
"revCount": 3,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jolheiser.com/nur.git"
|
"url": "https://git.jolheiser.com/nixpkgs.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jolheiser.com/nur.git"
|
"url": "https://git.jolheiser.com/nixpkgs.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709410583,
|
"lastModified": 1728269138,
|
||||||
"narHash": "sha256-esOSUoQ7mblwcsSea0K17McZuwAIjoS6dq/4b83+lvw=",
|
"narHash": "sha256-oKxDImsOvgUZMY4NwXVyUc/c1HiU2qInX+b5BU0yXls=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "59e37017b9ed31dee303dbbd4531c594df95cfbc",
|
"rev": "ecfcd787f373f43307d764762e139a7cdeb9c22b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -281,11 +484,43 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706925685,
|
"lastModified": 1726447378,
|
||||||
"narHash": "sha256-hVInjWMmgH4yZgA4ZtbgJM1qEAel72SYhP5nOWX4UIM=",
|
"narHash": "sha256-2yV8nmYE1p9lfmLHhOCbYwQC/W8WYfGQABoGzJOb1JQ=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "79a13f1437e149dc7be2d1290c74d378dad60814",
|
"rev": "086b448a5d54fd117f4dc2dee55c9f0ff461bdc1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726062281,
|
||||||
|
"narHash": "sha256-PyFVySdGj3enKqm8RQuo4v1KLJLmNLOq2yYOHsI6e2Q=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e65aa8301ba4f0ab8cb98f944c14aa9da07394f8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "release-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1719082008,
|
||||||
|
"narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "9693852a2070b398ee123a329e68f0dab5526681",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -295,29 +530,60 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-py39": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681648924,
|
"lastModified": 1729880355,
|
||||||
"narHash": "sha256-pzi3HISK8+7mpEtv08Yr80wswyHKsz+RP1CROG1Qf6s=",
|
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "f294325aed382b66c7a188482101b0f336d1d7db",
|
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "f294325aed382b66c7a188482101b0f336d1d7db",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728492678,
|
||||||
|
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725432240,
|
||||||
|
"narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ad416d066ca1222956472ab7d0555a6946746a80",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1701441860,
|
"lastModified": 1728665070,
|
||||||
"narHash": "sha256-1jbuWl7DCk/+1l8ffYf8c01J6R5FryZSVqWobSfPQ5I=",
|
"narHash": "sha256-H2uIcBP5cKgXKBS9XA1xLl8bKSxtHidonaw6aepddqI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "f6744687a0393402ec5faada9e53a02901fe069f",
|
"rev": "7bdbe27588a3338324806750628048d2e5f68f35",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -351,26 +617,54 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"actual": "actual",
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
|
"bennet": "bennet",
|
||||||
|
"blog": "blog",
|
||||||
|
"cfg": "cfg",
|
||||||
|
"cfg-playground": "cfg-playground",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
|
"foundry": "foundry",
|
||||||
|
"ghostty": "ghostty",
|
||||||
"gist": "gist",
|
"gist": "gist",
|
||||||
"git-age": "git-age",
|
"git-age": "git-age",
|
||||||
|
"git-pr": "git-pr",
|
||||||
"golink": "golink",
|
"golink": "golink",
|
||||||
"gomodinit": "gomodinit",
|
"gomodinit": "gomodinit",
|
||||||
"helix": "helix",
|
"helix": "helix",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"jolheiser-nur": "jolheiser-nur",
|
"jolheiser": "jolheiser",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"nixpkgs-py39": "nixpkgs-py39",
|
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"resume": "resume",
|
"resume": "resume",
|
||||||
|
"spectre": "spectre",
|
||||||
|
"tailproxy": "tailproxy",
|
||||||
"tclip": "tclip",
|
"tclip": "tclip",
|
||||||
"templ": "templ",
|
"templ": "templ",
|
||||||
"tmpl": "tmpl",
|
"tmpl": "tmpl",
|
||||||
"ugit": "ugit",
|
"ugit": "ugit",
|
||||||
"website": "website",
|
"website": "website"
|
||||||
"wsl": "wsl"
|
}
|
||||||
|
},
|
||||||
|
"spectre": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1727210642,
|
||||||
|
"narHash": "sha256-UI6zfBKJQH8zEp0xNjNH0udP+qPzOMrlARryDHvw6PE=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "4ecbdcf5a4a6e38621fdab234c61a9947d5a51c0",
|
||||||
|
"revCount": 19,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.jolheiser.com/go-spectre.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.jolheiser.com/go-spectre.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
@ -388,6 +682,71 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"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": {
|
"tailwind-ctp": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -402,11 +761,11 @@
|
||||||
"rev": "afca060674b20e0ccecde2d6fe88c887790219a5",
|
"rev": "afca060674b20e0ccecde2d6fe88c887790219a5",
|
||||||
"revCount": 1,
|
"revCount": 1,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp"
|
"url": "https://git.jolheiser.com/tailwind-ctp"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp"
|
"url": "https://git.jolheiser.com/tailwind-ctp"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tailwind-ctp-lsp": {
|
"tailwind-ctp-lsp": {
|
||||||
|
@ -423,11 +782,11 @@
|
||||||
"rev": "b321333ad08bf21db242f246b10ad4a50b8fc8a0",
|
"rev": "b321333ad08bf21db242f246b10ad4a50b8fc8a0",
|
||||||
"revCount": 848,
|
"revCount": 848,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp-intellisense"
|
"url": "https://git.jolheiser.com/tailwind-ctp-intellisense"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jojodev.com/jolheiser/tailwind-ctp-intellisense"
|
"url": "https://git.jolheiser.com/tailwind-ctp-intellisense"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tailwind-ctp-lsp_2": {
|
"tailwind-ctp-lsp_2": {
|
||||||
|
@ -475,19 +834,17 @@
|
||||||
"tclip": {
|
"tclip": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"gomod2nix": "gomod2nix",
|
"gomod2nix": "gomod2nix",
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"utils": [
|
"utils": [
|
||||||
"flake-utils"
|
"flake-utils"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1695233959,
|
"lastModified": 1725658965,
|
||||||
"narHash": "sha256-5H0Bz6m6aw0Nt4fV7QkU9gIZUS0Jo/Vkqk6pTk1mkBk=",
|
"narHash": "sha256-Ro6LEvG4cC27UXJSMXxv1a9pe41BefQxB7bbCAD8C9Q=",
|
||||||
"owner": "tailscale-dev",
|
"owner": "tailscale-dev",
|
||||||
"repo": "tclip",
|
"repo": "tclip",
|
||||||
"rev": "99fc19f91adb0e095189e7ba2771269696386ed2",
|
"rev": "a0cf1c78e1014df1b36dc158e4c9019af9d0856e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -499,17 +856,18 @@
|
||||||
"templ": {
|
"templ": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"gitignore": "gitignore",
|
"gitignore": "gitignore",
|
||||||
|
"gomod2nix": "gomod2nix_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"xc": "xc"
|
"xc": "xc"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1702159064,
|
"lastModified": 1728028863,
|
||||||
"narHash": "sha256-9tyQOybmptmDhIfQcuZ8Vq8l3fMLdZfGPw+tjJbWzeQ=",
|
"narHash": "sha256-NEkcOnjMN+fI9/Lejy6As3/Cd0rxqU4c4Dwt7OYiiLM=",
|
||||||
"owner": "a-h",
|
"owner": "a-h",
|
||||||
"repo": "templ",
|
"repo": "templ",
|
||||||
"rev": "ddb1610a81627f5c9c524bb66877477f401e4ecd",
|
"rev": "318249d145b66fe1d66e34abf2321c86e1dfbc52",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -547,11 +905,11 @@
|
||||||
"tailwind-ctp-lsp": "tailwind-ctp-lsp"
|
"tailwind-ctp-lsp": "tailwind-ctp-lsp"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709863186,
|
"lastModified": 1729617923,
|
||||||
"narHash": "sha256-Qba14UPPIWl95R+QSHJaxvAhL7Uo9LfO3kHovePcrPM=",
|
"narHash": "sha256-sMxbCVrHKMMZO5Rku8EL9lFGbnrwsCu6tO3Rr26a5tk=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "2615593c2f59ab25cb74d65d968a33cbc834e9c5",
|
"rev": "3a4e09a218dde7b4161a0b83276a73149e105d3f",
|
||||||
"revCount": 29,
|
"revCount": 65,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jolheiser.com/ugit.git"
|
"url": "https://git.jolheiser.com/ugit.git"
|
||||||
},
|
},
|
||||||
|
@ -575,11 +933,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710037782,
|
"lastModified": 1728680776,
|
||||||
"narHash": "sha256-hVSwPIDX5aQzH/vVMdV/xR0tvKdKHRJPQCp808nW61I=",
|
"narHash": "sha256-wuEYMsYJaaMN21EsPHtoctWruyslXMk1D/fz84VXFgU=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "472a3ee037da8edccfa50b668de4011eef14f000",
|
"rev": "7aa973a819b1aa151d5ccb9f7b23d96431d2e2a0",
|
||||||
"revCount": 14,
|
"revCount": 15,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.jolheiser.com/jolheiser.com.git"
|
"url": "https://git.jolheiser.com/jolheiser.com.git"
|
||||||
},
|
},
|
||||||
|
@ -588,44 +946,20 @@
|
||||||
"url": "https://git.jolheiser.com/jolheiser.com.git"
|
"url": "https://git.jolheiser.com/jolheiser.com.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wsl": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"flake-utils": [
|
|
||||||
"flake-utils"
|
|
||||||
],
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1703521177,
|
|
||||||
"narHash": "sha256-V95s2ypDpdaFGbeG3pvazEE7qdjwZknoauv89DJQvz0=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "NixOS-WSL",
|
|
||||||
"rev": "ec53b11f0c78572a2b0b5263ae1c46293daaf55f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "NixOS-WSL",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xc": {
|
"xc": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_4",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"templ",
|
"templ",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696495449,
|
"lastModified": 1724404748,
|
||||||
"narHash": "sha256-dthZiJ2FX/eIC0l1mdfefJZXDTVLfwp7L7Arq5rsCWA=",
|
"narHash": "sha256-p6rXzNiDm2uBvO1MLzC5pJp/0zRNzj/snBzZI0ce62s=",
|
||||||
"owner": "joerdav",
|
"owner": "joerdav",
|
||||||
"repo": "xc",
|
"repo": "xc",
|
||||||
"rev": "c8baab14d679fb276f11c576607010283be21220",
|
"rev": "960ff9f109d47a19122cfb015721a76e3a0f23a2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -633,6 +967,31 @@
|
||||||
"repo": "xc",
|
"repo": "xc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"zig": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"ghostty"
|
||||||
|
],
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"ghostty",
|
||||||
|
"nixpkgs-stable"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1717848532,
|
||||||
|
"narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=",
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
|
"rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
240
flake.nix
240
flake.nix
|
@ -2,8 +2,9 @@
|
||||||
description = "jolheiser's nixos config";
|
description = "jolheiser's nixos config";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-py39.url = "github:nixos/nixpkgs/f294325aed382b66c7a188482101b0f336d1d7db";
|
jolheiser.url = "git+https://git.jolheiser.com/nixpkgs.git";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils"; # Only expressed here to use for followers
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
|
@ -17,17 +18,11 @@
|
||||||
home-manager.follows = "";
|
home-manager.follows = "";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware/master";
|
nixos-hardware.url = "github:nixos/nixos-hardware/master";
|
||||||
|
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
jolheiser-nur = {
|
|
||||||
url = "git+https://git.jolheiser.com/nur.git";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
helix = {
|
helix = {
|
||||||
url = "git+https://git.jolheiser.com/helix.drv.git";
|
url = "git+https://git.jolheiser.com/helix.drv.git";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "jolheiser/nixpkgs";
|
||||||
};
|
};
|
||||||
website = {
|
website = {
|
||||||
url = "git+https://git.jolheiser.com/jolheiser.com.git";
|
url = "git+https://git.jolheiser.com/jolheiser.com.git";
|
||||||
|
@ -44,6 +39,17 @@
|
||||||
flake-utils.follows = "flake-utils";
|
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 = {
|
git-age = {
|
||||||
url = "git+https://git.jolheiser.com/git-age.git";
|
url = "git+https://git.jolheiser.com/git-age.git";
|
||||||
inputs = {
|
inputs = {
|
||||||
|
@ -63,10 +69,26 @@
|
||||||
url = "git+https://git.jolheiser.com/gomodinit.git";
|
url = "git+https://git.jolheiser.com/gomodinit.git";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
cfg = {
|
||||||
|
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 = {
|
ugit = {
|
||||||
url = "git+https://git.jolheiser.com/ugit.git";
|
url = "git+https://git.jolheiser.com/ugit.git";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
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
|
# Other flakes
|
||||||
golink = {
|
golink = {
|
||||||
url = "github:tailscale/golink";
|
url = "github:tailscale/golink";
|
||||||
|
@ -78,7 +100,7 @@
|
||||||
tclip = {
|
tclip = {
|
||||||
url = "github:tailscale-dev/tclip";
|
url = "github:tailscale-dev/tclip";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.follows = "nixpkgs";
|
#nixpkgs.follows = "nixpkgs";
|
||||||
utils.follows = "flake-utils";
|
utils.follows = "flake-utils";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -86,23 +108,27 @@
|
||||||
url = "github:a-h/templ";
|
url = "github:a-h/templ";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
# WSL
|
actual = {
|
||||||
wsl = {
|
url = "git+https://git.xeno.science/xenofem/actual-nix.git";
|
||||||
url = "github:nix-community/NixOS-WSL";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.flake-utils.follows = "flake-utils";
|
|
||||||
};
|
};
|
||||||
|
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";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs =
|
||||||
|
{
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
home-manager,
|
home-manager,
|
||||||
nixos-hardware,
|
nixos-hardware,
|
||||||
agenix,
|
agenix,
|
||||||
nixpkgs-py39,
|
|
||||||
wsl,
|
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
}@inputs:
|
||||||
|
let
|
||||||
overlays = [
|
overlays = [
|
||||||
(_: prev: {
|
(_: prev: {
|
||||||
nur = import inputs.nur {
|
nur = import inputs.nur {
|
||||||
|
@ -110,7 +136,6 @@
|
||||||
pkgs = prev;
|
pkgs = prev;
|
||||||
};
|
};
|
||||||
jolheiser = {
|
jolheiser = {
|
||||||
nur = inputs.jolheiser-nur.packages.${prev.system};
|
|
||||||
helix = inputs.helix.packages.${prev.system}.default;
|
helix = inputs.helix.packages.${prev.system}.default;
|
||||||
website = inputs.website.packages.${prev.system}.default;
|
website = inputs.website.packages.${prev.system}.default;
|
||||||
resume = inputs.resume.packages.${prev.system}.default;
|
resume = inputs.resume.packages.${prev.system}.default;
|
||||||
|
@ -118,168 +143,133 @@
|
||||||
gist = inputs.gist.packages.${prev.system}.default;
|
gist = inputs.gist.packages.${prev.system}.default;
|
||||||
tmpl = inputs.tmpl.packages.${prev.system}.default;
|
tmpl = inputs.tmpl.packages.${prev.system}.default;
|
||||||
gomodinit = inputs.gomodinit.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;
|
tclip = inputs.tclip.packages.${prev.system}.tclip;
|
||||||
templ = inputs.templ.packages.${prev.system}.templ;
|
templ = inputs.templ.packages.${prev.system}.templ;
|
||||||
|
ghostty = inputs.ghostty.packages.${prev.system}.ghostty;
|
||||||
})
|
})
|
||||||
inputs.golink.overlay
|
inputs.golink.overlay
|
||||||
];
|
];
|
||||||
userSecret = path: {
|
pkgs = import inputs.nixpkgs {
|
||||||
file = path;
|
inherit overlays system;
|
||||||
owner = username;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
commonConfig = {gui ? true}: {config, ...}: {
|
commonConfig =
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
config = {
|
config = {
|
||||||
nixpkgs.overlays = overlays;
|
nixpkgs.overlays = overlays;
|
||||||
# TODO Remove when apps are updated
|
# TODO Remove when apps are updated
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ];
|
||||||
"electron-25.9.0"
|
|
||||||
];
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
users.${username}.imports =
|
|
||||||
if gui
|
|
||||||
then [./apps/gui]
|
|
||||||
else [./apps/nogui];
|
|
||||||
extraSpecialArgs = {
|
|
||||||
flakePath = "/home/${username}/.config/nixpkgs";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
age.secrets = {
|
username = "jolheiser";
|
||||||
ssh-config = userSecret ./secrets/shared/ssh-config.age;
|
system = "x86_64-linux";
|
||||||
ssh-config-work = userSecret ./secrets/shared/ssh-config-work.age;
|
homeManagerModules = [
|
||||||
|
agenix.homeManagerModules.age
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
inherit username;
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
};
|
||||||
|
age = {
|
||||||
|
secretsDir = "/home/${username}/.agenix/agenix";
|
||||||
|
secretsMountPoint = "/home/${username}/.agenix/agenix.d";
|
||||||
|
identityPaths = [ "/home/${username}/.ssh/nix" ];
|
||||||
|
secrets = {
|
||||||
|
ssh-config.file = ./secrets/shared/ssh-config.age;
|
||||||
spotify = {
|
spotify = {
|
||||||
file = ./secrets/shared/spotify.age;
|
file = ./secrets/shared/spotify.age;
|
||||||
owner = username;
|
|
||||||
path = "/home/${username}/.cache/spotify-player/credentials.json";
|
path = "/home/${username}/.cache/spotify-player/credentials.json";
|
||||||
};
|
};
|
||||||
irc-pw = userSecret ./secrets/shared/irc-pw.age;
|
irc-pw.file = ./secrets/shared/irc-pw.age;
|
||||||
gist-pw = userSecret ./secrets/shared/gist-pw.age;
|
gist-pw.file = ./secrets/shared/gist-pw.age;
|
||||||
git-send-email = userSecret ./secrets/shared/git-send-email.age;
|
git-send-email.file = ./secrets/shared/git-send-email.age;
|
||||||
cachix = {
|
cachix = {
|
||||||
file = ./secrets/shared/cachix.age;
|
file = ./secrets/shared/cachix.age;
|
||||||
owner = username;
|
|
||||||
path = "/home/${username}/.config/cachix/cachix.dhall";
|
path = "/home/${username}/.config/cachix/cachix.dhall";
|
||||||
};
|
};
|
||||||
|
llm = {
|
||||||
|
file = ./secrets/shared/llm.age;
|
||||||
|
path = "/home/${username}/.config/io.datasette.llm/keys.json";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
workModules = [
|
}
|
||||||
home-manager.nixosModules.home-manager
|
./apps/gui
|
||||||
agenix.nixosModules.default
|
|
||||||
(commonConfig {})
|
|
||||||
({pkgs, ...}: {
|
|
||||||
config = {
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(_: _: {
|
|
||||||
py39 = import nixpkgs-py39 {inherit (pkgs) system;};
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
home-manager.users.${username}.programs = {
|
|
||||||
git.package = pkgs.gitSVN;
|
|
||||||
firefox.profiles.default.bookmarks = [(import ./apps/gui/firefox/work.nix)];
|
|
||||||
};
|
|
||||||
age.secrets = {
|
|
||||||
netrc = {
|
|
||||||
file = ./secrets/work/netrc.age;
|
|
||||||
owner = username;
|
|
||||||
path = "/home/${username}/.netrc";
|
|
||||||
};
|
|
||||||
pipconf = {
|
|
||||||
file = ./secrets/work/pip.conf.age;
|
|
||||||
owner = username;
|
|
||||||
path = "/home/${username}/.config/pip/pip.conf";
|
|
||||||
};
|
|
||||||
pypirc = {
|
|
||||||
file = ./secrets/work/pypirc.age;
|
|
||||||
owner = username;
|
|
||||||
path = "/home/${username}/.pypirc";
|
|
||||||
};
|
|
||||||
cifs = userSecret ./secrets/work/cifs.age;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
username = "jolheiser";
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
inherit homeManagerModules;
|
||||||
|
homeConfigurations = {
|
||||||
|
"jolheiser" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
modules = homeManagerModules ++ [ ./apps/de ];
|
||||||
|
};
|
||||||
|
};
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
"chai" = nixpkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules =
|
|
||||||
workModules
|
|
||||||
++ [
|
|
||||||
./machines/chai
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"masala" = nixpkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules =
|
|
||||||
workModules
|
|
||||||
++ [
|
|
||||||
wsl.nixosModules.wsl
|
|
||||||
./machines/masala
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"matcha" = nixpkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules = [
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
agenix.nixosModules.default
|
|
||||||
./machines/matcha
|
|
||||||
(commonConfig {})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"genmaicha" = nixpkgs.lib.nixosSystem {
|
"genmaicha" = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
inherit system;
|
||||||
modules = [
|
modules = [
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
nixos-hardware.nixosModules.framework-13-7040-amd
|
nixos-hardware.nixosModules.framework-13-7040-amd
|
||||||
agenix.nixosModules.default
|
|
||||||
./machines/genmaicha
|
./machines/genmaicha
|
||||||
(commonConfig {})
|
commonConfig
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"sencha" = nixpkgs.lib.nixosSystem {
|
"sencha" = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
inherit system;
|
||||||
modules = [
|
modules = [
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
agenix.nixosModules.default
|
|
||||||
./machines/sencha
|
./machines/sencha
|
||||||
(commonConfig {})
|
commonConfig
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
colmena = {
|
colmena = {
|
||||||
meta = {
|
meta = {
|
||||||
nixpkgs = import nixpkgs {
|
nixpkgs = import nixpkgs { inherit overlays system; };
|
||||||
system = "x86_64-linux";
|
specialArgs = {
|
||||||
overlays = overlays;
|
inherit inputs;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
dragonwell = {
|
dragonwell =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
inputs.golink.nixosModules.default
|
inputs.golink.nixosModules.default
|
||||||
inputs.ugit.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
|
||||||
./machines/dragonwell
|
./machines/dragonwell
|
||||||
];
|
];
|
||||||
|
services.tclip.package = inputs.tclip.packages.${pkgs.system}.tclipd;
|
||||||
|
};
|
||||||
|
gunpowder = {
|
||||||
|
imports = [
|
||||||
|
inputs.tailproxy.nixosModules.default
|
||||||
|
./machines/gunpowder
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-substitutors = ["https://jolheiser.cachix.org"];
|
extra-substitutors = [ "https://jolheiser.cachix.org" ];
|
||||||
extra-trusted-public-keys = ["jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg="];
|
extra-trusted-public-keys = [
|
||||||
|
"jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg="
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
devShells.${system}.default = pkgs.mkShell {
|
||||||
// inputs.flake-utils.lib.eachDefaultSystem (system: let
|
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
in {
|
|
||||||
devShells.default = pkgs.mkShell {
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
agenix.packages.${system}.agenix
|
agenix.packages.${system}.agenix
|
||||||
pkgs.colmena
|
pkgs.colmena
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
|
|
11
justfile
11
justfile
|
@ -5,12 +5,17 @@ default:
|
||||||
[private]
|
[private]
|
||||||
rebuild *args:
|
rebuild *args:
|
||||||
@git add .
|
@git add .
|
||||||
@sudo nixos-rebuild --flake . {{args}}
|
@sudo nixos-rebuild --flake . {{args}} |& nix run nixpkgs#nix-output-monitor
|
||||||
|
|
||||||
# Rebuild the current machine
|
# Rebuild the current machine
|
||||||
switch *args:
|
switch *args:
|
||||||
@just rebuild switch {{args}}
|
@just rebuild switch {{args}}
|
||||||
|
|
||||||
|
hm:
|
||||||
|
@git add .
|
||||||
|
@home-manager switch --flake . |& nix run nixpkgs#nix-output-monitor
|
||||||
|
@systemctl --user start agenix.service
|
||||||
|
|
||||||
# Rebuild the current machine for next boot
|
# Rebuild the current machine for next boot
|
||||||
boot *args:
|
boot *args:
|
||||||
@just rebuild boot {{args}}
|
@just rebuild boot {{args}}
|
||||||
|
@ -27,3 +32,7 @@ update-flake:
|
||||||
# Update an individual input
|
# Update an individual input
|
||||||
update input:
|
update input:
|
||||||
@nix flake lock --update-input {{input}}
|
@nix flake lock --update-input {{input}}
|
||||||
|
|
||||||
|
fetch:
|
||||||
|
@nix run nixpkgs#onefetch -- --true-color never --no-bots -d lines-of-code
|
||||||
|
@nix run nixpkgs#scc -- --no-cocomo .
|
||||||
|
|
Binary file not shown.
|
@ -1,72 +0,0 @@
|
||||||
{pkgs, ...}: let
|
|
||||||
username = "jolheiser";
|
|
||||||
in {
|
|
||||||
imports = [./hardware.nix ../common/gui];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
kernelParams = ["quiet" "splash"];
|
|
||||||
loader.efi.canTouchEfiVariables = true;
|
|
||||||
loader.systemd-boot.enable = true;
|
|
||||||
initrd.systemd.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {bluetooth.enable = true;};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "chai";
|
|
||||||
networkmanager.enable = true;
|
|
||||||
firewall.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices = {
|
|
||||||
"luks-83586073-35f8-438d-9203-99f1e966c2ca" = {
|
|
||||||
device = "/dev/disk/by-uuid/83586073-35f8-438d-9203-99f1e966c2ca";
|
|
||||||
keyFile = "/crypto_keyfile.bin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
blueman.enable = true;
|
|
||||||
pcscd.enable = true;
|
|
||||||
openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings = {X11Forwarding = true;};
|
|
||||||
};
|
|
||||||
globalprotect.enable = true;
|
|
||||||
printing = {
|
|
||||||
enable = true;
|
|
||||||
drivers = [pkgs.hplip];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
users.users."${username}" = {
|
|
||||||
extraGroups = ["wheel" "docker"];
|
|
||||||
isNormalUser = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
globalprotect-openconnect
|
|
||||||
jetbrains.pycharm-professional
|
|
||||||
jetbrains.idea-ultimate
|
|
||||||
jetbrains.datagrip
|
|
||||||
libxcrypt
|
|
||||||
py39.python39
|
|
||||||
py39.python39Packages.virtualenv
|
|
||||||
py39.python39Packages.psycopg2
|
|
||||||
py39.python39Packages.wheel
|
|
||||||
py39.python39Packages.setuptools
|
|
||||||
py39.python39Packages.pip
|
|
||||||
python3Packages.twine
|
|
||||||
subversion
|
|
||||||
teams-for-linux
|
|
||||||
xorg.xauth
|
|
||||||
|
|
||||||
# Flake overlay
|
|
||||||
jolheiser.nur.prospect-mail
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [(modulesPath + "/installer/scan/not-detected.nix") ./cifs.nix];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = ["kvm-intel"];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/b8a0cc98-5882-4b69-a8cb-375726767606";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-bd0a4998-266e-4aae-8f20-89561a2fa169".device = "/dev/disk/by-uuid/bd0a4998-266e-4aae-8f20-89561a2fa169";
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/5531-69DC";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [{device = "/dev/disk/by-uuid/eb7acf5d-e5db-45fa-8691-8ef5641cde68";}];
|
|
||||||
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
|
||||||
hardware.cpu.intel.updateMicrocode =
|
|
||||||
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
|
@ -1,9 +1,11 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
imports = [../nogui];
|
{
|
||||||
|
imports = [ ../nogui ];
|
||||||
|
|
||||||
sound.enable = true;
|
|
||||||
hardware.pulseaudio.enable = false;
|
hardware.pulseaudio.enable = false;
|
||||||
security = {rtkit.enable = true;};
|
security = {
|
||||||
|
rtkit.enable = true;
|
||||||
|
};
|
||||||
services = {
|
services = {
|
||||||
pipewire = {
|
pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -20,6 +22,15 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
fonts.packages = with pkgs; [(nerdfonts.override {fonts = ["JetBrainsMono" "Iosevka" "Hack"];}) monaspace];
|
fonts.packages = with pkgs; [
|
||||||
environment.systemPackages = [pkgs.tailscale-systray];
|
(nerdfonts.override {
|
||||||
|
fonts = [
|
||||||
|
"JetBrainsMono"
|
||||||
|
"Iosevka"
|
||||||
|
"Hack"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
monaspace
|
||||||
|
];
|
||||||
|
environment.systemPackages = [ pkgs.tailscale-systray ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
console.colors = [
|
console.colors = [
|
||||||
"1e1e2e"
|
"1e1e2e"
|
||||||
"585b70"
|
"585b70"
|
||||||
|
@ -43,12 +44,22 @@
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
gc.automatic = true;
|
gc.automatic = true;
|
||||||
package = pkgs.nixVersions.nix_2_15;
|
package = pkgs.nixVersions.stable;
|
||||||
settings = {
|
settings = {
|
||||||
trusted-users = ["@sudo" "@wheel" "jolheiser"];
|
trusted-users = [
|
||||||
experimental-features = ["flakes" "nix-command" "repl-flake"];
|
"@sudo"
|
||||||
|
"@wheel"
|
||||||
|
"jolheiser"
|
||||||
|
];
|
||||||
|
experimental-features = [
|
||||||
|
"flakes"
|
||||||
|
"nix-command"
|
||||||
|
"repl-flake"
|
||||||
|
];
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
warn-dirty = false;
|
warn-dirty = false;
|
||||||
|
substituters = [ "https://jolheiser.cachix.org" ];
|
||||||
|
trusted-public-keys = [ "jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg=" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -60,8 +71,4 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
services.tailscale.enable = true;
|
services.tailscale.enable = true;
|
||||||
|
|
||||||
environment = {
|
|
||||||
systemPackages = with pkgs; [podman podman-compose podman-tui];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
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,4 +1,8 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
modules = import ./go.nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
services.caddy = {
|
services.caddy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
|
@ -6,7 +10,8 @@
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
handle_path /.well-known/webfinger {
|
handle_path /.well-known/webfinger {
|
||||||
header Content-Type application/jrd+json
|
header Content-Type application/jrd+json
|
||||||
respond ${builtins.toJSON {
|
respond ${
|
||||||
|
builtins.toJSON {
|
||||||
subject = "acct:john@jolheiser.com";
|
subject = "acct:john@jolheiser.com";
|
||||||
links = [
|
links = [
|
||||||
{
|
{
|
||||||
|
@ -14,10 +19,11 @@
|
||||||
href = "https://auth.jolheiser.com";
|
href = "https://auth.jolheiser.com";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handle_path /bennet* {
|
handle_path /bennet* {
|
||||||
root * /srv/bennet/src
|
root * ${pkgs.jolheiser.bennet}
|
||||||
file_server
|
file_server
|
||||||
}
|
}
|
||||||
handle /resume* {
|
handle /resume* {
|
||||||
|
@ -30,39 +36,53 @@
|
||||||
file_server
|
file_server
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
serverAliases = ["www.jolheiser.com"];
|
serverAliases = [ "www.jolheiser.com" ];
|
||||||
|
};
|
||||||
|
"blog.jolheiser.com" = {
|
||||||
|
extraConfig = ''
|
||||||
|
root * ${pkgs.jolheiser.blog}
|
||||||
|
file_server
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
"go.jolheiser.com" = {
|
"go.jolheiser.com" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
header Content-Type text/html
|
header Content-Type text/html
|
||||||
|
${modules}
|
||||||
respond /* `<html><head>
|
respond /* `<html><head>
|
||||||
<meta name="go-import" content="go.jolheiser.com{uri} git https://git.jojodev.com/jolheiser{uri}.git">
|
<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{uri}" />
|
<meta http-equiv="refresh" content="3; url=https://pkg.go.dev/go.jolheiser.com{path}" />
|
||||||
</head><body>
|
</head><body>
|
||||||
Redirecting to <a href="https://pkg.go.dev/go.jolheiser.com{uri}">https://pkg.go.dev/go.jolheiser.com{uri}</a>
|
Redirecting to <a href="https://pkg.go.dev/go.jolheiser.com{path}">https://pkg.go.dev/go.jolheiser.com{path}</a>
|
||||||
</body></html>`
|
</body></html>`
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"git.jolheiser.com" = {
|
"git.jolheiser.com".extraConfig = ''
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy localhost:8449
|
reverse_proxy localhost:8449
|
||||||
'';
|
'';
|
||||||
};
|
"pr.jolheiser.com".extraConfig = ''
|
||||||
"social.jolheiser.com" = {
|
reverse_proxy localhost:7449
|
||||||
extraConfig = ''
|
'';
|
||||||
|
"social.jolheiser.com".extraConfig = ''
|
||||||
reverse_proxy localhost:4686
|
reverse_proxy localhost:4686
|
||||||
'';
|
'';
|
||||||
};
|
"auth.jolheiser.com".extraConfig = ''
|
||||||
"auth.jolheiser.com" = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy localhost:2884
|
reverse_proxy localhost:2884
|
||||||
'';
|
'';
|
||||||
};
|
"todo.jolheiser.com".extraConfig = ''
|
||||||
"ci.jolheiser.com" = {
|
reverse_proxy localhost:8636
|
||||||
extraConfig = ''
|
'';
|
||||||
|
"recipes.jolheiser.com".extraConfig = ''
|
||||||
|
reverse_proxy localhost:3663
|
||||||
|
'';
|
||||||
|
"irc.jolheiser.com".extraConfig = ''
|
||||||
|
reverse_proxy localhost:7658
|
||||||
|
'';
|
||||||
|
"dnd.jolheiser.com".extraConfig = ''
|
||||||
|
reverse_proxy localhost:30000
|
||||||
|
'';
|
||||||
|
"ci.jolheiser.com".extraConfig = ''
|
||||||
reverse_proxy localhost:2423
|
reverse_proxy localhost:2423
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
services.cfg-playground = {
|
||||||
|
enable = true;
|
||||||
|
verbose = true;
|
||||||
|
auth-key = "tskey-auth-ksTZtpeU1i11CNTRL-HmmWuAFifG3xxy8UDr1yG3UdjiYJ3mtGe"; # One-time key
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,8 +1,26 @@
|
||||||
let
|
let
|
||||||
username = "jolheiser";
|
username = "jolheiser";
|
||||||
key = ''ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfKqCWtDlS3tgvfT6hQN+ii8UtabIZ+ZNmYN+bLwIa8PHOEW5MbfaqXSlhKkSi4+7SfQDCHphw0SMfhsQ4qMEcoywZ+4niDgKlQEVkl+S/VGbLuPe92NRStkyreZBLPr3Rh7ScNlGHcmHmoV9v7725fMnsMmabGVhpGO84PwNHOfJyv2tx2h6LxFbAV8S44UQu2lc8YLWCK2UvKuRnBerBXLnDQThUUX8UuCFzb786gQzD5XDU0MENbByxiy0XdVGAC+tFXEiSIgFZlFbFYyShgdTP9MzX2MOglEi+ae+1UIFncraW7ptUey7qHFJylpHWWWvE+GTwsg2G50i0FvFj jolheiser@jolheiser'';
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL+uhnfFLhlyfGGsksSxh5IIY6gnIMryeQ2EiM979kZa";
|
||||||
in {
|
in
|
||||||
imports = [./caddy.nix ./dex.nix ./golink.nix ./gotosocial.nix ./jenkins.nix ./restic.nix ./ugit.nix ./hardware.nix];
|
{
|
||||||
|
imports = [
|
||||||
|
./actual.nix
|
||||||
|
./caddy.nix
|
||||||
|
./cfg.nix
|
||||||
|
./dex.nix
|
||||||
|
./foundry.nix
|
||||||
|
./git-pr.nix
|
||||||
|
./golink.nix
|
||||||
|
./gotosocial.nix
|
||||||
|
./jenkins.nix
|
||||||
|
./restic.nix
|
||||||
|
./soju.nix
|
||||||
|
./tandoor.nix
|
||||||
|
./tclip.nix
|
||||||
|
./ugit.nix
|
||||||
|
./vikunja.nix
|
||||||
|
./hardware.nix
|
||||||
|
];
|
||||||
|
|
||||||
boot.tmp.cleanOnBoot = true;
|
boot.tmp.cleanOnBoot = true;
|
||||||
zramSwap.enable = true;
|
zramSwap.enable = true;
|
||||||
|
@ -12,21 +30,30 @@ in {
|
||||||
|
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedTCPPorts = [80 443];
|
allowedTCPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
6697
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.openssh.enable = true;
|
services = {
|
||||||
|
openssh.enable = true;
|
||||||
|
tailscale.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
users.users = {
|
users.users = {
|
||||||
"${username}" = {
|
"${username}" = {
|
||||||
extraGroups = ["wheel" "docker" "storage"];
|
extraGroups = [
|
||||||
isNormalUser = true;
|
"wheel"
|
||||||
openssh.authorizedKeys.keys = [
|
"docker"
|
||||||
key
|
"storage"
|
||||||
];
|
];
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [ key ];
|
||||||
};
|
};
|
||||||
"root".openssh.authorizedKeys.keys = [key];
|
"root".openssh.authorizedKeys.keys = [ key ];
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,12 @@
|
||||||
|
{ 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;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
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,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
services.golink = {
|
services.golink = {
|
||||||
enable = true;
|
enable = true;
|
||||||
tailscaleAuthKeyFile = pkgs.writeText "tskey" "tskey-auth-kGaKxz5CNTRL-nvyRLm7J38B37QZ2gCDM8BqtwyC6zJUh7"; # One-time key
|
tailscaleAuthKeyFile = pkgs.writeText "tskey" "tskey-auth-kGaKxz5CNTRL-nvyRLm7J38B37QZ2gCDM8BqtwyC6zJUh7"; # One-time key
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
{modulesPath, ...}: {
|
{ modulesPath, ... }:
|
||||||
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
|
{
|
||||||
|
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
||||||
boot.loader.grub.device = "/dev/sda";
|
boot.loader.grub.device = "/dev/sda";
|
||||||
boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"];
|
boot.initrd.availableKernelModules = [
|
||||||
boot.initrd.kernelModules = ["nvme"];
|
"ata_piix"
|
||||||
|
"uhci_hcd"
|
||||||
|
"xen_blkfront"
|
||||||
|
"vmw_pvscsi"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ "nvme" ];
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/sda1";
|
device = "/dev/sda1";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
age.secrets.jenkins.file = ../../secrets/personal/jenkins.age;
|
age.secrets.jenkins.file = ../../secrets/personal/jenkins.age;
|
||||||
services.jenkins = {
|
services.jenkins = {
|
||||||
enable = true;
|
enable = true;
|
||||||
listenAddress = "localhost";
|
listenAddress = "localhost";
|
||||||
port = 2423;
|
port = 2423;
|
||||||
jobBuilder = {
|
jobBuilder = {
|
||||||
|
enable = false; # Currently broken
|
||||||
accessTokenFile = config.age.secrets.jenkins.path;
|
accessTokenFile = config.age.secrets.jenkins.path;
|
||||||
nixJobs = [
|
nixJobs = [
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
age.secrets = {
|
age.secrets = {
|
||||||
restic-env.file = ../../secrets/personal/restic-env.age;
|
restic-env.file = ../../secrets/personal/restic-env.age;
|
||||||
restic-pass.file = ../../secrets/personal/restic-pass.age;
|
restic-pass.file = ../../secrets/personal/restic-pass.age;
|
||||||
|
@ -9,8 +10,12 @@
|
||||||
environmentFile = config.age.secrets.restic-env.path;
|
environmentFile = config.age.secrets.restic-env.path;
|
||||||
passwordFile = config.age.secrets.restic-pass.path;
|
passwordFile = config.age.secrets.restic-pass.path;
|
||||||
repositoryFile = config.age.secrets.restic-repo.path;
|
repositoryFile = config.age.secrets.restic-repo.path;
|
||||||
paths = ["/var/lib/ugit/repos"];
|
paths = [ "/var/lib/ugit/repos" ];
|
||||||
pruneOpts = ["--keep-daily 7" "--keep-weekly 2" "--keep-monthly 2"];
|
pruneOpts = [
|
||||||
|
"--keep-daily 7"
|
||||||
|
"--keep-weekly 2"
|
||||||
|
"--keep-monthly 2"
|
||||||
|
];
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
OnCalendar = "daily";
|
OnCalendar = "daily";
|
||||||
Persistent = true;
|
Persistent = true;
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
{ 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.
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
services.tclip = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "paste";
|
||||||
|
useFunnel = true;
|
||||||
|
hideFunnelUsers = true;
|
||||||
|
authKey = "tskey-auth-k1VerP4gam11CNTRL-89rpeDcfTdJqkF9AECWmdJLVgo1jQcSAB"; # One-time key
|
||||||
|
};
|
||||||
|
}
|
|
@ -2,13 +2,17 @@
|
||||||
services.ugit = {
|
services.ugit = {
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
authorizedKeys = ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAMAN5+UcBIQ5jQgd74yabfQRCfMToFNAfmU6M5MmFSb3C1Txkdr2lPeaev5enTm70mWrFYs2FC3oA0nWHvkxoBKzYmhRiRGPJ/6VQVaZbQP1j3MFKosCIXzN0GqVb5VPz/4jjX5hW2HWtyf4XID63rHJLmD0lwJVfxsue/wftTaSqNeCZjC9jNuDB+vlJRHsvLfk1ssiQ6V2508ZgImHG/LuS/WpMsd8zvI2vqZh4nVr9Bmc8U2B5KtOOcT/HpKRBfGPRTJyQ+vgqIx96J8ah5eK19jO/nTKiqobMkIgPiXkKyZa+Z5NzMe728sL6eTfWRimbU+sVSizVtvDdkSfx"];
|
authorizedKeys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJXoiWcPkL5kUAqJfMxnPM/ND4qJ4kKShDhXdqnYv2ZB"
|
||||||
|
];
|
||||||
|
tsAuthKey = "tskey-auth-kRUJE7zxH621CNTRL-Td29STXSrtTUHdacaKaYtTD82uyDXZj7"; # One-time key
|
||||||
config = {
|
config = {
|
||||||
ssh.clone-url = "ugit@git.jolheiser.com";
|
ssh.clone-url = "ugit@git.jolheiser.com";
|
||||||
http.clone-url = "https://git.jolheiser.com";
|
http.clone-url = "https://git.jolheiser.com";
|
||||||
|
log.json = true;
|
||||||
profile = {
|
profile = {
|
||||||
username = "jolheiser";
|
username = "jolheiser";
|
||||||
email = "john+ugit@jolheiser.com";
|
email = "ugit@jolheiser.com";
|
||||||
links = [
|
links = [
|
||||||
"Github,https://github.com/jolheiser"
|
"Github,https://github.com/jolheiser"
|
||||||
"Gitea,https://gitea.com/jolheiser"
|
"Gitea,https://gitea.com/jolheiser"
|
||||||
|
@ -16,6 +20,10 @@
|
||||||
"Fediverse,https://social.jolheiser.com/@jolheiser"
|
"Fediverse,https://social.jolheiser.com/@jolheiser"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
tailscale = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "git";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -1,11 +1,19 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
username = "jolheiser";
|
username = "jolheiser";
|
||||||
in {
|
in
|
||||||
imports = [./hardware.nix ../common/gui];
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware.nix
|
||||||
|
../common/gui
|
||||||
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
kernelParams = ["quiet" "splash"];
|
kernelParams = [
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
];
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
|
@ -28,7 +36,11 @@ in {
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
users.users."${username}" = {
|
users.users."${username}" = {
|
||||||
extraGroups = ["wheel" "docker" "storage"];
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"docker"
|
||||||
|
"storage"
|
||||||
|
];
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,37 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
config,
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
lib,
|
||||||
];
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/90652083-df9c-42df-8c8a-8d979a3e1e0c";
|
device = "/dev/disk/by-uuid/90652083-df9c-42df-8c8a-8d979a3e1e0c";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/B03F-3B27";
|
device = "/dev/disk/by-uuid/B03F-3B27";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices =
|
swapDevices = [ { device = "/dev/disk/by-uuid/2034b9e4-011b-4715-a7a2-5f5445dc2849"; } ];
|
||||||
[ { device = "/dev/disk/by-uuid/2034b9e4-011b-4715-a7a2-5f5445dc2849"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
|
|
@ -0,0 +1,133 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
username = "jolheiser";
|
||||||
|
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJh5aUDN/KN28+4tbayXRQliLyKFZaCZtUMEBNaJfHYj";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ ./hardware.nix ];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
kernelParams = [
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
];
|
||||||
|
loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "/dev/sda";
|
||||||
|
useOSProber = true;
|
||||||
|
enableCryptodisk = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.secrets = {
|
||||||
|
"/crypto_keyfile.bin" = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices = {
|
||||||
|
"luks-1f9bde68-9c4c-423c-a95f-17aa170dd2b4".keyFile = "/crypto_keyfile.bin";
|
||||||
|
"luks-a2ca1842-1ce0-437e-ba5e-8864a41e81cb" = {
|
||||||
|
device = "/dev/disk/by-uuid/a2ca1842-1ce0-437e-ba5e-8864a41e81cb";
|
||||||
|
keyFile = "/crypto_keyfile.bin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "gunpowder";
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
displayManager.lightdm.enable = true;
|
||||||
|
desktopManager.xfce.enable = true;
|
||||||
|
};
|
||||||
|
openssh.enable = true;
|
||||||
|
tailscale.enable = true;
|
||||||
|
mullvad-vpn = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.mullvad-vpn;
|
||||||
|
};
|
||||||
|
resolved.enable = true;
|
||||||
|
|
||||||
|
# media
|
||||||
|
jellyfin = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
tailproxy.jellyfin = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "jellyfin";
|
||||||
|
port = 8096;
|
||||||
|
authKey = "tskey-auth-khZwt3ASDX11CNTRL-jYDAVuX7VVLCebLUGdvnVLLoUkeEevXEV"; # One-time key
|
||||||
|
};
|
||||||
|
sonarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
tailproxy.sonarr = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "sonarr";
|
||||||
|
port = 8989;
|
||||||
|
authKey = "tskey-auth-k1mZ4587A511CNTRL-uxq54KBAvb6YuhvZbxscb6rf7x8UwNiP"; # One-time key
|
||||||
|
};
|
||||||
|
radarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
tailproxy.radarr = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "radarr";
|
||||||
|
port = 7878;
|
||||||
|
authKey = "tskey-auth-kjuWphWmFp11CNTRL-dcpVCTbdPTAAiqQHaKVhTA27uNQeHxmq5"; # One-time key
|
||||||
|
};
|
||||||
|
bazarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
tailproxy.bazarr = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "bazarr";
|
||||||
|
port = 6767;
|
||||||
|
authKey = "tskey-auth-kydeAt7KDA21CNTRL-bLfZMG4ip4i4a91DX1b85ipjnZi9KgoN9"; # One-time key
|
||||||
|
};
|
||||||
|
prowlarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
tailproxy.prowlarr = {
|
||||||
|
enable = true;
|
||||||
|
hostname = "prowlarr";
|
||||||
|
port = 9696;
|
||||||
|
authKey = "tskey-auth-koCbGEVEvh11CNTRL-7pxqVBdP4v5xNvsPP5mMv5oW8PrgVQmb"; # One-time key
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
"${username}" = {
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"docker"
|
||||||
|
"storage"
|
||||||
|
];
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [ key ];
|
||||||
|
};
|
||||||
|
"root".openssh.authorizedKeys.keys = [ key ];
|
||||||
|
};
|
||||||
|
groups.media.members = [
|
||||||
|
"jolheiser"
|
||||||
|
"olheiser"
|
||||||
|
"jellyfin"
|
||||||
|
"radarr"
|
||||||
|
"sonarr"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [ qbittorrent ];
|
||||||
|
|
||||||
|
system.stateVersion = "22.11";
|
||||||
|
}
|
|
@ -6,8 +6,9 @@
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
boot.initrd.availableKernelModules = [
|
||||||
"xhci_pci"
|
"xhci_pci"
|
||||||
|
@ -18,9 +19,9 @@
|
||||||
"sd_mod"
|
"sd_mod"
|
||||||
"rtsx_pci_sdmmc"
|
"rtsx_pci_sdmmc"
|
||||||
];
|
];
|
||||||
boot.initrd.kernelModules = [];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = ["kvm-intel"];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/a3e3e496-9497-4340-9750-2104e2ab22ab";
|
device = "/dev/disk/by-uuid/a3e3e496-9497-4340-9750-2104e2ab22ab";
|
||||||
|
@ -30,11 +31,16 @@
|
||||||
fileSystems."/mnt/hdd" = {
|
fileSystems."/mnt/hdd" = {
|
||||||
device = "/dev/disk/by-uuid/eb8ad2da-12cf-454b-aa20-e497c4550b7c";
|
device = "/dev/disk/by-uuid/eb8ad2da-12cf-454b-aa20-e497c4550b7c";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
|
options = [
|
||||||
|
"users"
|
||||||
|
"nofail"
|
||||||
|
"gid=users"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-1f9bde68-9c4c-423c-a95f-17aa170dd2b4".device = "/dev/disk/by-uuid/1f9bde68-9c4c-423c-a95f-17aa170dd2b4";
|
boot.initrd.luks.devices."luks-1f9bde68-9c4c-423c-a95f-17aa170dd2b4".device = "/dev/disk/by-uuid/1f9bde68-9c4c-423c-a95f-17aa170dd2b4";
|
||||||
|
|
||||||
swapDevices = [{device = "/dev/disk/by-uuid/7e84d904-b00a-4c6c-aba4-ec1dde2dff85";}];
|
swapDevices = [ { device = "/dev/disk/by-uuid/7e84d904-b00a-4c6c-aba4-ec1dde2dff85"; } ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
@ -45,6 +51,5 @@
|
||||||
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
|
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
hardware.cpu.intel.updateMicrocode =
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
}
|
|
@ -1,34 +0,0 @@
|
||||||
{pkgs, ...}: let
|
|
||||||
username = "jolheiser";
|
|
||||||
in {
|
|
||||||
imports = [../common/gui];
|
|
||||||
|
|
||||||
networking.hostName = "masala";
|
|
||||||
|
|
||||||
wsl = {
|
|
||||||
enable = true;
|
|
||||||
defaultUser = username;
|
|
||||||
startMenuLaunchers = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users."${username}" = {
|
|
||||||
extraGroups = ["wheel" "docker"];
|
|
||||||
isNormalUser = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
libxcrypt
|
|
||||||
py39.python39
|
|
||||||
py39.python39Packages.virtualenv
|
|
||||||
py39.python39Packages.psycopg2
|
|
||||||
py39.python39Packages.wheel
|
|
||||||
py39.python39Packages.setuptools
|
|
||||||
py39.python39Packages.pip
|
|
||||||
python3Packages.twine
|
|
||||||
subversion
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "23.11";
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
{pkgs, ...}: let
|
|
||||||
username = "jolheiser";
|
|
||||||
in {
|
|
||||||
imports = [./hardware.nix ../common/gui];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
kernelParams = ["quiet" "splash"];
|
|
||||||
loader.grub = {
|
|
||||||
enable = true;
|
|
||||||
device = "/dev/sda";
|
|
||||||
useOSProber = true;
|
|
||||||
enableCryptodisk = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.secrets = {"/crypto_keyfile.bin" = null;};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices = {
|
|
||||||
"luks-1f9bde68-9c4c-423c-a95f-17aa170dd2b4".keyFile = "/crypto_keyfile.bin";
|
|
||||||
"luks-a2ca1842-1ce0-437e-ba5e-8864a41e81cb" = {
|
|
||||||
device = "/dev/disk/by-uuid/a2ca1842-1ce0-437e-ba5e-8864a41e81cb";
|
|
||||||
keyFile = "/crypto_keyfile.bin";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {bluetooth.enable = true;};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "matcha";
|
|
||||||
networkmanager.enable = true;
|
|
||||||
firewall.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
blueman.enable = true;
|
|
||||||
openssh.enable = true;
|
|
||||||
pcscd.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
users.users."${username}" = {
|
|
||||||
extraGroups = ["wheel" "docker" "storage"];
|
|
||||||
isNormalUser = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "22.11";
|
|
||||||
}
|
|
|
@ -1,9 +1,15 @@
|
||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
imports = [./hardware.nix ../common/gui];
|
imports = [
|
||||||
|
./hardware.nix
|
||||||
|
../common/gui
|
||||||
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
kernelParams = ["quiet" "splash"];
|
kernelParams = [
|
||||||
|
"quiet"
|
||||||
|
"splash"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
@ -11,15 +17,14 @@
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-c1c666de-2c68-4d50-98f1-3974ef424ff3".device = "/dev/disk/by-uuid/c1c666de-2c68-4d50-98f1-3974ef424ff3";
|
boot.initrd.luks.devices."luks-c1c666de-2c68-4d50-98f1-3974ef424ff3".device = "/dev/disk/by-uuid/c1c666de-2c68-4d50-98f1-3974ef424ff3";
|
||||||
|
|
||||||
hardware = {bluetooth.enable = true;};
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "sencha";
|
hostName = "sencha";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
firewall = {
|
firewall.enable = true;
|
||||||
enable = true;
|
|
||||||
allowedTCPPorts = [8096];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
|
@ -28,9 +33,27 @@
|
||||||
pcscd.enable = true;
|
pcscd.enable = true;
|
||||||
printing = {
|
printing = {
|
||||||
enable = true;
|
enable = true;
|
||||||
drivers = [pkgs.canon-cups-ufr2 pkgs.cnijfilter_4_00];
|
drivers = [
|
||||||
|
pkgs.canon-cups-ufr2
|
||||||
|
pkgs.cnijfilter_4_00
|
||||||
|
];
|
||||||
|
};
|
||||||
|
jellyfin = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
sonarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
radarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
bazarr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
jellyfin.enable = true;
|
|
||||||
mullvad-vpn = {
|
mullvad-vpn = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.mullvad-vpn;
|
package = pkgs.mullvad-vpn;
|
||||||
|
@ -40,12 +63,26 @@
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
users.users.olheiser.isNormalUser = true;
|
users = {
|
||||||
users.users.jolheiser = {
|
users = {
|
||||||
extraGroups = ["wheel" "docker" "storage"];
|
olheiser.isNormalUser = true;
|
||||||
|
jolheiser = {
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"docker"
|
||||||
|
"storage"
|
||||||
|
];
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
};
|
};
|
||||||
users.groups.media.members = ["jolheiser" "olheiser" "jellyfin"];
|
};
|
||||||
|
groups.media.members = [
|
||||||
|
"jolheiser"
|
||||||
|
"olheiser"
|
||||||
|
"jellyfin"
|
||||||
|
"radarr"
|
||||||
|
"sonarr"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
|
|
|
@ -1,33 +1,41 @@
|
||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
config,
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
lib,
|
||||||
];
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "sr_mod" "rtsx_usb_sdmmc" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"usbhid"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"sr_mod"
|
||||||
|
"rtsx_usb_sdmmc"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ ];
|
boot.kernelModules = [ ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/d1f561b1-bc50-4e34-9ca6-e973d2d9437a";
|
device = "/dev/disk/by-uuid/d1f561b1-bc50-4e34-9ca6-e973d2d9437a";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-75db2e03-a875-43ee-8ca8-70507b421641".device = "/dev/disk/by-uuid/75db2e03-a875-43ee-8ca8-70507b421641";
|
boot.initrd.luks.devices."luks-75db2e03-a875-43ee-8ca8-70507b421641".device = "/dev/disk/by-uuid/75db2e03-a875-43ee-8ca8-70507b421641";
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/A8A8-1D01";
|
device = "/dev/disk/by-uuid/A8A8-1D01";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices =
|
swapDevices = [ { device = "/dev/disk/by-uuid/5c3eb124-674b-4315-890d-137275aab504"; } ];
|
||||||
[ { device = "/dev/disk/by-uuid/5c3eb124-674b-4315-890d-137275aab504"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
{ 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,9 +1,8 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 E8j6/g 3YEltKNS2GZeGUIGuhVxQAs5bv5TpHtExTDGLRE46XU
|
-> ssh-ed25519 E8j6/g QWZGgeu5+89wRzWH31D1GdNuhrNyyKsKqv/b4Kkyn2s
|
||||||
3g5T+txUu8pJEyrIKRSuvOafYToXw4e0+e3EGYqO/4Q
|
3vYwTYDVOMyiNeE+NtNPyplmGiknjyTQvln2DRxUPg0
|
||||||
-> ssh-ed25519 f31uNA 16B+bom6u8H/7Ow+1m0JOMjH0biZeHQi4/6ao7Yfmz0
|
-> ssh-ed25519 f31uNA NVB2C1IjxvB25uA+PdB9lmNgmPQ16wSRl8lS0Wp4Tzg
|
||||||
O8yaDavuZhZrp/hdiidDXVXHbD9b6G5wUWN6Ic3lmek
|
Fe7BCcnb+1HzJ43Iq+YtHCI/i2m7TT5xO1rZwb9yZ70
|
||||||
-> xIu.+T?!-grease D5 iK}#} N,P?<&
|
--- 4Fmm3sQzE/funn3yI79REu1SVRzgUMQ1r8bUaNgVYZE
|
||||||
FPClNBflmHpIAS1WTSZw+cydtHuitkQKBVPV1RzF5zmp1FL/HlOh5A
|
Î<EFBFBD>Æ
|
||||||
--- guw/iQCkuXH+6Se6s0V5jCJ36aE0HBEoA4JnXiEZ864
|
—¸ü,Fï ê´õ/ÃÅ~Å”TëD’Û¨Ù<C2A8>‘”<E28098>t`)9ƒö<C692>óþ¬+xÙy~+
|
||||||
稾2酳ャィ<EFBFBD><EFBFBD>e・PEケKxaFマセ頼zF$甚抻厚<>2ャェユィ櫛5b云*|x]<5D>
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
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
|
|
@ -0,0 +1,8 @@
|
||||||
|
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,9 +1,7 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 E8j6/g vJ44QXH609Gdz21eaPJYfSl7LnGYIlH+OyXsgqN7FVc
|
-> ssh-ed25519 E8j6/g c3mP+3muM3Nk+CR8X2GRdVDgc88Y5FHblV7EzxaYF08
|
||||||
bZ2m/Z0PLtvEAe8mN1w2BKRJ9IlUloGFjqzDC+aPnNo
|
dVEE+rQ6Y7ki9Uyr+8B3xYRZtO9VeGWwFboasp5ycqg
|
||||||
-> ssh-ed25519 f31uNA j6nFenIYytjtCg5QKn7hcmUwhc67KI52Eri8+j1te2Q
|
-> ssh-ed25519 f31uNA Xq8QkBgX9mpIkenoJQCt+hyg/AVf/kwkVMJnOxqEARM
|
||||||
vVpqmJ3ilkCff4lD6nVlouiZRlqXKkA5Weo+TZtpHYU
|
tkte19pOr+Lb2lk1BVQibsC8d8k38oKwllx6cySVtt0
|
||||||
-> 1cou-grease tIV
|
--- geKlgkUKw/FYhJNqGSZmXoTSTfRQR+dlz7fq5WzL7SU
|
||||||
8F7BqbUT
|
Ïl,Ì<0E>Ù—¤ðÈWLÙð±ùú4VEÃÒøŸ¾€ÿ¹<C3BF>Ýbç6¥Y8†ÌÔÒØ
|
||||||
--- pxluaWPdPVE1fulpg5CjTeZnH2qdM2pUZwiy7WSk6qA
|
|
||||||
WÍ‘N•h;Ű4[=Ď:…śKIŹ&űČ-¶ŠŮUśśpË졒řUĎG8ç~sĘ3
|
|
Binary file not shown.
|
@ -3,27 +3,54 @@ let
|
||||||
matcha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILZxjkZLj/9xvmg1enK+B7k8qf6Px0j4kTZ2caQfYmB1";
|
matcha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILZxjkZLj/9xvmg1enK+B7k8qf6Px0j4kTZ2caQfYmB1";
|
||||||
genmaicha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKhyzwMV0eoS8RSAcUvLkPhbXoR9/06cLoBmUVyb9DTw";
|
genmaicha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKhyzwMV0eoS8RSAcUvLkPhbXoR9/06cLoBmUVyb9DTw";
|
||||||
sencha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJurjAMu4IXgpBwgUP0QvE2ySE5/Orn/yflkdWVvy6Am";
|
sencha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJurjAMu4IXgpBwgUP0QvE2ySE5/Orn/yflkdWVvy6Am";
|
||||||
chai = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA7PS9SJ+OVrUku9dPUQZigioy+r3VlFHVntsa/F7AdM";
|
|
||||||
masala = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEDltwsOkqNsP0Gia32jzUUzohzMYpE9uSwxBqJoG2Vd";
|
|
||||||
dragonwell = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN32Cwxer2AOGvEqSqXSPp49gj1VtR7G2XmPnmXj6o53";
|
dragonwell = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN32Cwxer2AOGvEqSqXSPp49gj1VtR7G2XmPnmXj6o53";
|
||||||
|
|
||||||
all = [jolheiser matcha genmaicha sencha chai masala dragonwell];
|
all = [
|
||||||
in {
|
jolheiser
|
||||||
|
matcha
|
||||||
|
genmaicha
|
||||||
|
sencha
|
||||||
|
dragonwell
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
"shared/cachix.age".publicKeys = all;
|
"shared/cachix.age".publicKeys = all;
|
||||||
"shared/ssh-config.age".publicKeys = all;
|
"shared/ssh-config.age".publicKeys = all;
|
||||||
"shared/ssh-config-work.age".publicKeys = all;
|
|
||||||
"shared/spotify.age".publicKeys = all;
|
"shared/spotify.age".publicKeys = all;
|
||||||
"shared/irc-pw.age".publicKeys = all;
|
"shared/irc-pw.age".publicKeys = all;
|
||||||
"shared/gist-pw.age".publicKeys = all;
|
"shared/gist-pw.age".publicKeys = all;
|
||||||
"shared/git-send-email.age".publicKeys = all;
|
"shared/git-send-email.age".publicKeys = all;
|
||||||
"work/netrc.age".publicKeys = [jolheiser chai masala];
|
"shared/llm.age".publicKeys = all;
|
||||||
"work/pip.conf.age".publicKeys = [jolheiser chai masala];
|
"personal/restic-env.age".publicKeys = [
|
||||||
"work/pypirc.age".publicKeys = [jolheiser chai masala];
|
jolheiser
|
||||||
"work/cifs.age".publicKeys = [jolheiser chai masala];
|
dragonwell
|
||||||
"personal/restic-env.age".publicKeys = [jolheiser dragonwell];
|
];
|
||||||
"personal/restic-pass.age".publicKeys = [jolheiser dragonwell];
|
"personal/restic-pass.age".publicKeys = [
|
||||||
"personal/restic-repo.age".publicKeys = [jolheiser dragonwell];
|
jolheiser
|
||||||
"personal/dex.age".publicKeys = [jolheiser dragonwell];
|
dragonwell
|
||||||
"personal/dex-tailscale.age".publicKeys = [jolheiser dragonwell];
|
];
|
||||||
"personal/jenkins.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
|
||||||
|
];
|
||||||
|
"personal/jenkins.age".publicKeys = [
|
||||||
|
jolheiser
|
||||||
|
dragonwell
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,14 @@
|
||||||
age-encryption.org/v1
|
age-encryption.org/v1
|
||||||
-> ssh-ed25519 E8j6/g FDACqhXF6WF0r++YUcxfxLeXVhyWPs7pzStaVsf+WDk
|
-> ssh-ed25519 E8j6/g x3c1iPetBHh6UHUPC0lbdsikCL8QfL/nsyma/4iYZTs
|
||||||
cEiiEjlJXV8LNA6Exvg70QoPdDeedRLVf37AFt5QaCI
|
tuvd6dfr4kcYakitJ4ke5Ru31jiJh8942XzhhSytwIg
|
||||||
-> ssh-ed25519 xUMv2w dWhqulynXSqCLa9u1Q9lGKBMGVZg9LCGATO843N7hV8
|
-> ssh-ed25519 xUMv2w j2ptgF7kd9RKBHut2n++jCDDp3mLKm4gIHpIG9Hg2xw
|
||||||
HySkoB4ro3BF9WmJOBD+70HeEJ56q4GYBzd+gulkeTY
|
390rYja1NPESmRCXgbiUJJVRQQEt5NLw+kySAk0vbWI
|
||||||
-> ssh-ed25519 ph+d2g R4PWRY+NhDF24tv70GJW1vsPsB9QpYihDMPsfkFiDSY
|
-> ssh-ed25519 ph+d2g 9NDTnvI0w2ooUsa1IlyYScNie4HcuUj3kk1C8mADakA
|
||||||
BlHYhA8CABxIHoPvUExIfH/TWcgRZzlC0diGDAv6Vt4
|
u9uQkf3YC0yuWX//58YMYdXjAOYLXQhj56zwGIIlpY8
|
||||||
-> ssh-ed25519 Cuo7gw jAd/EB+U99pI1sLMikC5GyTlksJWdfD4OUAffO1Bk3M
|
-> ssh-ed25519 Cuo7gw PagCT6dPTNZH4mfUyBWYmWp9f4LPsf7u3BIWg1r0VHM
|
||||||
zoEO1VNCNBrNTkVzVSxj7BQfvO7zxHyyK5LcR5BYYpM
|
Uem6hhHcUvAXSCezB0qiO0J2MI0BnO560MAP6UWhnFA
|
||||||
-> ssh-ed25519 jo1MPA dSgNY92AA7ajdEWYEYa8iHV8UxvssFFwLB04ujy9MVQ
|
-> ssh-ed25519 f31uNA 2MXm2EGDzWn8KT0AE35rhKMi8XBntmGXj8Mlx1DSfgw
|
||||||
FWF//+BYI1mBSletrzhWVmpbaikttT+5EdC7Nx1n8yw
|
ul4HdMXxWQSbqLJHLABits78rCBL0geTkT++ru9QWKI
|
||||||
-> ssh-ed25519 eyVEZQ GXbXx26XpZWfuUA0C4X6qUX+kqszU+R4tTU2DbVk7Fg
|
--- 8Sfze/lOcjaaD52+EST5endtf3Za9wFqFqggxpXwp8s
|
||||||
7/uCq+MgBGZ3/c0jPfP8pOhm1muY0nGAW2SLtYAqNZ0
|
ÎĎUÎma1Żţ~š4@ĺ şç”…_ë’p˙D¨š‚Ś
ĐŇ/ rC5ľžN3'Ä˝đV<>–V|¨[R<>€
Ä•Č< / _OUe7ŃĄţ›†ŕwsŹÁ?řÜC1Héhx(
öbP))‘ąÂÉéHń†Q„ţ€6<E282AC>žW‹0Üť<0B>.{
|
||||||
-> ssh-ed25519 f31uNA pB2iefe/IJ2DfnKke6Z4Dfs7XC7W8akZs7enMRjs/38
|
ËŐŇÝĄ’ĹQ|ŤRĽJ˝ęÍmăű6ż“ţŞ›Đ:T¸.ěâŇNoćI#a‹Bc<42>-*Jňĺ~gC-CαöĽ‰KorCĎěďG@AŤË7ÂXjĄ]ĂĄ7¶®ąĆ,?<3F>Ü—šşâvp<76><70>
|
||||||
0oVjdzrfvyBghxcfZo/RWFkmGH82YrChzZTbACdha8M
|
|
||||||
-> skta,%'-grease
|
|
||||||
P7xAIiGlHiTbYPT4+QbYiI9l0NLWCCfVqJi1haJSASQ5lpwPhbO+bRgPX/vu/pjO
|
|
||||||
9PA5QrwU0+8BmRuPSNZEny8xMGHMHS9IE9Mkcfzf/fDhgbYnviqGzN2wHQ
|
|
||||||
--- F4UtIaXx8fRS2jHGM+h12+hO48cDq1K3Vpo+fse4wks
|
|
||||||
÷µšbùÖ˜áK«à<EFBFBD>ÂTX™½É@ø6^øüÃy:!
|
|
||||||
bwsÛ nÑkѹwdbÎÐ<13>ÓÜç–S‡½™Ö@—d<E28094>Mb«F ¢<01>ëÀ/UêG \½Þ7}‘ZG]:AìJ‚³p,<2C>ÜÈ5YzTcس™«ÚÔ¾z°—<>„;³`¨ÚJ]MR¤Ï¹0•ƒXóu!L´0ÔðjÒ1RÔ½Šk]RëŸ*~Y‡zµ•P)ȯ!H)±-=YPÙGýlþ¬5êæbkEY4ž´
¶Žþ°RÁ9°´Üð˜ïš"¡àÀq®#¬M4
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,14 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 E8j6/g p21/KPTNTZrRXQUvPtlkHZuiFyNGkJWxF/yfhn643gk
|
||||||
|
jnN29WaHvFjMIjzVe0hkOEcolovBwjcgc2RfDlgY97E
|
||||||
|
-> ssh-ed25519 xUMv2w Dvet20WUzCfQeoKrdmCb12ouUNlePgFDdKEUZP82PmA
|
||||||
|
Prj/pjjj+oDqwKq+Q59aSj80YqICcgvulCBVy8CYx5Q
|
||||||
|
-> ssh-ed25519 ph+d2g vvjz0afKneI+lpiGGm8JuDTlJDlmoUygm/roW1vQphw
|
||||||
|
imYWGoW9O4MTbwTqXC5+5bH9sBf6qgkEJ8tNDtx6B0E
|
||||||
|
-> ssh-ed25519 Cuo7gw zUGiEgCtGzwZOVUl5T3jMBdwYzf657jMAbfJ/G1uGX8
|
||||||
|
jeoWPVh4+AVyGqdZlG1Do3XHT/bwojZsT14I8E3aF1s
|
||||||
|
-> ssh-ed25519 f31uNA KmRTboipwSZZyDV1d69x4Apn0IjeboMxhmFVJBm72XI
|
||||||
|
Rgk4ranEXY0mcyBX7nWnW31yKZ8J3hrfzMV5NeQ3tLk
|
||||||
|
--- RW/X1U5gc3VSKroi8ZAIHZt4tvNShY/viK2TE2WSY4Q
|
||||||
|
²™|utÖ<74>¤‹ÙP¦Î²fõ³ÈØ€ÏÜ^¯Ä<G_èB©fDA“<41>xÒÃhËàÍ|§þß<.ÀHF»¦'šP0YŒ'¡<¢õäŒÅ5“ï¢ÒG†™ý¬å Šuζ9ËCz17Lg†Ó‰p^új§<6A>PtÏ:j¶þ?¯½<Ÿs¢ì Ý®³{c<>9¸®ý˜ hÓç1Tö¼6T\ßSó¤s^©<10>Na©
|
||||||
|
0¯weÓ&yðšmd9
íš‹7|cGwØ~ý,Èv4®k˯;Ò9H0ŽfŒ.2Gø€:þ{™ŒWùE
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,12 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 E8j6/g gJuAvRgKZ+6ehBQyCNTunmig/KISAJnCYlOuzfBbvVk
|
|
||||||
nDft9dvAZ0yfZ++5gogeGNpeZ+/lZPWq55AiJuZ75fw
|
|
||||||
-> ssh-ed25519 jo1MPA cEjtf6w0pYrqucz2RiE4ZKU5NTYYcfZCc/x8DylfrxQ
|
|
||||||
a7zucSZ3r5iuoiuDOGqsdZKPtJImvxNECpY9oU2aw1I
|
|
||||||
-> ssh-ed25519 eyVEZQ PgAkkmsG71yet2D3YGhj7npiiRNmHdVhJSf5aQEdQAY
|
|
||||||
T2FHjCMGy3cVM2DoSrpTG9mUzwEYmaQqYeG8mfgizOo
|
|
||||||
-> n7f-grease
|
|
||||||
f9wMNntlF2Tg0Javc6ZA8o1J9unFH1lnE+0ahbwkWLRTvDkHDtFqipyk+/NdsaOW
|
|
||||||
936dsytbmxeoHo+TDJD3RLBEv3FC7bj6Jqxvy/xTa0TxPdOiD00
|
|
||||||
--- XKujnaAhHN7bDG5+6pI08Ph3ckoYjLhoYETBNe0nnO8
|
|
||||||
'ンェテタヌ<06><>ノ輦膨F^W*<12>Q-Iモ(<28>L)ーf
Bヘ!t6.ッ?;ェsI'湜ウ容el`ァ<>ej0!螂Yマ+゚ォ\s
|
|
|
@ -1,14 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 E8j6/g kMV8oOZ0VaMZpgXsITy926b2tz4gPkdFWCPBTjrHZws
|
|
||||||
d84LBwZKEseLfzxeWoAK4U7yvujb4tcHlhpN7ekrTMo
|
|
||||||
-> ssh-ed25519 jo1MPA rrGisZS1Cxz1MPrDVXM6onH1c1dR7Okin5Nt0xKwLCY
|
|
||||||
nm6d/qY8Nc/Sf/oYHlRkohlxrarK9YNVvOPLMQy0GKE
|
|
||||||
-> ssh-ed25519 eyVEZQ FzbjTRpUGtBADSjkghcbIMB54gfU9v5gdaRc0AIiU0g
|
|
||||||
KMx7n20YT98fnWVnL85U0hIXBSZLjmtAkb1xAJJsjyY
|
|
||||||
-> ,Xl5x-grease
|
|
||||||
IRMPRhKPrHEgzFPR7ina/RGj9ZrJBKjUPkvLHHeYbbqSTAVKaDvw7PB7PhKguZAS
|
|
||||||
sz9zClcUOw7oVCJrdBtxh7yk1jbswBHuAVth8WFprw
|
|
||||||
--- XdvJ6QFD6qJN6DGHUNeSO+NugB0GVvt+ikLmo9a/AQs
|
|
||||||
ÁÈgnûHZ2lYzbªh”r T8©}•þŒum 3yiCl§Í5ÚûÕaÂJd%ÒÙ„íPOöíó}÷$<24>™<>w
|
|
||||||
,I°ôÞD
|
|
||||||
^7¤ëœ-ÀÃâX€}®bü'€ë#øŽó¯d{^jÊÉ:×0ÓÉä¶v4p‡†Šÿ…O/éÓwÏøNñpÙ öÀk
|
|
|
@ -1,11 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 E8j6/g ANeIiD0aMBEXSThwdKuAkMEYakWtJ9oKsMx7Er5AQH8
|
|
||||||
TsRjG7NgYgjhsQqMngmnGZd4lWaxYp1M5LcWaGRIT9c
|
|
||||||
-> ssh-ed25519 jo1MPA aVw/p6M8uXyl4HZZJI4ZBZxuIT+CPC9+gBIsORnkUE0
|
|
||||||
q4PiJIE+RprxBASX3Sius4NgwTI3F/yvq6q0E9jkYjM
|
|
||||||
-> ssh-ed25519 eyVEZQ no+onP9+ihNw/gGM+6BfFLmrgVnTHHQ5wVvvzPZyv2I
|
|
||||||
HmFQH0vvkqoYZPRHePXe2lPAAC+WqVvjnYaa0DOjBpE
|
|
||||||
-> Qp-grease
|
|
||||||
T2r53ALi6jaq69uttwHKx25eZ+nJAf13HhLkaqI3TyFDSO32hA
|
|
||||||
--- jooKpUOZlHPop6yiTbUjVoSMV4Dd6lZLxJvNHfBZDJ4
|
|
||||||
~ý®Ð¯§v5¹i™ÂXµÎÚ]0`žõ¼¸D<`™üa6Õ²`“@Ž>Z¾ÀŠŸK¨±“yÂ,"î«Ò€Ý†&Œ#¢¥ªÞ’_`3wÊI¤º÷®BêkFPìÄlÅÝ\^ð£9è}*Yzb5˜=ŒÁ?ž-êmk_SØÔ”33¤Ú¢\
|
|
Binary file not shown.
Loading…
Reference in New Issue