Merge branch 'main' of ssh://gitea.xeovalyte.dev:2222/xeovalyte/nix
This commit is contained in:
commit
51f96a1158
@ -24,6 +24,7 @@
|
|||||||
applications.thunderbird.enable = false;
|
applications.thunderbird.enable = false;
|
||||||
applications.yazi.enable = false;
|
applications.yazi.enable = false;
|
||||||
applications.zellij.enable = false;
|
applications.zellij.enable = false;
|
||||||
|
applications.wezterm.enable = false;
|
||||||
|
|
||||||
services.nextcloud-sync.enable = false;
|
services.nextcloud-sync.enable = false;
|
||||||
|
|
||||||
|
@ -88,6 +88,11 @@
|
|||||||
"vault.local.tbmrs.nl"
|
"vault.local.tbmrs.nl"
|
||||||
"paperless.local.tbmrs.nl"
|
"paperless.local.tbmrs.nl"
|
||||||
"monitor.local.tbmrs.nl"
|
"monitor.local.tbmrs.nl"
|
||||||
|
"files.tbmrs.nl"
|
||||||
|
"syncthing.local.tbmrs.nl"
|
||||||
|
"home-assistant.local.tbmrs.nl"
|
||||||
|
"karakeep.local.tbmrs.nl"
|
||||||
|
"vikunja.local.tbmrs.nl"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -18,12 +18,21 @@
|
|||||||
applications.devenv.enable = true;
|
applications.devenv.enable = true;
|
||||||
applications.firefox.enable = true;
|
applications.firefox.enable = true;
|
||||||
applications.git.enable = true;
|
applications.git.enable = true;
|
||||||
applications.helix.enable = true;
|
applications.helix = {
|
||||||
|
enable = true;
|
||||||
|
markdown = true;
|
||||||
|
rust = true;
|
||||||
|
systemverilog = true;
|
||||||
|
nix = true;
|
||||||
|
latex = true;
|
||||||
|
vue = true;
|
||||||
|
};
|
||||||
applications.zsh.enable = true;
|
applications.zsh.enable = true;
|
||||||
applications.ssh.enable = true;
|
applications.ssh.enable = true;
|
||||||
applications.thunderbird.enable = true;
|
applications.thunderbird.enable = true;
|
||||||
applications.yazi.enable = true;
|
applications.yazi.enable = true;
|
||||||
applications.zellij.enable = true;
|
applications.zellij.enable = true;
|
||||||
|
applications.wezterm.enable = true;
|
||||||
|
|
||||||
services.nextcloud-sync.enable = true;
|
services.nextcloud-sync.enable = true;
|
||||||
|
|
||||||
@ -46,11 +55,18 @@
|
|||||||
unstable.freecad
|
unstable.freecad
|
||||||
unstable.hoppscotch
|
unstable.hoppscotch
|
||||||
unstable.signal-desktop
|
unstable.signal-desktop
|
||||||
|
unstable.ladybird
|
||||||
|
unstable.prusa-slicer
|
||||||
|
|
||||||
unstable.surfer # waveform viewer
|
unstable.surfer # waveform viewer
|
||||||
|
pomodoro-gtk
|
||||||
|
|
||||||
# Office
|
# Office
|
||||||
libreoffice
|
libreoffice
|
||||||
|
|
||||||
|
# Scripts
|
||||||
|
wl-clipboard-rs
|
||||||
|
(import ../../modules/scripts/save_image.nix { inherit pkgs; })
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enable home-manager
|
# Enable home-manager
|
||||||
|
@ -18,13 +18,22 @@
|
|||||||
applications.devenv.enable = true;
|
applications.devenv.enable = true;
|
||||||
applications.firefox.enable = true;
|
applications.firefox.enable = true;
|
||||||
applications.git.enable = true;
|
applications.git.enable = true;
|
||||||
applications.helix.enable = true;
|
applications.helix = {
|
||||||
|
enable = true;
|
||||||
|
markdown = true;
|
||||||
|
rust = true;
|
||||||
|
systemverilog = true;
|
||||||
|
nix = true;
|
||||||
|
latex = true;
|
||||||
|
vue = true;
|
||||||
|
};
|
||||||
applications.zsh.enable = true;
|
applications.zsh.enable = true;
|
||||||
applications.ssh.enable = true;
|
applications.ssh.enable = true;
|
||||||
applications.thunderbird.enable = true;
|
applications.thunderbird.enable = true;
|
||||||
applications.yazi.enable = true;
|
applications.yazi.enable = true;
|
||||||
applications.zellij.enable = true;
|
applications.zellij.enable = true;
|
||||||
applications.nushell.enable = true;
|
applications.wezterm.enable = true;
|
||||||
|
applications.nushell.enable = false;
|
||||||
|
|
||||||
services.nextcloud-sync.enable = true;
|
services.nextcloud-sync.enable = true;
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
applications.thunderbird.enable = false;
|
applications.thunderbird.enable = false;
|
||||||
applications.yazi.enable = true;
|
applications.yazi.enable = true;
|
||||||
applications.zellij.enable = false;
|
applications.zellij.enable = false;
|
||||||
|
applications.wezterm.enable = false;
|
||||||
|
|
||||||
services.nextcloud-sync.enable = true;
|
services.nextcloud-sync.enable = true;
|
||||||
|
|
||||||
|
@ -18,12 +18,13 @@
|
|||||||
applications.devenv.enable = false;
|
applications.devenv.enable = false;
|
||||||
applications.firefox.enable = false;
|
applications.firefox.enable = false;
|
||||||
applications.git.enable = false;
|
applications.git.enable = false;
|
||||||
applications.helix.enable = false;
|
applications.helix.enable = true;
|
||||||
applications.zsh.enable = true;
|
applications.zsh.enable = true;
|
||||||
applications.ssh.enable = true;
|
applications.ssh.enable = true;
|
||||||
applications.thunderbird.enable = false;
|
applications.thunderbird.enable = false;
|
||||||
applications.yazi.enable = true;
|
applications.yazi.enable = true;
|
||||||
applications.zellij.enable = true;
|
applications.zellij.enable = true;
|
||||||
|
applications.wezterm.enable = false;
|
||||||
|
|
||||||
services.nextcloud-sync.enable = false;
|
services.nextcloud-sync.enable = false;
|
||||||
services.podman.enable = true;
|
services.podman.enable = true;
|
||||||
@ -50,6 +51,10 @@
|
|||||||
vaultwarden.enable = true;
|
vaultwarden.enable = true;
|
||||||
paperless-ngx.enable = true;
|
paperless-ngx.enable = true;
|
||||||
beszel.enable = true;
|
beszel.enable = true;
|
||||||
|
storage.enable = true;
|
||||||
|
homeassistant.enable = true;
|
||||||
|
karakeep.enable = true;
|
||||||
|
vikunja.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
6
justfile
6
justfile
@ -15,12 +15,18 @@ clean:
|
|||||||
fmt:
|
fmt:
|
||||||
nix fmt
|
nix fmt
|
||||||
|
|
||||||
|
alias s := switch
|
||||||
|
|
||||||
switch:
|
switch:
|
||||||
sudo nixos-rebuild switch --flake .
|
sudo nixos-rebuild switch --flake .
|
||||||
home-manager switch --flake .
|
home-manager switch --flake .
|
||||||
|
|
||||||
|
alias sw := switch-system
|
||||||
|
|
||||||
switch-system:
|
switch-system:
|
||||||
sudo nixos-rebuild switch --flake .
|
sudo nixos-rebuild switch --flake .
|
||||||
|
|
||||||
|
alias sh := switch-home-manager
|
||||||
|
|
||||||
switch-home-manager:
|
switch-home-manager:
|
||||||
home-manager switch --flake .
|
home-manager switch --flake .
|
||||||
|
@ -12,47 +12,79 @@ in {
|
|||||||
Enable helix text editor
|
Enable helix text editor
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
settings.applications.helix.markdown = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable markdown language support
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.applications.helix.systemverilog = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable systemverilog language support
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.applications.helix.nix = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable nix language support
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.applications.helix.latex = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable latex language support
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.applications.helix.vue = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable vue/nuxt language support
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.applications.helix.rust = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable rust language support
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; lib.concatLists [
|
||||||
# Markdown
|
(lib.optionals cfg.markdown [ unstable.marksman unstable.markdown-oxide dprint ])
|
||||||
unstable.marksman
|
(lib.optionals cfg.systemverilog [ unstable.svls ])
|
||||||
unstable.markdown-oxide
|
(lib.optionals cfg.nix [ unstable.nix unstable.nixpkgs-fmt ])
|
||||||
dprint
|
(lib.optionals cfg.latex [ tectonic unstable.texlab ])
|
||||||
|
(lib.optionals cfg.vue [ unstable.vue-language-server unstable.typescript unstable.typescript-language-server ])
|
||||||
# Systemverilog
|
|
||||||
unstable.svls
|
|
||||||
|
|
||||||
# Assembly
|
|
||||||
unstable.asm-lsp
|
|
||||||
|
|
||||||
# Nixos
|
|
||||||
unstable.nil
|
|
||||||
unstable.nixpkgs-fmt
|
|
||||||
|
|
||||||
# Latex
|
|
||||||
tectonic
|
|
||||||
unstable.texlab
|
|
||||||
|
|
||||||
# Vue/Nuxt
|
|
||||||
unstable.vue-language-server
|
|
||||||
unstable.typescript
|
|
||||||
unstable.typescript-language-server
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Markdown
|
# Markdown
|
||||||
home.file.".config/.dprint.json".text =''
|
home.file.".config/.dprint.json" = lib.mkIf cfg.markdown {
|
||||||
{
|
text = ''
|
||||||
"markdown": {
|
{
|
||||||
"lineWidth":120,
|
"markdown": {
|
||||||
},
|
"lineWidth":120,
|
||||||
"excludes": [],
|
},
|
||||||
"plugins": [
|
"excludes": [],
|
||||||
"https://plugins.dprint.dev/markdown-0.16.1.wasm"
|
"plugins": [
|
||||||
]
|
"https://plugins.dprint.dev/markdown-0.16.1.wasm"
|
||||||
}
|
]
|
||||||
'';
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -65,24 +97,19 @@ in {
|
|||||||
};
|
};
|
||||||
languages = {
|
languages = {
|
||||||
# Rust
|
# Rust
|
||||||
language-server.rust-analyzer.config = {
|
language-server.rust-analyzer.config = lib.mkIf cfg.rust {
|
||||||
cargo = {
|
cargo = {
|
||||||
features = "all";
|
features = "all";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Systemverilog
|
# Systemverilog
|
||||||
language-server.svls = {
|
language-server.svls = lib.mkIf cfg.systemverilog {
|
||||||
command = "svls";
|
command = "svls";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Systemverilog
|
|
||||||
language-server.asm = {
|
|
||||||
command = "asm-lsp";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Latex
|
# Latex
|
||||||
language-server.texlab = {
|
language-server.texlab = lib.mkIf cfg.latex {
|
||||||
config = {
|
config = {
|
||||||
texlab.chktex = {
|
texlab.chktex = {
|
||||||
onOpenAndSave = true;
|
onOpenAndSave = true;
|
||||||
@ -116,7 +143,7 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
language-server.typescript-language-server.config = {
|
language-server.typescript-language-server.config = lib.mkIf cfg.vue {
|
||||||
# tsserver = {
|
# tsserver = {
|
||||||
# path = "${pkgs.unstable.typescript}/bin/tsserver";
|
# path = "${pkgs.unstable.typescript}/bin/tsserver";
|
||||||
# };
|
# };
|
||||||
@ -148,18 +175,12 @@ in {
|
|||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
|
|
||||||
language = [
|
language = lib.concatLists [
|
||||||
{
|
(lib.optionals cfg.systemverilog [{
|
||||||
name = "verilog";
|
name = "verilog";
|
||||||
language-servers = [ "svls" ];
|
language-servers = [ "svls" ];
|
||||||
}
|
}])
|
||||||
{
|
(lib.optionals cfg.markdown [{
|
||||||
name = "asm";
|
|
||||||
scope = "source.s";
|
|
||||||
language-servers = [ "asm" ];
|
|
||||||
file-types = [ "s" "S" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "markdown";
|
name = "markdown";
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
language-servers = [ "markdown-oxide" ];
|
language-servers = [ "markdown-oxide" ];
|
||||||
@ -170,11 +191,11 @@ in {
|
|||||||
name = "typst";
|
name = "typst";
|
||||||
auto-format = false;
|
auto-format = false;
|
||||||
formatter.command = "${pkgs.typstfmt}/bin/typstfmt";
|
formatter.command = "${pkgs.typstfmt}/bin/typstfmt";
|
||||||
}
|
}])
|
||||||
{
|
(lib.optionals cfg.vue [{
|
||||||
name = "vue";
|
name = "vue";
|
||||||
language-servers = ["vuels" "typescript-language-server"];
|
language-servers = ["vuels" "typescript-language-server"];
|
||||||
}
|
}])
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
107
modules/home/applications/wezterm.nix
Normal file
107
modules/home/applications/wezterm.nix
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.settings.applications.wezterm;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
settings.applications.wezterm.enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable wezterm terminal
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.wezterm = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
package = pkgs.unstable.wezterm;
|
||||||
|
extraConfig = /* lua */ ''
|
||||||
|
-- Pull in the wezterm API
|
||||||
|
local wezterm = require 'wezterm'
|
||||||
|
|
||||||
|
-- This will hold the configuration.
|
||||||
|
local config = wezterm.config_builder()
|
||||||
|
local act = wezterm.action
|
||||||
|
|
||||||
|
-- This is where you actually apply your config choices
|
||||||
|
|
||||||
|
-- For example, changing the color scheme:
|
||||||
|
config.enable_tab_bar = true
|
||||||
|
config.use_fancy_tab_bar = false
|
||||||
|
config.window_decorations = "NONE"
|
||||||
|
config.tab_bar_at_bottom = true
|
||||||
|
|
||||||
|
config.keys = {
|
||||||
|
-- Pane controls
|
||||||
|
{
|
||||||
|
key = 'h',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.ActivatePaneDirection 'Left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'l',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.ActivatePaneDirection 'Right',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'k',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.ActivatePaneDirection 'Up',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'j',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.ActivatePaneDirection 'Down',
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Pane resizing
|
||||||
|
{
|
||||||
|
key = 'H',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.AdjustPaneSize { 'Left', 5 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'L',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.AdjustPaneSize { 'Right', 5 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'K',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.AdjustPaneSize { 'Up', 5 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'J',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.AdjustPaneSize { 'Down', 5 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'q',
|
||||||
|
mods = 'CTRL',
|
||||||
|
action = act.CloseCurrentPane { confirm = false },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Tab management
|
||||||
|
{ key = '1', mods = 'ALT', action = act.ActivateTab(0) },
|
||||||
|
{ key = '2', mods = 'ALT', action = act.ActivateTab(1) },
|
||||||
|
{ key = '3', mods = 'ALT', action = act.ActivateTab(2) },
|
||||||
|
{ key = '4', mods = 'ALT', action = act.ActivateTab(3) },
|
||||||
|
{ key = '5', mods = 'ALT', action = act.ActivateTab(4) },
|
||||||
|
{
|
||||||
|
key = 'q',
|
||||||
|
mods = 'ALT',
|
||||||
|
action = act.CloseCurrentTab { confirm = false },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- and finally, return the configuration to wezterm
|
||||||
|
return config
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -71,6 +71,11 @@ in {
|
|||||||
handle @pingvin-share {
|
handle @pingvin-share {
|
||||||
reverse_proxy pingvin-share:3000
|
reverse_proxy pingvin-share:3000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@dufs host files.tbmrs.nl
|
||||||
|
handle @dufs {
|
||||||
|
reverse_proxy dufs:5000
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*.local.tbmrs.nl {
|
*.local.tbmrs.nl {
|
||||||
@ -93,6 +98,26 @@ in {
|
|||||||
handle @beszel {
|
handle @beszel {
|
||||||
reverse_proxy beszel:8090
|
reverse_proxy beszel:8090
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@syncthing host syncthing.local.tbmrs.nl
|
||||||
|
handle @syncthing {
|
||||||
|
reverse_proxy syncthing:8384
|
||||||
|
}
|
||||||
|
|
||||||
|
@homeassistant host home-assistant.local.tbmrs.nl
|
||||||
|
handle @homeassistant {
|
||||||
|
reverse_proxy homeassistant:8123
|
||||||
|
}
|
||||||
|
|
||||||
|
@karakeep host karakeep.local.tbmrs.nl
|
||||||
|
handle @karakeep {
|
||||||
|
reverse_proxy karakeep:3000
|
||||||
|
}
|
||||||
|
|
||||||
|
@vikunja host vikunja.local.tbmrs.nl
|
||||||
|
handle @vikunja {
|
||||||
|
reverse_proxy vikunja:3456
|
||||||
|
}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
31
modules/home/containers/homeassistant.nix
Normal file
31
modules/home/containers/homeassistant.nix
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.settings.containers.homeassistant;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
settings.containers.homeassistant.enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable storage configuration
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.podman.containers.homeassistant = {
|
||||||
|
image = "ghcr.io/home-assistant/home-assistant:stable";
|
||||||
|
network = "proxy";
|
||||||
|
volumes = [
|
||||||
|
"%h/containers/homeassistant/config:/config"
|
||||||
|
];
|
||||||
|
userNS = "keep-id";
|
||||||
|
environment = {
|
||||||
|
TZ = "Europe/Amsterdam";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -26,6 +26,7 @@ in {
|
|||||||
"%h/containers/homepage/config/docker.yaml:/app/config/docker.yaml"
|
"%h/containers/homepage/config/docker.yaml:/app/config/docker.yaml"
|
||||||
"/run/user/1000/podman/podman.sock:/var/run/podman.sock:ro"
|
"/run/user/1000/podman/podman.sock:/var/run/podman.sock:ro"
|
||||||
];
|
];
|
||||||
|
userNS = "keep-id";
|
||||||
environment = {
|
environment = {
|
||||||
HOMEPAGE_ALLOWED_HOSTS = "home.tbmrs.nl";
|
HOMEPAGE_ALLOWED_HOSTS = "home.tbmrs.nl";
|
||||||
};
|
};
|
||||||
@ -36,40 +37,19 @@ in {
|
|||||||
description = "server from Timo";
|
description = "server from Timo";
|
||||||
theme = "dark";
|
theme = "dark";
|
||||||
color = "slate";
|
color = "slate";
|
||||||
|
layout = {
|
||||||
|
Services = {
|
||||||
|
style = "row";
|
||||||
|
columns = "4";
|
||||||
|
};
|
||||||
|
Infra = {
|
||||||
|
style = "row";
|
||||||
|
columns = "4";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file."containers/homepage/config/services.yaml".source = (pkgs.formats.yaml { }).generate "services" [
|
home.file."containers/homepage/config/services.yaml".source = (pkgs.formats.yaml { }).generate "services" [
|
||||||
{
|
|
||||||
"Infra" = [
|
|
||||||
{
|
|
||||||
"Kanidm" = {
|
|
||||||
href = "https://auth.tbmrs.nl";
|
|
||||||
description = "Oauth2 and ldap provider";
|
|
||||||
icon = "kanidm";
|
|
||||||
server = "podman";
|
|
||||||
container = "kanidm";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"Uptime Kuma" = {
|
|
||||||
href = "https://uptime.tbmrs.nl";
|
|
||||||
description = "Uptime and status";
|
|
||||||
icon = "uptime-kuma";
|
|
||||||
server = "podman";
|
|
||||||
container = "uptime-kuma";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"Beszel" = {
|
|
||||||
href = "https://monitor.local.tbmrs.nl";
|
|
||||||
description = "Server monitoring";
|
|
||||||
icon = "beszel";
|
|
||||||
server = "podman";
|
|
||||||
container = "beszel";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
"Services" = [
|
"Services" = [
|
||||||
{
|
{
|
||||||
@ -117,6 +97,73 @@ in {
|
|||||||
container = "paperless-ngx";
|
container = "paperless-ngx";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
"Home Assistant" = {
|
||||||
|
href = "https://home-assistant.local.tbmrs.nl";
|
||||||
|
description = "Home automation";
|
||||||
|
icon = "home-assistant";
|
||||||
|
server = "podman";
|
||||||
|
container = "homeassistant";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Syncthing" = {
|
||||||
|
href = "https://syncthing.local.tbmrs.nl";
|
||||||
|
description = "File syncronisation";
|
||||||
|
icon = "syncthing";
|
||||||
|
server = "podman";
|
||||||
|
container = "syncthing";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Dufs" = {
|
||||||
|
href = "https://files.tbmrs.nl";
|
||||||
|
description = "File management";
|
||||||
|
icon = "dufs";
|
||||||
|
server = "podman";
|
||||||
|
container = "dufs";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Karakeep" = {
|
||||||
|
href = "https://karakeep.local.tbmrs.nl";
|
||||||
|
description = "Data hoarder";
|
||||||
|
icon = "karakeep";
|
||||||
|
server = "podman";
|
||||||
|
container = "karakeep";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Infra" = [
|
||||||
|
{
|
||||||
|
"Kanidm" = {
|
||||||
|
href = "https://auth.tbmrs.nl";
|
||||||
|
description = "Oauth2 and ldap provider";
|
||||||
|
icon = "kanidm";
|
||||||
|
server = "podman";
|
||||||
|
container = "kanidm";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Uptime Kuma" = {
|
||||||
|
href = "https://uptime.tbmrs.nl";
|
||||||
|
description = "Uptime and status";
|
||||||
|
icon = "uptime-kuma";
|
||||||
|
server = "podman";
|
||||||
|
container = "uptime-kuma";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"Beszel" = {
|
||||||
|
href = "https://monitor.local.tbmrs.nl";
|
||||||
|
description = "Server monitoring";
|
||||||
|
icon = "beszel";
|
||||||
|
server = "podman";
|
||||||
|
container = "beszel";
|
||||||
|
};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
82
modules/home/containers/karakeep.nix
Normal file
82
modules/home/containers/karakeep.nix
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.settings.containers.karakeep;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
settings.containers.karakeep.enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable karakeep container
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.podman.containers.karakeep = {
|
||||||
|
image = "ghcr.io/karakeep-app/karakeep:release";
|
||||||
|
network = "proxy";
|
||||||
|
volumes = [
|
||||||
|
"%h/containers/karakeep/data:/data"
|
||||||
|
];
|
||||||
|
environment = {
|
||||||
|
MEILI_ADDR = "http://karakeep-meilisearch:7700";
|
||||||
|
BROWSER_WEB_URL = "http://karakeep-chrome:9222";
|
||||||
|
DATA_DIR = "/data";
|
||||||
|
};
|
||||||
|
environmentFile = [
|
||||||
|
"${config.sops.templates."container-karakeep.env".path}"
|
||||||
|
];
|
||||||
|
extraConfig = {
|
||||||
|
Unit = {
|
||||||
|
After = [
|
||||||
|
"podman-karakeep-chrome.service"
|
||||||
|
"podman-karakeep-meilisearch.service"
|
||||||
|
];
|
||||||
|
Requires = [
|
||||||
|
"podman-karakeep-chrome.service"
|
||||||
|
"podman-karakeep-meilisearch.service"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.podman.containers.karakeep-chrome = {
|
||||||
|
image = "gcr.io/zenika-hub/alpine-chrome:123";
|
||||||
|
network = "proxy";
|
||||||
|
exec = "--no-sandbox --disable-gpu --disable-dev-shm-usage --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 --hide-scrollbars";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.podman.containers.karakeep-meilisearch = {
|
||||||
|
image = "getmeili/meilisearch:v1.13.3";
|
||||||
|
network = "proxy";
|
||||||
|
environment = {
|
||||||
|
MEILI_NO_ANALYTICS = "true";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"%h/containers/karakeep/meilisearch:/meili_data"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
settings.services.sops.enable = true;
|
||||||
|
|
||||||
|
sops.secrets = {
|
||||||
|
"containers/karakeep/nextauth-secret" = { };
|
||||||
|
"containers/karakeep/meili-key" = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
sops.templates = {
|
||||||
|
"container-karakeep.env" = {
|
||||||
|
content = ''
|
||||||
|
KARAKEEP_VERSION=release
|
||||||
|
NEXTAUTH_SECRET=${config.sops.placeholder."containers/karakeep/nextauth-secret"}
|
||||||
|
MEILI_MASTER_KEY=${config.sops.placeholder."containers/karakeep/meili-key"}
|
||||||
|
NEXTAUTH_URL=https://karakeep.local.tbmrs.nl
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
47
modules/home/containers/storage.nix
Normal file
47
modules/home/containers/storage.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.settings.containers.storage;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
settings.containers.storage.enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable storage configuration
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.podman.containers.dufs = {
|
||||||
|
image = "sigoden/dufs";
|
||||||
|
network = "proxy";
|
||||||
|
volumes = [
|
||||||
|
"%h/storage:/data"
|
||||||
|
];
|
||||||
|
userNS = "keep-id";
|
||||||
|
environment = {
|
||||||
|
DUFS_SERVE_PATH = "data";
|
||||||
|
DUFS_AUTH = "@/tboomers/public:ro|tboomers:password@/tboomers:rw";
|
||||||
|
DUFS_ALLOW_ALL = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.podman.containers.syncthing = {
|
||||||
|
image = "syncthing/syncthing";
|
||||||
|
network = "proxy";
|
||||||
|
volumes = [
|
||||||
|
"%h/storage:/storage"
|
||||||
|
"%h/containers/syncthing/data:/var/syncthing"
|
||||||
|
];
|
||||||
|
userNS = "keep-id";
|
||||||
|
ports = [
|
||||||
|
"22000:22000/tcp"
|
||||||
|
"22000:22000/udp"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
29
modules/home/containers/vikunja.nix
Normal file
29
modules/home/containers/vikunja.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.settings.containers.vikunja;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
settings.containers.vikunja.enable = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable vikunja container
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.podman.containers.vikunja = {
|
||||||
|
image = "vikunja/vikunja";
|
||||||
|
network = "proxy";
|
||||||
|
userNS = "keep-id";
|
||||||
|
volumes = [
|
||||||
|
"%h/containers/vikunja/files:/app/vikunja/files"
|
||||||
|
"%h/containers/vikunja/db:/db"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -13,6 +13,7 @@
|
|||||||
./applications/thunderbird.nix
|
./applications/thunderbird.nix
|
||||||
./applications/yazi.nix
|
./applications/yazi.nix
|
||||||
./applications/zellij.nix
|
./applications/zellij.nix
|
||||||
|
./applications/wezterm.nix
|
||||||
./applications/nushell.nix
|
./applications/nushell.nix
|
||||||
|
|
||||||
./services/nextcloud.nix
|
./services/nextcloud.nix
|
||||||
@ -37,5 +38,9 @@
|
|||||||
./containers/vaultwarden.nix
|
./containers/vaultwarden.nix
|
||||||
./containers/paperless-ngx.nix
|
./containers/paperless-ngx.nix
|
||||||
./containers/beszel.nix
|
./containers/beszel.nix
|
||||||
|
./containers/storage.nix
|
||||||
|
./containers/homeassistant.nix
|
||||||
|
./containers/karakeep.nix
|
||||||
|
./containers/vikunja.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -13,11 +13,30 @@ in {
|
|||||||
Enable podman configuration
|
Enable podman configuration
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
settings.services.podman.systemctlAliases = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable podman systemctl aliases configuration
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.podman = {
|
services.podman = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.shellAliases = lib.mkIf cfg.systemctlAliases {
|
||||||
|
scu = "systemctl --user";
|
||||||
|
scus = "systemctl --user start";
|
||||||
|
scur = "systemctl --user restart";
|
||||||
|
scust = "systemctl --user stop";
|
||||||
|
scusts = "systemctl --user status";
|
||||||
|
|
||||||
|
jcu = "journalctl --user";
|
||||||
|
jcur = "journalctl --user -xe";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,7 @@ in {
|
|||||||
stylix.base16Scheme = lib.mkIf (cfg.theme != "theme") "${pkgs.base16-schemes}/share/themes/${cfg.theme}.yaml";
|
stylix.base16Scheme = lib.mkIf (cfg.theme != "theme") "${pkgs.base16-schemes}/share/themes/${cfg.theme}.yaml";
|
||||||
|
|
||||||
stylix.autoEnable = true;
|
stylix.autoEnable = true;
|
||||||
|
stylix.opacity.terminal = 0.95;
|
||||||
|
|
||||||
stylix.cursor = {
|
stylix.cursor = {
|
||||||
package = pkgs.phinger-cursors;
|
package = pkgs.phinger-cursors;
|
||||||
|
@ -4,6 +4,9 @@ containers:
|
|||||||
oidc-secret: ENC[AES256_GCM,data:jO5fvIK/1XnFweqKvedPMED0xvsqErjDP+eT7wAwXFuREbS6KakwY7pUzi20wdI0,iv:SnnmXiZoawpZV83483esQ1TIaFTACiIUcA6hcoXsw0I=,tag:cC/ftyj8jlK1re/rX4IiEw==,type:str]
|
oidc-secret: ENC[AES256_GCM,data:jO5fvIK/1XnFweqKvedPMED0xvsqErjDP+eT7wAwXFuREbS6KakwY7pUzi20wdI0,iv:SnnmXiZoawpZV83483esQ1TIaFTACiIUcA6hcoXsw0I=,tag:cC/ftyj8jlK1re/rX4IiEw==,type:str]
|
||||||
beszel:
|
beszel:
|
||||||
key: ENC[AES256_GCM,data:rRtx8Jx/aHOqeRa9dlyc42/62UwwqhkiLDLnZCM65rpW5nL5cQG2dS81YOMVPrE7Sa/cHlE3bvxqETaxMmsJGYukjmZph8skpF0qukCDe4Q=,iv:OS/+jF4MtwPdijXPpG2pgpJQTYyer9bms97B+kO8XhI=,tag:va7jCSGrXp2YKBlYzLI39g==,type:str]
|
key: ENC[AES256_GCM,data:rRtx8Jx/aHOqeRa9dlyc42/62UwwqhkiLDLnZCM65rpW5nL5cQG2dS81YOMVPrE7Sa/cHlE3bvxqETaxMmsJGYukjmZph8skpF0qukCDe4Q=,iv:OS/+jF4MtwPdijXPpG2pgpJQTYyer9bms97B+kO8XhI=,tag:va7jCSGrXp2YKBlYzLI39g==,type:str]
|
||||||
|
karakeep:
|
||||||
|
nextauth-secret: ENC[AES256_GCM,data:ck8O7bZOcpxOB6dQRDchPBaFinVtzBphOvT2oQcdTcnRj0PFCMF7mKcEbRFvk6hi,iv:98su3bR8jMLr1jF5XBiNePMZ7qz4pMDQ6B4i8rMxIQQ=,tag:cfqzRVf9NDhsb1cvG8Tq+w==,type:str]
|
||||||
|
meili-key: ENC[AES256_GCM,data:YrIlR+f94wcTlWqfYdqUWOZGp8QaPtLQeXi+ok54bXnuKvv1qjkuAbKuClyi4MS9,iv:OjAmWJWmGtIsSeIFWNlqT8hv8H8LLz+WQtvlvyu9Lx0=,tag:8jI5LBhMG3hhji7+dE6shg==,type:str]
|
||||||
paperless-ngx:
|
paperless-ngx:
|
||||||
db-password: ENC[AES256_GCM,data:H21HVshmFuWJ5qNIrjm0VMGHEsT7cCvScgamU+CAaNZ6j5ux/r4xiF9zP7Qh40sKTOvyoWGTcHGPHE5ClpGuQA==,iv:tDIRfThBOfHr+gGRqywlHAk/x4MkhHRFsJEp5nnlGPA=,tag:XbYKD90l3u93Ur4VOqOn6w==,type:str]
|
db-password: ENC[AES256_GCM,data:H21HVshmFuWJ5qNIrjm0VMGHEsT7cCvScgamU+CAaNZ6j5ux/r4xiF9zP7Qh40sKTOvyoWGTcHGPHE5ClpGuQA==,iv:tDIRfThBOfHr+gGRqywlHAk/x4MkhHRFsJEp5nnlGPA=,tag:XbYKD90l3u93Ur4VOqOn6w==,type:str]
|
||||||
secret: ENC[AES256_GCM,data:+1hriBiSbt+zUjEkBTEM90PFNlxfNwRAmz8wHyeyOnq6ThI+PtlDu83sunBFL2FUYJX0N4h3R4FvJBUkrPr0NQ==,iv:zzhFaoLnskspp1S291KABLZITgcof63cjShnsZrlAmw=,tag:+aafTLgZVBWeclQLQvVlQg==,type:str]
|
secret: ENC[AES256_GCM,data:+1hriBiSbt+zUjEkBTEM90PFNlxfNwRAmz8wHyeyOnq6ThI+PtlDu83sunBFL2FUYJX0N4h3R4FvJBUkrPr0NQ==,iv:zzhFaoLnskspp1S291KABLZITgcof63cjShnsZrlAmw=,tag:+aafTLgZVBWeclQLQvVlQg==,type:str]
|
||||||
@ -23,8 +26,8 @@ sops:
|
|||||||
bGpsMnpoQWlxbmlobVdVSjU2ZWp1dGMKql+6ZqtuixZ9TJgJMaTOFsB0gsLLvuqE
|
bGpsMnpoQWlxbmlobVdVSjU2ZWp1dGMKql+6ZqtuixZ9TJgJMaTOFsB0gsLLvuqE
|
||||||
ZQikUHunrP8d5n/TvzL4VyIF2Oqy+cjTnjX/9fcqsjB6w3oY4qDXkg==
|
ZQikUHunrP8d5n/TvzL4VyIF2Oqy+cjTnjX/9fcqsjB6w3oY4qDXkg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-04-30T13:11:24Z"
|
lastmodified: "2025-05-06T15:45:07Z"
|
||||||
mac: ENC[AES256_GCM,data:JA1T9q0otjshJWyb8fingvD0CmYyTKdhvNMI3RVoZaMEAwBV4AwMCftG9zWMOgof4NcG4EhdOI7KG7qhctpo25K9j5IhaY8GA/p7BStBopuowTTUZecWHxXy4OFEtuW1PXBGrkgfkupV+RZfeisoa1gGFhQ2tW+fOqtoTFFCLHA=,iv:CM5zgvA2krzLHGiVeiSTVzcswwk9+QJmNCr+3hqw+To=,tag:H0x1UasoXNb38+Cq0CP0YA==,type:str]
|
mac: ENC[AES256_GCM,data:1B0X0XIdI+fVeuusfyrcXR8HPhcWM5pjkJG7UoAgIBfGxROHzZm8KTvW/LGxZ9JKHBUjnt4YVr7ZECGTNFEyH/xo0N8aJ66BqT0TxfKHydWVA5odS0dCPXs/8yDNItGaVjJyNpdn0NpRHCCDCGHjo16XILSVoOxbs6BIQ5wVvEE=,iv:h5x99Svyod4iSBdmRDcy9VelYzEV9ArKQVeNuMmEMGQ=,tag:PTLqyRFa45NyR5mDKxBgmg==,type:str]
|
||||||
pgp: []
|
pgp: []
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.9.4
|
version: 3.9.4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user