diff --git a/flake.lock b/flake.lock index 1403341..9cdfb4d 100644 --- a/flake.lock +++ b/flake.lock @@ -86,11 +86,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1760344646, - "narHash": "sha256-ong/r42W1SkvQsdX5J8vM0Y4oy/EKTsHh+9ZB4nep4w=", + "lastModified": 1760395520, + "narHash": "sha256-4hVEyj3H4i0kwtO8dDIKee1WoZ0iMZxr3ageSdJ6Cck=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "72ee6f4622d41d0b19c2bb4f521ef4cd970424c4", + "rev": "c438d72cee048fe6203df15c81a230efb16fa409", "type": "github" }, "original": { @@ -238,7 +238,6 @@ } }, "flake-compat_5": { - "flake": false, "locked": { "lastModified": 1747046372, "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", @@ -254,6 +253,22 @@ } }, "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { "flake": false, "locked": { "lastModified": 1650374568, @@ -487,11 +502,11 @@ ] }, "locked": { - "lastModified": 1760312644, - "narHash": "sha256-U9SkK45314urw9P7MmjhEgiQwwD/BTj+T3HTuz1JU1Q=", + "lastModified": 1760500983, + "narHash": "sha256-zfY4F4CpeUjTGgecIJZ+M7vFpwLc0Gm9epM/iMQd4w8=", "owner": "nix-community", "repo": "home-manager", - "rev": "e121f3773fa596ecaba5b22e518936a632d72a90", + "rev": "c53e65ec92f38d30e3c14f8d628ab55d462947aa", "type": "github" }, "original": { @@ -520,11 +535,11 @@ "homebrew-cask": { "flake": false, "locked": { - "lastModified": 1760394225, - "narHash": "sha256-glgAFaMn6gIH+EoG2VADjl6P9vIZXuZJvXz2AGCKFvA=", + "lastModified": 1760622175, + "narHash": "sha256-y9q2IPDxI84meGr/LfrJUlTYo/rnmTZ0m1vpPtDXhtk=", "owner": "homebrew", "repo": "homebrew-cask", - "rev": "0ef2d82c21a55538180e54eb7e7be4bdfcb7245c", + "rev": "65469180e57b0d3abd18f3386e0f5178badaf450", "type": "github" }, "original": { @@ -536,11 +551,11 @@ "homebrew-core": { "flake": false, "locked": { - "lastModified": 1760397451, - "narHash": "sha256-Jf6FuAvg1CFksE+ll2Hio7WkkWPAHdyphr4m02SJYyE=", + "lastModified": 1760626955, + "narHash": "sha256-itpYMHfkDX5wOAye91G2EedJHvUo4JKF4ccP3Ds6BJo=", "owner": "homebrew", "repo": "homebrew-core", - "rev": "c9cb4f6e237e2430c217affd0788e683bcfcbe2a", + "rev": "08e77fbdb7d82c47f10ca134c84676178daff0de", "type": "github" }, "original": { @@ -592,11 +607,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1760266702, - "narHash": "sha256-TP19RpzIyo1JeYAhKii13seYwmhkv7IOD+dCnQOrcgQ=", + "lastModified": 1760534924, + "narHash": "sha256-OIOCC86DxTxp1VG7xAiM+YABtVqp6vTkYIoAiGQMqso=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "3d7e970d4cac5d3ee3fe7cafa17cc9868fa21fed", + "rev": "100b4e000032b865563a9754e5bca189bc544764", "type": "github" }, "original": { @@ -783,11 +798,11 @@ "nixpkgs": "nixpkgs_9" }, "locked": { - "lastModified": 1760320782, - "narHash": "sha256-1ycwVgQbDxEc4/zf8OxvnwJJwZ4wNIqgigOv/R/KdW8=", + "lastModified": 1760579789, + "narHash": "sha256-LJ4Mv9zPQi/ajvMLVV4JSzK3irLRJTcScJQUtSKiRbU=", "owner": "nix-community", "repo": "nix-vscode-extensions", - "rev": "b227991f119ccaf404e9236d527c1d0e7412fe95", + "rev": "97d848675f39fb32f5d3bab8ccefe0f0aff545b8", "type": "github" }, "original": { @@ -879,15 +894,16 @@ "nixos-raspberrypi": { "inputs": { "argononed": "argononed", + "flake-compat": "flake-compat_5", "nixos-images": "nixos-images", "nixpkgs": "nixpkgs_12" }, "locked": { - "lastModified": 1759767678, - "narHash": "sha256-+h+Go9D4tw1B9zRWmg84z8x+5p2maEfBwP9+XlzESBg=", + "lastModified": 1760627567, + "narHash": "sha256-JBTTpUxYO8PwzD35cl3GAQ0sIWarv72aXySjLVJmMgU=", "owner": "mjallen18", "repo": "nixos-raspberrypi", - "rev": "fcbfe3aa574abbaddb9aef972da162cbe30703f7", + "rev": "7e6271ffdd5d0174ef5ee14a3b7b59043a9838c9", "type": "github" }, "original": { @@ -961,11 +977,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1760139962, - "narHash": "sha256-4xggC56Rub3WInz5eD7EZWXuLXpNvJiUPahGtMkwtuc=", + "lastModified": 1760423683, + "narHash": "sha256-Tb+NYuJhWZieDZUxN6PgglB16yuqBYQeMJyYBGCXlt8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7e297ddff44a3cc93673bb38d0374df8d0ad73e4", + "rev": "a493e93b4a259cd9fea8073f89a7ed9b1c5a1da2", "type": "github" }, "original": { @@ -1009,11 +1025,11 @@ }, "nixpkgs_12": { "locked": { - "lastModified": 1758583444, - "narHash": "sha256-OnYthHIsVIMrZDWtCEp6Zde8ZtMcEBnpyCIdtTKU7bo=", + "lastModified": 1760455578, + "narHash": "sha256-qWdXMNF/wSVsRSIIFE3GMtaIzwlCbgqNPGPPzz/OZNk=", "owner": "nvmd", "repo": "nixpkgs", - "rev": "d8551a2038e21091fce8157e070bdb25dca0a94f", + "rev": "09926a8925567372a0509605959a024bb319f6c9", "type": "github" }, "original": { @@ -1025,11 +1041,11 @@ }, "nixpkgs_13": { "locked": { - "lastModified": 1760334914, - "narHash": "sha256-+eKK1TjjjYoJ7uNAf64nistrdf7K1qAxYpid+RNWssI=", + "lastModified": 1760522646, + "narHash": "sha256-QXds0iuc8JqK8Fdpmn/Gozpz7FKsio2rT6D2VROmqCw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "662e2ea08d7caacdfacdb92512a13b3f336f6e56", + "rev": "3ce5398bca4f937a37cbb07c9d18cb2c37be43a8", "type": "github" }, "original": { @@ -1073,11 +1089,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1760038930, - "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", + "lastModified": 1760284886, + "narHash": "sha256-TK9Kr0BYBQ/1P5kAsnNQhmWWKgmZXwUQr4ZMjCzWf2c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", + "rev": "cf3f5c4def3c7b5f1fc012b3d839575dbe552d43", "type": "github" }, "original": { @@ -1228,7 +1244,7 @@ }, "pre-commit-hooks-nix_2": { "inputs": { - "flake-compat": "flake-compat_5", + "flake-compat": "flake-compat_6", "gitignore": "gitignore_2", "nixpkgs": "nixpkgs_14" }, @@ -1392,7 +1408,7 @@ }, "snowfall-lib": { "inputs": { - "flake-compat": "flake-compat_6", + "flake-compat": "flake-compat_7", "flake-utils-plus": "flake-utils-plus", "nixpkgs": [ "nixpkgs" diff --git a/modules/nixos/desktop/hyprland/wallpapers/default.nix b/modules/nixos/desktop/hyprland/wallpapers/default.nix index 28ac5ea..7810b99 100644 --- a/modules/nixos/desktop/hyprland/wallpapers/default.nix +++ b/modules/nixos/desktop/hyprland/wallpapers/default.nix @@ -119,12 +119,12 @@ in enable = true; wants = [ "network-online.target" ]; after = [ "network-online.target" ]; - before = [ "display-manager.service" ]; - requiredBy = [ - "plymouth-quit-wait.service" - "display-manager.service" - ]; - wantedBy = [ "display-manager.service" ]; +# before = [ "display-manager.service" ]; +# requiredBy = [ +# "plymouth-quit-wait.service" +# "display-manager.service" +# ]; +# wantedBy = [ "display-manager.service" ]; path = [ pkgs.bash pkgs.jq diff --git a/modules/nixos/hardware/raspberry-pi/default.nix b/modules/nixos/hardware/raspberry-pi/default.nix index a7c7137..fdf36ae 100644 --- a/modules/nixos/hardware/raspberry-pi/default.nix +++ b/modules/nixos/hardware/raspberry-pi/default.nix @@ -25,7 +25,6 @@ in # Common Raspberry Pi packages environment.systemPackages = with pkgs; [ i2c-tools - libraspberrypi raspberrypi-eeprom raspberrypifw raspberrypiWirelessFirmware diff --git a/modules/nixos/nix/default.nix b/modules/nixos/nix/default.nix index 485bcb4..09034e1 100644 --- a/modules/nixos/nix/default.nix +++ b/modules/nixos/nix/default.nix @@ -14,7 +14,7 @@ "https://cache.nixos.org/" ]; trusted-public-keys = [ - "nas-cache:5ibTWOXJYlKBaoNtdDEPmvdLPtfnbwf9jvdnfwi5dUs=" + "nas-cache:Y7PR+XTLr1bLIL85PKb9Tk9/BnE5HndTKvZYWVP1/48=" "nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; diff --git a/modules/nixos/services/headscale/default.nix b/modules/nixos/services/headscale/default.nix new file mode 100644 index 0000000..12eb12b --- /dev/null +++ b/modules/nixos/services/headscale/default.nix @@ -0,0 +1,63 @@ +{ + config, + pkgs, + lib, + namespace, + ... +}: +with lib; +let + cfg = config.${namespace}.services.headscale; + + headscaleConfig = { + services.headscale = { + enable = true; + openFirewall = true; + address = "0.0.0.0"; + port = cfg.port; + settings = { + server_url = "https://headscale.mjallen.dev:443"; + database.sqlite.path = "${cfg.dataDir}/db.sqlite"; + dns ={ + nameservers.global = [ + "1.1.1.1" + "8.8.8.8" + ]; + base_domain = "tailnet.mjallen.dev"; + magic_dns = true; + }; + }; + # oidc + }; + }; + + # Create reverse proxy configuration using mkReverseProxy + reverseProxyConfig = lib.${namespace}.mkReverseProxy { + name = "headscale"; + subdomain = cfg.reverseProxy.subdomain; + url = "http://${cfg.localAddress}:${toString cfg.port}"; + middlewares = cfg.reverseProxy.middlewares; + }; + + fullConfig = { + "${namespace}".services.traefik = lib.mkIf cfg.reverseProxy.enable { + reverseProxies = [ reverseProxyConfig ]; + }; + } + // headscaleConfig; +in +{ + options.${namespace}.services.headscale = { + enable = mkEnableOption "headscale service"; + + port = mkOpt types.int 8080 "Port for headscale to be hosted on"; + + localAddress = mkOpt types.str "127.0.0.1" "local address of the service"; + + dataDir = mkOpt types.str "" "Path to the data dir"; + + reverseProxy = mkReverseProxyOpt; + }; + + config = mkIf cfg.enable fullConfig; +} diff --git a/overlays/rcon/default.nix b/overlays/rcon/default.nix index e804864..c722143 100644 --- a/overlays/rcon/default.nix +++ b/overlays/rcon/default.nix @@ -4,21 +4,11 @@ final: prev: { open-webui = inputs.nixpkgs-stable.legacyPackages.${prev.system}.open-webui; immich-machine-learning = inputs.nixpkgs-stable.legacyPackages.${prev.system}.immich-machine-learning; wyoming-faster-whisper = inputs.nixpkgs-stable.legacyPackages.${prev.system}.wyoming-faster-whisper; - calibre = inputs.nixpkgs-stable.legacyPackages.${prev.system}.calibre; ollama = inputs.nixpkgs-stable.legacyPackages.${prev.system}.ollama; - restic-browser = inputs.nixpkgs-stable.legacyPackages.${prev.system}.restic-browser; - heroic = inputs.nixpkgs-stable.legacyPackages.${prev.system}.heroic; - libphonenumber = inputs.nixpkgs-stable.legacyPackages.${prev.system}.libphonenumber; - evolution-data-server = inputs.nixpkgs-stable.legacyPackages.${prev.system}.evolution-data-server; - orca-slicer = inputs.nixpkgs-stable.legacyPackages.${prev.system}.orca-slicer; - lutris = inputs.nixpkgs-stable.legacyPackages.${prev.system}.lutris; - - libraspberrypi = inputs.nixpkgs-stable.legacyPackages.${prev.system}.libraspberrypi; fex = inputs.nixpkgs-stable.legacyPackages.${prev.system}.fex; gjs = inputs.nixpkgs-stable.legacyPackages.${prev.system}.gjs; libsecret = inputs.nixpkgs-stable.legacyPackages.${prev.system}.libsecret; - kdeconnect = inputs.nixpkgs-stable.legacyPackages.${prev.system}.kdeconnect; electron = inputs.nixpkgs-stable.legacyPackages.${prev.system}.electron; - code-server = inputs.nixpkgs-stable.legacyPackages.${prev.system}.code-server; + # sdl3 = inputs.nixpkgs-stable.legacyPackages.${prev.system}.sdl3; } diff --git a/systems/x86_64-linux/jallen-nas/apps.nix b/systems/x86_64-linux/jallen-nas/apps.nix index 35607ec..886e0ba 100755 --- a/systems/x86_64-linux/jallen-nas/apps.nix +++ b/systems/x86_64-linux/jallen-nas/apps.nix @@ -99,6 +99,20 @@ }; }; + headscale = { + enable = true; + port = 2112; + dataDir = "/media/nas/main/nix-app-data/headscale"; + reverseProxy = { + enable = true; + subdomain = "headscale"; + middlewares = [ + "crowdsec" + "whitelist-geoblock" + ]; + }; + }; + unmanic = { enable = true; configPath = "/media/nas/main/nix-app-data/unmanic/config"; diff --git a/systems/x86_64-linux/matt-nixos/boot.nix b/systems/x86_64-linux/matt-nixos/boot.nix index 5e8fd3f..06829f6 100755 --- a/systems/x86_64-linux/matt-nixos/boot.nix +++ b/systems/x86_64-linux/matt-nixos/boot.nix @@ -44,6 +44,8 @@ in consoleLogLevel = 3; bootspec.enable = true; + + binfmt.emulatedSystems = [ "aarch64-linux" ]; # --argstr system aarch64-linux }; environment.systemPackages = with pkgsVersion; [ diff --git a/systems/x86_64-linux/matt-nixos/default.nix b/systems/x86_64-linux/matt-nixos/default.nix index 6ecb204..f488455 100644 --- a/systems/x86_64-linux/matt-nixos/default.nix +++ b/systems/x86_64-linux/matt-nixos/default.nix @@ -36,7 +36,7 @@ desktop = { hyprland = { enable = true; - wallpaperSource = "nasa"; + wallpaperSource = "bing"; }; gnome.enable = false; }; @@ -78,7 +78,6 @@ cosmic.enable = lib.mkForce true; hyprland = { enable = lib.mkForce false; - wallpaperSource = "nasa"; }; gnome.enable = lib.mkForce false; };