mirror of https://git.jolheiser.com/dotnix.git
parent
43d6f7fe48
commit
147b2f4c12
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../nogui
|
../nogui
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
|
@ -24,24 +25,26 @@
|
||||||
nodePackages.yaml-language-server
|
nodePackages.yaml-language-server
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
dconf.settings = let
|
dconf.settings =
|
||||||
wallpaper = pkgs.fetchurl {
|
let
|
||||||
url = "https://user.fm/files/v2-3834da30df507c4ba97a551571e98e33/nixppuccin.png";
|
wallpaper = pkgs.fetchurl {
|
||||||
hash = "sha256-dwM+Wi2gse7Eu4f/suU2BsVACPHMfSaXYOpZPqx6/SQ=";
|
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";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
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,9 +61,9 @@
|
||||||
"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://github.com/"; }
|
||||||
{url = "https://git.jojodev.com/";}
|
{ url = "https://git.jojodev.com/"; }
|
||||||
{url = "https://git.jolheiser.com";}
|
{ url = "https://git.jolheiser.com"; }
|
||||||
];
|
];
|
||||||
"browser.fixup.domainwhitelist.go" = true; # golink
|
"browser.fixup.domainwhitelist.go" = true; # golink
|
||||||
};
|
};
|
||||||
|
@ -73,31 +77,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,25 +115,28 @@
|
||||||
bookmarks = [
|
bookmarks = [
|
||||||
{
|
{
|
||||||
name = "golink";
|
name = "golink";
|
||||||
tags = ["tailscale"];
|
tags = [ "tailscale" ];
|
||||||
keyword = "go";
|
keyword = "go";
|
||||||
url = "http://go";
|
url = "http://go";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "tclip";
|
name = "tclip";
|
||||||
tags = ["tailscale"];
|
tags = [ "tailscale" ];
|
||||||
keyword = "paste";
|
keyword = "paste";
|
||||||
url = "http://paste";
|
url = "http://paste";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "ugit";
|
name = "ugit";
|
||||||
tags = ["tailscale" "git"];
|
tags = [
|
||||||
|
"tailscale"
|
||||||
|
"git"
|
||||||
|
];
|
||||||
keyword = "git";
|
keyword = "git";
|
||||||
url = "http://git";
|
url = "http://git";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "jellyfin";
|
name = "jellyfin";
|
||||||
tags = ["jellyfin"];
|
tags = [ "jellyfin" ];
|
||||||
keyword = "jellyfin";
|
keyword = "jellyfin";
|
||||||
url = "http://sencha:8096";
|
url = "http://sencha:8096";
|
||||||
}
|
}
|
||||||
|
@ -134,20 +144,29 @@
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
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";
|
name = "git-pr";
|
||||||
tags = ["git" "pr"];
|
tags = [
|
||||||
|
"git"
|
||||||
|
"pr"
|
||||||
|
];
|
||||||
keyword = "git-pr";
|
keyword = "git-pr";
|
||||||
url = "https://pr.jolheiser.com";
|
url = "https://pr.jolheiser.com";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "todo";
|
name = "todo";
|
||||||
tags = ["vikunja" "todo"];
|
tags = [
|
||||||
|
"vikunja"
|
||||||
|
"todo"
|
||||||
|
];
|
||||||
keyword = "todo";
|
keyword = "todo";
|
||||||
url = "https://todo.jolheiser.com";
|
url = "https://todo.jolheiser.com";
|
||||||
}
|
}
|
||||||
|
@ -156,7 +175,7 @@
|
||||||
# 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/";
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,9 +42,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg = let
|
xdg =
|
||||||
themeDir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}";
|
let
|
||||||
in
|
themeDir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}";
|
||||||
|
in
|
||||||
lib.mkIf config.gtk.enable {
|
lib.mkIf config.gtk.enable {
|
||||||
configFile = {
|
configFile = {
|
||||||
"gtk-4.0/assets" = {
|
"gtk-4.0/assets" = {
|
||||||
|
|
|
@ -1,17 +1,22 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
xdg.configFile."spotify-player/theme.toml".text = builtins.readFile (pkgs.fetchFromGitHub {
|
{
|
||||||
|
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" {
|
);
|
||||||
client_id = "41af4976ba70474fbd541ee8764a2cda";
|
xdg.configFile."spotify-player/app.toml".source =
|
||||||
theme = "Catppuccin-mocha";
|
(pkgs.formats.toml { }).generate "spotify-player-config"
|
||||||
enable_notify = false;
|
{
|
||||||
enable_media_control = true;
|
client_id = "41af4976ba70474fbd541ee8764a2cda";
|
||||||
device.volume = 100;
|
theme = "Catppuccin-mocha";
|
||||||
};
|
enable_notify = false;
|
||||||
|
enable_media_control = true;
|
||||||
|
device.volume = 100;
|
||||||
|
};
|
||||||
programs.nushell.shellAliases.spt = "spotify_player";
|
programs.nushell.shellAliases.spt = "spotify_player";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
programs.tiny = {
|
programs.tiny = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -8,9 +9,12 @@
|
||||||
port = 6697;
|
port = 6697;
|
||||||
tls = true;
|
tls = true;
|
||||||
realname = "jolheiser";
|
realname = "jolheiser";
|
||||||
nicks = ["jolheiser"];
|
nicks = [ "jolheiser" ];
|
||||||
alias = "LiberaChat";
|
alias = "LiberaChat";
|
||||||
join = ["#gitea" "#gitea-devel"];
|
join = [
|
||||||
|
"#gitea"
|
||||||
|
"#gitea-devel"
|
||||||
|
];
|
||||||
sasl = {
|
sasl = {
|
||||||
username = "jolheiser";
|
username = "jolheiser";
|
||||||
password = {
|
password = {
|
||||||
|
@ -20,7 +24,7 @@
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
defaults = {
|
defaults = {
|
||||||
nicks = ["jolheiser"];
|
nicks = [ "jolheiser" ];
|
||||||
realname = "jolheiser";
|
realname = "jolheiser";
|
||||||
};
|
};
|
||||||
key_map = {
|
key_map = {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
home.packages = [pkgs.zed-editor];
|
{
|
||||||
|
home.packages = [ pkgs.zed-editor ];
|
||||||
xdg.configFile."zed/settings.json".text = builtins.toJSON {
|
xdg.configFile."zed/settings.json".text = builtins.toJSON {
|
||||||
buffer_font_family = "Monaspace Neon";
|
buffer_font_family = "Monaspace Neon";
|
||||||
buffer_font_size = 16;
|
buffer_font_size = 16;
|
||||||
|
@ -10,7 +11,9 @@
|
||||||
};
|
};
|
||||||
terminal = {
|
terminal = {
|
||||||
font_family = "Monaspace Neon";
|
font_family = "Monaspace Neon";
|
||||||
shell = {program = "nu";};
|
shell = {
|
||||||
|
program = "nu";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
theme = "Catppuccin Mocha";
|
theme = "Catppuccin Mocha";
|
||||||
ui_font_size = 16;
|
ui_font_size = 16;
|
||||||
|
|
|
@ -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
|
||||||
|
@ -52,7 +49,7 @@
|
||||||
jsonnet-language-server
|
jsonnet-language-server
|
||||||
|
|
||||||
# Formatters
|
# Formatters
|
||||||
alejandra
|
nixfmt-rfc-style
|
||||||
gofumpt
|
gofumpt
|
||||||
|
|
||||||
# Flake overlays
|
# Flake overlays
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{lib, ...}: {
|
{ lib, ... }:
|
||||||
|
{
|
||||||
programs.eza = {
|
programs.eza = {
|
||||||
enable = true;
|
enable = true;
|
||||||
git = true;
|
git = true;
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
{
|
{ pkgs, config, ... }:
|
||||||
pkgs,
|
let
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: 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}:";
|
||||||
|
@ -17,7 +14,8 @@
|
||||||
ssh.allowedSignersFile = "${pkgs.writeText "allowedSigners" "git@jolheiser.com ${key}"}";
|
ssh.allowedSignersFile = "${pkgs.writeText "allowedSigners" "git@jolheiser.com ${key}"}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = "jolheiser";
|
userName = "jolheiser";
|
||||||
|
@ -40,38 +38,37 @@ in {
|
||||||
tui = "!lazygit";
|
tui = "!lazygit";
|
||||||
};
|
};
|
||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
ignores = [".idea/" "result" "node_modules" "ve"];
|
ignores = [
|
||||||
extraConfig =
|
".idea/"
|
||||||
{
|
"result"
|
||||||
init.defaultBranch = "main";
|
"node_modules"
|
||||||
merge.conflictstyle = "zdiff3";
|
"ve"
|
||||||
diff.colorMoved = "default";
|
];
|
||||||
core.editor = "hx";
|
extraConfig = {
|
||||||
push = {
|
init.defaultBranch = "main";
|
||||||
sutoSetupRemote = true;
|
merge.conflictstyle = "zdiff3";
|
||||||
default = "current";
|
diff.colorMoved = "default";
|
||||||
gpgSign = "if-asked";
|
core.editor = "hx";
|
||||||
};
|
push = {
|
||||||
rerere.enabled = true;
|
sutoSetupRemote = true;
|
||||||
pull.rebase = true;
|
default = "current";
|
||||||
diff.algorithm = "histogram";
|
gpgSign = "if-asked";
|
||||||
merge.tool = "hx";
|
};
|
||||||
url =
|
rerere.enabled = true;
|
||||||
insteadOf "jo" "git.jolheiser.com"
|
pull.rebase = true;
|
||||||
// insteadOf "gh" "github.com"
|
diff.algorithm = "histogram";
|
||||||
// insteadOf "jj" "git.jojodev.com"
|
merge.tool = "hx";
|
||||||
// insteadOf "gt" "gitea.com"
|
url =
|
||||||
// insteadOf "gl" "gitlab.com"
|
insteadOf "jo" "git.jolheiser.com"
|
||||||
// insteadOf "cb" "codeberg.org";
|
// insteadOf "gh" "github.com"
|
||||||
}
|
// insteadOf "jj" "git.jojodev.com"
|
||||||
// sshSigning;
|
// insteadOf "gt" "gitea.com"
|
||||||
|
// insteadOf "gl" "gitlab.com"
|
||||||
|
// insteadOf "cb" "codeberg.org";
|
||||||
|
} // sshSigning;
|
||||||
difftastic = {
|
difftastic = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
includes = [
|
includes = [ { path = config.age.secrets.git-send-email.path; } ];
|
||||||
{
|
|
||||||
path = config.age.secrets.git-send-email.path;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
let
|
let
|
||||||
goPath = ".local/share/go";
|
goPath = ".local/share/go";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
programs.go = {
|
programs.go = {
|
||||||
inherit goPath;
|
inherit goPath;
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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" = { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
programs.jujutsu = {
|
programs.jujutsu = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -7,7 +8,12 @@
|
||||||
email = "git@jolheiser.com";
|
email = "git@jolheiser.com";
|
||||||
};
|
};
|
||||||
ui = {
|
ui = {
|
||||||
diff.tool = ["${pkgs.difftastic}/bin/difft" "--color=always" "$left" "$right"];
|
diff.tool = [
|
||||||
|
"${pkgs.difftastic}/bin/difft"
|
||||||
|
"--color=always"
|
||||||
|
"$left"
|
||||||
|
"$right"
|
||||||
|
];
|
||||||
editor = "hx";
|
editor = "hx";
|
||||||
};
|
};
|
||||||
signing = {
|
signing = {
|
||||||
|
|
|
@ -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" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
programs.oh-my-posh = {
|
programs.oh-my-posh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings =
|
settings = builtins.fromJSON (
|
||||||
builtins.fromJSON (builtins.unsafeDiscardStringContext
|
builtins.unsafeDiscardStringContext (builtins.readFile ./ohmyposh/config.json)
|
||||||
(builtins.readFile ./ohmyposh/config.json));
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
programs.senpai = {
|
programs.senpai = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = {
|
config = {
|
||||||
address = "ircs+insecure://irc.jolheiser.com:6697";
|
address = "ircs+insecure://irc.jolheiser.com:6697";
|
||||||
nickname = "jolheiser";
|
nickname = "jolheiser";
|
||||||
password-cmd = ["cat" "${config.age.secrets.irc-pw.path}"];
|
password-cmd = [
|
||||||
|
"cat"
|
||||||
|
"${config.age.secrets.irc-pw.path}"
|
||||||
|
];
|
||||||
#channel = "#pico.sh #gitea";
|
#channel = "#pico.sh #gitea";
|
||||||
typings = false;
|
typings = false;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
includes = [
|
includes = [ config.age.secrets.ssh-config.path ];
|
||||||
config.age.secrets.ssh-config.path
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{config, ...}: {
|
{ config, ... }:
|
||||||
|
{
|
||||||
xdg = {
|
xdg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userDirs.enable = true;
|
userDirs.enable = true;
|
||||||
|
|
267
flake.nix
267
flake.nix
|
@ -120,143 +120,148 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs =
|
||||||
nixpkgs,
|
{
|
||||||
home-manager,
|
nixpkgs,
|
||||||
nixos-hardware,
|
home-manager,
|
||||||
agenix,
|
nixos-hardware,
|
||||||
wsl,
|
agenix,
|
||||||
...
|
wsl,
|
||||||
} @ inputs: let
|
...
|
||||||
overlays = [
|
}@inputs:
|
||||||
(_: prev: {
|
let
|
||||||
nur = import inputs.nur {
|
overlays = [
|
||||||
nurpkgs = prev;
|
(_: prev: {
|
||||||
pkgs = prev;
|
nur = import inputs.nur {
|
||||||
};
|
nurpkgs = prev;
|
||||||
jolheiser = {
|
pkgs = prev;
|
||||||
nur = inputs.jolheiser-nur.packages.${prev.system};
|
};
|
||||||
helix = inputs.helix.packages.${prev.system}.default;
|
jolheiser = {
|
||||||
website = inputs.website.packages.${prev.system}.default;
|
nur = inputs.jolheiser-nur.packages.${prev.system};
|
||||||
resume = inputs.resume.packages.${prev.system}.default;
|
helix = inputs.helix.packages.${prev.system}.default;
|
||||||
git-age = inputs.git-age.packages.${prev.system}.default;
|
website = inputs.website.packages.${prev.system}.default;
|
||||||
gist = inputs.gist.packages.${prev.system}.default;
|
resume = inputs.resume.packages.${prev.system}.default;
|
||||||
tmpl = inputs.tmpl.packages.${prev.system}.default;
|
git-age = inputs.git-age.packages.${prev.system}.default;
|
||||||
gomodinit = inputs.gomodinit.packages.${prev.system}.default;
|
gist = inputs.gist.packages.${prev.system}.default;
|
||||||
cfg = inputs.cfg.packages.${prev.system}.default;
|
tmpl = inputs.tmpl.packages.${prev.system}.default;
|
||||||
blog = inputs.blog.packages.${prev.system}.default;
|
gomodinit = inputs.gomodinit.packages.${prev.system}.default;
|
||||||
bennet = inputs.bennet.packages.${prev.system}.default;
|
cfg = inputs.cfg.packages.${prev.system}.default;
|
||||||
};
|
blog = inputs.blog.packages.${prev.system}.default;
|
||||||
tclip = inputs.tclip.packages.${prev.system}.tclip;
|
bennet = inputs.bennet.packages.${prev.system}.default;
|
||||||
templ = inputs.templ.packages.${prev.system}.templ;
|
};
|
||||||
})
|
tclip = inputs.tclip.packages.${prev.system}.tclip;
|
||||||
inputs.golink.overlay
|
templ = inputs.templ.packages.${prev.system}.templ;
|
||||||
];
|
})
|
||||||
pkgs = import inputs.nixpkgs {
|
inputs.golink.overlay
|
||||||
inherit overlays system;
|
];
|
||||||
config.allowUnfree = true;
|
pkgs = import inputs.nixpkgs {
|
||||||
};
|
inherit overlays system;
|
||||||
commonConfig = {config, ...}: {
|
config.allowUnfree = true;
|
||||||
config = {
|
|
||||||
nixpkgs.overlays = overlays;
|
|
||||||
# TODO Remove when apps are updated
|
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
|
||||||
"electron-25.9.0"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
commonConfig =
|
||||||
username = "jolheiser";
|
{ config, ... }:
|
||||||
system = "x86_64-linux";
|
{
|
||||||
homeManagerModules = [
|
config = {
|
||||||
agenix.homeManagerModules.age
|
nixpkgs.overlays = overlays;
|
||||||
{
|
# TODO Remove when apps are updated
|
||||||
home = {
|
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ];
|
||||||
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 = {
|
|
||||||
file = ./secrets/shared/spotify.age;
|
|
||||||
path = "/home/${username}/.cache/spotify-player/credentials.json";
|
|
||||||
};
|
|
||||||
irc-pw.file = ./secrets/shared/irc-pw.age;
|
|
||||||
gist-pw.file = ./secrets/shared/gist-pw.age;
|
|
||||||
git-send-email.file = ./secrets/shared/git-send-email.age;
|
|
||||||
cachix = {
|
|
||||||
file = ./secrets/shared/cachix.age;
|
|
||||||
path = "/home/${username}/.config/cachix/cachix.dhall";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
username = "jolheiser";
|
||||||
./apps/gui
|
system = "x86_64-linux";
|
||||||
];
|
homeManagerModules = [
|
||||||
in {
|
agenix.homeManagerModules.age
|
||||||
inherit homeManagerModules;
|
{
|
||||||
homeConfigurations = {
|
home = {
|
||||||
"jolheiser" = home-manager.lib.homeManagerConfiguration {
|
inherit username;
|
||||||
inherit pkgs;
|
homeDirectory = "/home/${username}";
|
||||||
modules = homeManagerModules;
|
};
|
||||||
};
|
age = {
|
||||||
};
|
secretsDir = "/home/${username}/.agenix/agenix";
|
||||||
nixosConfigurations = {
|
secretsMountPoint = "/home/${username}/.agenix/agenix.d";
|
||||||
"matcha" = nixpkgs.lib.nixosSystem {
|
identityPaths = [ "/home/${username}/.ssh/nix" ];
|
||||||
inherit system;
|
secrets = {
|
||||||
modules = [
|
ssh-config.file = ./secrets/shared/ssh-config.age;
|
||||||
./machines/matcha
|
spotify = {
|
||||||
commonConfig
|
file = ./secrets/shared/spotify.age;
|
||||||
];
|
path = "/home/${username}/.cache/spotify-player/credentials.json";
|
||||||
};
|
};
|
||||||
"genmaicha" = nixpkgs.lib.nixosSystem {
|
irc-pw.file = ./secrets/shared/irc-pw.age;
|
||||||
inherit system;
|
gist-pw.file = ./secrets/shared/gist-pw.age;
|
||||||
modules = [
|
git-send-email.file = ./secrets/shared/git-send-email.age;
|
||||||
nixos-hardware.nixosModules.framework-13-7040-amd
|
cachix = {
|
||||||
./machines/genmaicha
|
file = ./secrets/shared/cachix.age;
|
||||||
commonConfig
|
path = "/home/${username}/.config/cachix/cachix.dhall";
|
||||||
];
|
};
|
||||||
};
|
};
|
||||||
"sencha" = nixpkgs.lib.nixosSystem {
|
};
|
||||||
inherit system;
|
}
|
||||||
modules = [
|
./apps/gui
|
||||||
./machines/sencha
|
];
|
||||||
commonConfig
|
in
|
||||||
];
|
{
|
||||||
};
|
inherit homeManagerModules;
|
||||||
};
|
homeConfigurations = {
|
||||||
colmena = {
|
"jolheiser" = home-manager.lib.homeManagerConfiguration {
|
||||||
meta = {
|
inherit pkgs;
|
||||||
nixpkgs = import nixpkgs {
|
modules = homeManagerModules;
|
||||||
inherit overlays system;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
dragonwell = {pkgs, ...}: {
|
nixosConfigurations = {
|
||||||
imports = [
|
"matcha" = nixpkgs.lib.nixosSystem {
|
||||||
inputs.agenix.nixosModules.default
|
inherit system;
|
||||||
inputs.golink.nixosModules.default
|
modules = [
|
||||||
inputs.ugit.nixosModules.default
|
./machines/matcha
|
||||||
inputs.git-pr.nixosModules.default
|
commonConfig
|
||||||
inputs.actual.nixosModules.default
|
];
|
||||||
inputs.tsnet-serve.nixosModules.default
|
};
|
||||||
./modules/tclip
|
"genmaicha" = nixpkgs.lib.nixosSystem {
|
||||||
./machines/dragonwell
|
inherit system;
|
||||||
|
modules = [
|
||||||
|
nixos-hardware.nixosModules.framework-13-7040-amd
|
||||||
|
./machines/genmaicha
|
||||||
|
commonConfig
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"sencha" = nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
modules = [
|
||||||
|
./machines/sencha
|
||||||
|
commonConfig
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
colmena = {
|
||||||
|
meta = {
|
||||||
|
nixpkgs = import nixpkgs { inherit overlays system; };
|
||||||
|
};
|
||||||
|
dragonwell =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.agenix.nixosModules.default
|
||||||
|
inputs.golink.nixosModules.default
|
||||||
|
inputs.ugit.nixosModules.default
|
||||||
|
inputs.git-pr.nixosModules.default
|
||||||
|
inputs.actual.nixosModules.default
|
||||||
|
inputs.tsnet-serve.nixosModules.default
|
||||||
|
./modules/tclip
|
||||||
|
./machines/dragonwell
|
||||||
|
];
|
||||||
|
services.tclip.package = inputs.tclip.packages.${pkgs.system}.tclipd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
nixConfig = {
|
||||||
|
extra-substitutors = [ "https://jolheiser.cachix.org" ];
|
||||||
|
extra-trusted-public-keys = [
|
||||||
|
"jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
devShells.${system}.default = pkgs.mkShell {
|
||||||
|
nativeBuildInputs = [
|
||||||
|
agenix.packages.${system}.agenix
|
||||||
|
pkgs.colmena
|
||||||
];
|
];
|
||||||
services.tclip.package = inputs.tclip.packages.${pkgs.system}.tclipd;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixConfig = {
|
|
||||||
extra-substitutors = ["https://jolheiser.cachix.org"];
|
|
||||||
extra-trusted-public-keys = ["jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg="];
|
|
||||||
};
|
|
||||||
devShells.${system}.default = pkgs.mkShell {
|
|
||||||
nativeBuildInputs = [
|
|
||||||
agenix.packages.${system}.agenix
|
|
||||||
pkgs.colmena
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
imports = [../nogui];
|
{
|
||||||
|
imports = [ ../nogui ];
|
||||||
|
|
||||||
sound.enable = true;
|
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 +23,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"
|
||||||
|
@ -45,12 +46,20 @@
|
||||||
gc.automatic = true;
|
gc.automatic = true;
|
||||||
package = pkgs.nixVersions.stable;
|
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"];
|
substituters = [ "https://jolheiser.cachix.org" ];
|
||||||
trusted-public-keys = ["jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg="];
|
trusted-public-keys = [ "jolheiser.cachix.org-1:fiKkfTuHFqDK5ZOVxcqb4InUkKsrTvtMLISid7XvuVg=" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -64,6 +73,10 @@
|
||||||
services.tailscale.enable = true;
|
services.tailscale.enable = true;
|
||||||
|
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [podman podman-compose podman-tui];
|
systemPackages = with pkgs; [
|
||||||
|
podman
|
||||||
|
podman-compose
|
||||||
|
podman-tui
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{pkgs, ...}: let
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
modules = import ./go.nix;
|
modules = import ./go.nix;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
services.caddy = {
|
services.caddy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
|
@ -8,15 +10,17 @@ in {
|
||||||
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 ${
|
||||||
subject = "acct:john@jolheiser.com";
|
builtins.toJSON {
|
||||||
links = [
|
subject = "acct:john@jolheiser.com";
|
||||||
{
|
links = [
|
||||||
rel = "http://openid.net/specs/connect/1.0/issuer";
|
{
|
||||||
href = "https://auth.jolheiser.com";
|
rel = "http://openid.net/specs/connect/1.0/issuer";
|
||||||
|
href = "https://auth.jolheiser.com";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
];
|
}
|
||||||
}}
|
|
||||||
}
|
}
|
||||||
handle_path /bennet* {
|
handle_path /bennet* {
|
||||||
root * ${pkgs.jolheiser.bennet}
|
root * ${pkgs.jolheiser.bennet}
|
||||||
|
@ -32,7 +36,7 @@ in {
|
||||||
file_server
|
file_server
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
serverAliases = ["www.jolheiser.com"];
|
serverAliases = [ "www.jolheiser.com" ];
|
||||||
};
|
};
|
||||||
"blog.jolheiser.com" = {
|
"blog.jolheiser.com" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
|
|
@ -1,8 +1,23 @@
|
||||||
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-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfKqCWtDlS3tgvfT6hQN+ii8UtabIZ+ZNmYN+bLwIa8PHOEW5MbfaqXSlhKkSi4+7SfQDCHphw0SMfhsQ4qMEcoywZ+4niDgKlQEVkl+S/VGbLuPe92NRStkyreZBLPr3Rh7ScNlGHcmHmoV9v7725fMnsMmabGVhpGO84PwNHOfJyv2tx2h6LxFbAV8S44UQu2lc8YLWCK2UvKuRnBerBXLnDQThUUX8UuCFzb786gQzD5XDU0MENbByxiy0XdVGAC+tFXEiSIgFZlFbFYyShgdTP9MzX2MOglEi+ae+1UIFncraW7ptUey7qHFJylpHWWWvE+GTwsg2G50i0FvFj jolheiser@jolheiser'';
|
||||||
in {
|
in
|
||||||
imports = [./actual.nix ./caddy.nix ./dex.nix ./git-pr.nix ./golink.nix ./gotosocial.nix ./restic.nix ./soju.nix ./tandoor.nix ./tclip.nix ./ugit.nix ./vikunja.nix ./hardware.nix];
|
{
|
||||||
|
imports = [
|
||||||
|
./actual.nix
|
||||||
|
./caddy.nix
|
||||||
|
./dex.nix
|
||||||
|
./git-pr.nix
|
||||||
|
./golink.nix
|
||||||
|
./gotosocial.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,7 +27,11 @@ in {
|
||||||
|
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedTCPPorts = [80 443 6697];
|
allowedTCPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
6697
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -23,13 +42,15 @@ in {
|
||||||
|
|
||||||
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.
|
@ -3,7 +3,9 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
url = "pr.jolheiser.com";
|
url = "pr.jolheiser.com";
|
||||||
admins = ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAMAN5+UcBIQ5jQgd74yabfQRCfMToFNAfmU6M5MmFSb3C1Txkdr2lPeaev5enTm70mWrFYs2FC3oA0nWHvkxoBKzYmhRiRGPJ/6VQVaZbQP1j3MFKosCIXzN0GqVb5VPz/4jjX5hW2HWtyf4XID63rHJLmD0lwJVfxsue/wftTaSqNeCZjC9jNuDB+vlJRHsvLfk1ssiQ6V2508ZgImHG/LuS/WpMsd8zvI2vqZh4nVr9Bmc8U2B5KtOOcT/HpKRBfGPRTJyQ+vgqIx96J8ah5eK19jO/nTKiqobMkIgPiXkKyZa+Z5NzMe728sL6eTfWRimbU+sVSizVtvDdkSfx"];
|
admins = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAMAN5+UcBIQ5jQgd74yabfQRCfMToFNAfmU6M5MmFSb3C1Txkdr2lPeaev5enTm70mWrFYs2FC3oA0nWHvkxoBKzYmhRiRGPJ/6VQVaZbQP1j3MFKosCIXzN0GqVb5VPz/4jjX5hW2HWtyf4XID63rHJLmD0lwJVfxsue/wftTaSqNeCZjC9jNuDB+vlJRHsvLfk1ssiQ6V2508ZgImHG/LuS/WpMsd8zvI2vqZh4nVr9Bmc8U2B5KtOOcT/HpKRBfGPRTJyQ+vgqIx96J8ah5eK19jO/nTKiqobMkIgPiXkKyZa+Z5NzMe728sL6eTfWRimbU+sVSizVtvDdkSfx"
|
||||||
|
];
|
||||||
sshPort = 7448;
|
sshPort = 7448;
|
||||||
enableWeb = true;
|
enableWeb = true;
|
||||||
webPort = 7449;
|
webPort = 7449;
|
||||||
|
|
|
@ -10,12 +10,13 @@ let
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
builtins.concatStringsSep "\n" (builtins.map (module: ''
|
builtins.concatStringsSep "\n" (
|
||||||
respond /${module.name}* `<html><head>
|
builtins.map (module: ''
|
||||||
<meta name="go-import" content="go.jolheiser.com/${module.name} git https://${module.repo}.git">
|
respond /${module.name}* `<html><head>
|
||||||
<meta http-equiv="refresh" content="3; url=https://pkg.go.dev/go.jolheiser.com/${module.name}" />
|
<meta name="go-import" content="go.jolheiser.com/${module.name} git https://${module.repo}.git">
|
||||||
</head><body>
|
<meta http-equiv="refresh" content="3; url=https://pkg.go.dev/go.jolheiser.com/${module.name}" />
|
||||||
Redirecting to <a href="https://pkg.go.dev/go.jolheiser.com/${module.name}">https://pkg.go.dev/go.jolheiser.com/${module.name}</a>
|
</head><body>
|
||||||
</body></html>`
|
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)
|
'') 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,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;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{lib, ...}: let
|
{ lib, ... }:
|
||||||
|
let
|
||||||
baseCertPath = "/var/lib/acme/irc.jolheiser.com";
|
baseCertPath = "/var/lib/acme/irc.jolheiser.com";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
security.acme = {
|
security.acme = {
|
||||||
acceptTerms = true;
|
acceptTerms = true;
|
||||||
email = "irc@jolheiser.com";
|
email = "irc@jolheiser.com";
|
||||||
|
@ -26,6 +28,6 @@ in {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
group = "soju";
|
group = "soju";
|
||||||
};
|
};
|
||||||
groups.soju = {};
|
groups.soju = { };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
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-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAMAN5+UcBIQ5jQgd74yabfQRCfMToFNAfmU6M5MmFSb3C1Txkdr2lPeaev5enTm70mWrFYs2FC3oA0nWHvkxoBKzYmhRiRGPJ/6VQVaZbQP1j3MFKosCIXzN0GqVb5VPz/4jjX5hW2HWtyf4XID63rHJLmD0lwJVfxsue/wftTaSqNeCZjC9jNuDB+vlJRHsvLfk1ssiQ6V2508ZgImHG/LuS/WpMsd8zvI2vqZh4nVr9Bmc8U2B5KtOOcT/HpKRBfGPRTJyQ+vgqIx96J8ah5eK19jO/nTKiqobMkIgPiXkKyZa+Z5NzMe728sL6eTfWRimbU+sVSizVtvDdkSfx"
|
||||||
|
];
|
||||||
tsAuthKey = "tskey-auth-kRUJE7zxH621CNTRL-Td29STXSrtTUHdacaKaYtTD82uyDXZj7"; # One-time key
|
tsAuthKey = "tskey-auth-kRUJE7zxH621CNTRL-Td29STXSrtTUHdacaKaYtTD82uyDXZj7"; # One-time key
|
||||||
config = {
|
config = {
|
||||||
ssh.clone-url = "ugit@git.jolheiser.com";
|
ssh.clone-url = "ugit@git.jolheiser.com";
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6,15 +6,20 @@
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
imports = [
|
{
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod"];
|
boot.initrd.availableKernelModules = [
|
||||||
boot.initrd.kernelModules = [];
|
"nvme"
|
||||||
boot.kernelModules = ["kvm-amd"];
|
"xhci_pci"
|
||||||
boot.extraModulePackages = [];
|
"thunderbolt"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/90652083-df9c-42df-8c8a-8d979a3e1e0c";
|
device = "/dev/disk/by-uuid/90652083-df9c-42df-8c8a-8d979a3e1e0c";
|
||||||
|
@ -26,9 +31,7 @@
|
||||||
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
|
||||||
|
|
|
@ -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.grub = {
|
loader.grub = {
|
||||||
enable = true;
|
enable = true;
|
||||||
device = "/dev/sda";
|
device = "/dev/sda";
|
||||||
|
@ -14,7 +22,9 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.secrets = {"/crypto_keyfile.bin" = null;};
|
boot.initrd.secrets = {
|
||||||
|
"/crypto_keyfile.bin" = null;
|
||||||
|
};
|
||||||
|
|
||||||
boot.initrd.luks.devices = {
|
boot.initrd.luks.devices = {
|
||||||
"luks-1f9bde68-9c4c-423c-a95f-17aa170dd2b4".keyFile = "/crypto_keyfile.bin";
|
"luks-1f9bde68-9c4c-423c-a95f-17aa170dd2b4".keyFile = "/crypto_keyfile.bin";
|
||||||
|
@ -24,7 +34,9 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware = {bluetooth.enable = true;};
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "matcha";
|
hostName = "matcha";
|
||||||
|
@ -41,7 +53,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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
|
@ -34,7 +35,7 @@
|
||||||
|
|
||||||
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 +46,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,9 +1,16 @@
|
||||||
{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,14 +18,16 @@
|
||||||
|
|
||||||
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];
|
allowedTCPPorts = [ 8096 ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,7 +37,10 @@
|
||||||
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;
|
jellyfin.enable = true;
|
||||||
mullvad-vpn = {
|
mullvad-vpn = {
|
||||||
|
@ -44,11 +56,19 @@
|
||||||
users = {
|
users = {
|
||||||
olheiser.isNormalUser = true;
|
olheiser.isNormalUser = true;
|
||||||
jolheiser = {
|
jolheiser = {
|
||||||
extraGroups = ["wheel" "docker" "storage"];
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"docker"
|
||||||
|
"storage"
|
||||||
|
];
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
groups.media.members = ["jolheiser" "olheiser" "jellyfin"];
|
groups.media.members = [
|
||||||
|
"jolheiser"
|
||||||
|
"olheiser"
|
||||||
|
"jellyfin"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
|
@ -6,15 +6,22 @@
|
||||||
lib,
|
lib,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
imports = [
|
{
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
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 = [
|
||||||
boot.initrd.kernelModules = [];
|
"xhci_pci"
|
||||||
boot.kernelModules = [];
|
"ahci"
|
||||||
boot.extraModulePackages = [];
|
"usbhid"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"sr_mod"
|
||||||
|
"rtsx_usb_sdmmc"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/d1f561b1-bc50-4e34-9ca6-e973d2d9437a";
|
device = "/dev/disk/by-uuid/d1f561b1-bc50-4e34-9ca6-e973d2d9437a";
|
||||||
|
@ -28,9 +35,7 @@
|
||||||
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
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
{
|
{ config, lib, ... }:
|
||||||
config,
|
let
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.services.tclip;
|
cfg = config.services.tclip;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.services.tclip = {
|
options.services.tclip = {
|
||||||
enable = lib.mkEnableOption "tclip service";
|
enable = lib.mkEnableOption "tclip service";
|
||||||
|
|
||||||
|
@ -71,31 +69,29 @@ in {
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
systemd.services.tclip = {
|
systemd.services.tclip = {
|
||||||
description = "tclip Service";
|
description = "tclip Service";
|
||||||
after = ["network.target"];
|
after = [ "network.target" ];
|
||||||
wantedBy = ["multi-user.target"];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = let
|
ExecStart =
|
||||||
args =
|
let
|
||||||
lib.optionals (cfg.httpPort != null) [
|
args =
|
||||||
"--http-port=${cfg.httpPort}"
|
lib.optionals (cfg.httpPort != null) [ "--http-port=${cfg.httpPort}" ]
|
||||||
]
|
++ lib.optionals (cfg.controlURL != null) [ "--control-url=${cfg.controlURL}" ]
|
||||||
++ 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.disableHTTPS "--disable-https")
|
(lib.optionalString cfg.tsnetVerbose "--tsnet-verbose")
|
||||||
"--hostname=${cfg.hostname}"
|
(lib.optionalString cfg.useFunnel "--use-funnel")
|
||||||
"--data-location=${cfg.dataLocation}"
|
(lib.optionalString cfg.hideFunnelUsers "--hide-funnel-users")
|
||||||
(lib.optionalString cfg.tsnetVerbose "--tsnet-verbose")
|
];
|
||||||
(lib.optionalString cfg.useFunnel "--use-funnel")
|
in
|
||||||
(lib.optionalString cfg.hideFunnelUsers "--hide-funnel-users")
|
"${cfg.package}/bin/tclipd ${lib.concatStringsSep " " args}";
|
||||||
];
|
|
||||||
in "${cfg.package}/bin/tclipd ${lib.concatStringsSep " " args}";
|
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
User = "tclip";
|
User = "tclip";
|
||||||
Group = "tclip";
|
Group = "tclip";
|
||||||
Environment = ["TS_AUTHKEY=${cfg.authKey}"];
|
Environment = [ "TS_AUTHKEY=${cfg.authKey}" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -107,6 +103,6 @@ in {
|
||||||
createHome = true;
|
createHome = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
users.groups.tclip = {};
|
users.groups.tclip = { };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,19 +5,47 @@ let
|
||||||
sencha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJurjAMu4IXgpBwgUP0QvE2ySE5/Orn/yflkdWVvy6Am";
|
sencha = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJurjAMu4IXgpBwgUP0QvE2ySE5/Orn/yflkdWVvy6Am";
|
||||||
dragonwell = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN32Cwxer2AOGvEqSqXSPp49gj1VtR7G2XmPnmXj6o53";
|
dragonwell = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN32Cwxer2AOGvEqSqXSPp49gj1VtR7G2XmPnmXj6o53";
|
||||||
|
|
||||||
all = [jolheiser matcha genmaicha sencha 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/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;
|
||||||
"personal/restic-env.age".publicKeys = [jolheiser dragonwell];
|
"personal/restic-env.age".publicKeys = [
|
||||||
"personal/restic-pass.age".publicKeys = [jolheiser dragonwell];
|
jolheiser
|
||||||
"personal/restic-repo.age".publicKeys = [jolheiser dragonwell];
|
dragonwell
|
||||||
"personal/dex.age".publicKeys = [jolheiser dragonwell];
|
];
|
||||||
"personal/dex-tailscale.age".publicKeys = [jolheiser dragonwell];
|
"personal/restic-pass.age".publicKeys = [
|
||||||
"personal/dex-vikunja.age".publicKeys = [jolheiser dragonwell];
|
jolheiser
|
||||||
"personal/dex-tandoor.age".publicKeys = [jolheiser dragonwell];
|
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
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue