Compare commits

...

4 Commits

Author SHA1 Message Date
Noah Masur
28ffa10a59
add github copilot extension to gh cli 2024-12-05 17:02:46 -05:00
Noah Masur
006554f545
switch rebuild-nixos to smarter abbreviation 2024-12-05 22:00:14 +00:00
Noah Masur
1b04f9a883
add immich 2024-12-05 21:58:46 +00:00
Noah Masur
00f23f4b9c
create shared group for all server services to manage all files 2024-12-05 21:58:18 +00:00
10 changed files with 78 additions and 11 deletions

View File

@ -259,6 +259,7 @@
notifications = "ntfy.${baseName}";
prometheus = "prom.${baseName}";
paperless = "paper.${baseName}";
photos = "photos.${baseName}";
secrets = "vault.${baseName}";
stream = "stream.${baseName}";
content = "cloud.${baseName}";

View File

@ -109,6 +109,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
services.audiobookshelf.enable = true;
services.bind.enable = true;
services.caddy.enable = true;
services.immich.enable = true;
services.jellyfin.enable = true;
services.nextcloud.enable = true;
services.calibre-web.enable = true;

View File

@ -101,6 +101,10 @@
type = lib.types.str;
description = "Hostname for document server (paperless-ngx).";
};
photos = lib.mkOption {
type = lib.types.str;
description = "Hostname for photo management (Immich).";
};
prometheus = lib.mkOption {
type = lib.types.str;
description = "Hostname for Prometheus server.";

View File

@ -6,6 +6,8 @@
}:
{
unfreePackages = [ "gh-copilot" ];
home-manager.users.${config.user} = {
programs.gh = lib.mkIf config.home-manager.users.${config.user}.programs.git.enable {
@ -15,6 +17,7 @@
extensions = [
pkgs.gh-collaborators
pkgs.gh-dash
pkgs.gh-copilot
];
};

View File

@ -16,7 +16,9 @@
nps = "nix repl --expr 'import <nixpkgs>{}'";
nixo = "man configuration.nix";
nixh = "man home-configuration.nix";
nr = "rebuild-nixos";
nr = {
function = "rebuild-nixos";
};
nro = "rebuild-nixos offline";
hm = "rebuild-home";
};
@ -46,15 +48,13 @@
set option "--option substitute false "
end
git -C ${config.dotfilesPath} add --intent-to-add --all
commandline -r "doas nixos-rebuild switch $option --flake ${config.dotfilesPath}#${config.networking.hostName}"
commandline --function execute
echo "doas nixos-rebuild switch $option--flake ${config.dotfilesPath}#${config.networking.hostName}"
'';
};
rebuild-home = {
body = ''
git -C ${config.dotfilesPath} add --intent-to-add --all
commandline -r "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#${config.networking.hostName}";
commandline --function execute
echo "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#${config.networking.hostName}";
'';
};
};

View File

@ -10,7 +10,9 @@
programs.fish = {
shellAbbrs = {
nr = lib.mkForce "rebuild-darwin";
nr = {
function = lib.mkForce "rebuild-darwin";
};
nro = lib.mkForce "rebuild-darwin offline";
};
functions = {
@ -20,15 +22,13 @@
set option "--option substitute false"
end
git -C ${config.dotfilesPath} add --intent-to-add --all
commandline -r "darwin-rebuild switch $option --flake ${config.dotfilesPath}#lookingglass"
commandline --function execute
echo "darwin-rebuild switch $option--flake ${config.dotfilesPath}#lookingglass"
'';
};
rebuild-home = lib.mkForce {
body = ''
git -C ${config.dotfilesPath} add --intent-to-add --all
commandline -r "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#lookingglass";
commandline --function execute
echo "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#lookingglass";
'';
};
};

View File

@ -15,6 +15,7 @@
./cloudflare.nix
./filebrowser.nix
./identity.nix
./immich.nix
./irc.nix
./gitea-runner.nix
./gitea.nix

View File

@ -0,0 +1,42 @@
{ config, lib, ... }:
{
config = lib.mkIf config.services.immich.enable {
services.immich = {
port = 2283;
group = "shared";
database.enable = true;
redis.enable = true;
machine-learning.enable = true;
machine-learning.environment = { };
mediaLocation = "/data/images";
secretsFile = null;
settings.server.externalDomain = "https://${config.hostnames.photos}";
environment = {
IMMICH_ENV = "production";
IMMICH_LOG_LEVEL = "log";
NO_COLOR = "false";
IMMICH_TRUSTED_PROXIES = "127.0.0.1";
};
};
caddy.routes = [
{
match = [ { host = [ config.hostnames.photos ]; } ];
handle = [
{
handler = "reverse_proxy";
upstreams = [ { dial = "localhost:${builtins.toString config.services.immich.port}"; } ];
}
];
}
];
# Configure Cloudflare DNS to point to this machine
services.cloudflare-dyndns.domains = [ config.hostnames.photos ];
};
}

View File

@ -10,6 +10,7 @@
./auto-upgrade.nix
./doas.nix
./journald.nix
./shared.nix
./user.nix
./timezone.nix
];

View File

@ -0,0 +1,14 @@
{ config, lib, ... }:
{
config = lib.mkIf config.server {
# Create a shared group for many services
users.groups.shared = { };
# Give the human user access to the shared group
users.users.${config.user}.extraGroups = [ config.users.groups.shared.name ];
};
}