diff --git a/flake.nix b/flake.nix index db3373d..a36ea41 100644 --- a/flake.nix +++ b/flake.nix @@ -34,11 +34,49 @@ restray.url = "git+https://tangled.org/devins.page/restray"; }; - outputs = inputs: - { - formatter = inputs.nixpkgs.lib.genAttrs ["aarch64-darwin" "x86_64-linux"] ( - system: inputs.nixpkgs.legacyPackages.${system}.alejandra - ); - } - // import ./hosts {inherit inputs;}; + outputs = inputs: let + specialArgs = { + inherit inputs; + topology = import ./hosts/topology.nix; + }; + + nixosBase = [ + ./modules/common + ./modules/nixos + ./home/devin.nix + ]; + darwinBase = [ + ./modules/common + ./modules/darwin + ./home/devin.nix + ]; + + mkNixos = host: + inputs.nixpkgs.lib.nixosSystem { + inherit specialArgs; + modules = [./hosts/${host}] ++ nixosBase; + }; + mkDarwin = host: + inputs.nix-darwin.lib.darwinSystem { + system = "aarch64-darwin"; + inherit specialArgs; + modules = [./hosts/${host}] ++ darwinBase; + }; + in { + formatter = inputs.nixpkgs.lib.genAttrs ["aarch64-darwin" "x86_64-linux"] ( + system: inputs.nixpkgs.legacyPackages.${system}.alejandra + ); + + nixosConfigurations = { + bluepill = mkNixos "bluepill"; + bluepill-proxy = mkNixos "bluepill-proxy"; + d-latitude = mkNixos "d-latitude"; + }; + + darwinConfigurations = { + bluellama = mkDarwin "bluellama"; + bluellama2 = mkDarwin "bluellama2"; + d-macbook = mkDarwin "d-macbook"; + }; + }; } diff --git a/modules/home-manager/users/devin/desktop/mail.nix b/home/desktop.nix similarity index 98% rename from modules/home-manager/users/devin/desktop/mail.nix rename to home/desktop.nix index da99df4..b2b3071 100644 --- a/modules/home-manager/users/devin/desktop/mail.nix +++ b/home/desktop.nix @@ -5,6 +5,8 @@ pkgs, ... }: { + age.identityPaths = ["${config.home.homeDirectory}/.config/age/keys.txt"]; + age.secrets.mail-gmail = { file = inputs.self + "/secrets/mail-gmail.age"; }; diff --git a/modules/home-manager/users/devin/default.nix b/home/devin.nix similarity index 100% rename from modules/home-manager/users/devin/default.nix rename to home/devin.nix diff --git a/modules/home-manager/users/devin/programs/default.nix b/home/programs/default.nix similarity index 100% rename from modules/home-manager/users/devin/programs/default.nix rename to home/programs/default.nix diff --git a/modules/home-manager/users/devin/programs/direnv.nix b/home/programs/direnv.nix similarity index 100% rename from modules/home-manager/users/devin/programs/direnv.nix rename to home/programs/direnv.nix diff --git a/home/programs/fastfetch.nix b/home/programs/fastfetch.nix new file mode 100644 index 0000000..2422d09 --- /dev/null +++ b/home/programs/fastfetch.nix @@ -0,0 +1,5 @@ +{ + programs.fastfetch = { + enable = true; + }; +} diff --git a/modules/home-manager/users/devin/programs/fish.nix b/home/programs/fish.nix similarity index 100% rename from modules/home-manager/users/devin/programs/fish.nix rename to home/programs/fish.nix diff --git a/modules/home-manager/users/devin/programs/git.nix b/home/programs/git.nix similarity index 100% rename from modules/home-manager/users/devin/programs/git.nix rename to home/programs/git.nix diff --git a/modules/home-manager/users/devin/programs/jujutsu.nix b/home/programs/jujutsu.nix similarity index 100% rename from modules/home-manager/users/devin/programs/jujutsu.nix rename to home/programs/jujutsu.nix diff --git a/modules/home-manager/users/devin/programs/neovim.nix b/home/programs/neovim.nix similarity index 100% rename from modules/home-manager/users/devin/programs/neovim.nix rename to home/programs/neovim.nix diff --git a/modules/home-manager/users/devin/programs/tmux.nix b/home/programs/tmux.nix similarity index 100% rename from modules/home-manager/users/devin/programs/tmux.nix rename to home/programs/tmux.nix diff --git a/hosts/darwin/bluellama/default.nix b/hosts/bluellama/default.nix similarity index 71% rename from hosts/darwin/bluellama/default.nix rename to hosts/bluellama/default.nix index 62a6d2c..4b4d144 100644 --- a/hosts/darwin/bluellama/default.nix +++ b/hosts/bluellama/default.nix @@ -1,4 +1,9 @@ { + services.tailscale = { + enable = true; + overrideLocalDns = true; + }; + homebrew = { casks = [ "exo" diff --git a/hosts/darwin/bluellama2/default.nix b/hosts/bluellama2/default.nix similarity index 72% rename from hosts/darwin/bluellama2/default.nix rename to hosts/bluellama2/default.nix index 6476d3c..790a7a7 100644 --- a/hosts/darwin/bluellama2/default.nix +++ b/hosts/bluellama2/default.nix @@ -1,4 +1,9 @@ { + services.tailscale = { + enable = true; + overrideLocalDns = true; + }; + homebrew = { casks = [ "exo" diff --git a/hosts/nixos/bluepill-proxy/default.nix b/hosts/bluepill-proxy/default.nix similarity index 69% rename from hosts/nixos/bluepill-proxy/default.nix rename to hosts/bluepill-proxy/default.nix index 0bf31ec..79482f1 100644 --- a/hosts/nixos/bluepill-proxy/default.nix +++ b/hosts/bluepill-proxy/default.nix @@ -1,7 +1,8 @@ { imports = [ - ./hardware.nix + ./hardware-configuration.nix ./services + ../../modules/nixos/server.nix ]; networking = { diff --git a/hosts/nixos/bluepill-proxy/hardware.nix b/hosts/bluepill-proxy/hardware-configuration.nix similarity index 100% rename from hosts/nixos/bluepill-proxy/hardware.nix rename to hosts/bluepill-proxy/hardware-configuration.nix diff --git a/hosts/nixos/bluepill-proxy/services/caddy.nix b/hosts/bluepill-proxy/services/caddy.nix similarity index 96% rename from hosts/nixos/bluepill-proxy/services/caddy.nix rename to hosts/bluepill-proxy/services/caddy.nix index 62dd793..02233b2 100644 --- a/hosts/nixos/bluepill-proxy/services/caddy.nix +++ b/hosts/bluepill-proxy/services/caddy.nix @@ -56,11 +56,6 @@ in { reverse_proxy http://${bluepill.tailnetAddress}:${toString bluepill.services.navidrome} ''; }; - "feishin.devins.page" = { - extraConfig = '' - reverse_proxy http://${bluepill.tailnetAddress}:${toString bluepill.services.feishin} - ''; - }; "jellyfin.devins.page" = { extraConfig = '' reverse_proxy http://${bluepill.tailnetAddress}:${toString bluepill.services.jellyfin} diff --git a/hosts/nixos/bluepill-proxy/services/default.nix b/hosts/bluepill-proxy/services/default.nix similarity index 100% rename from hosts/nixos/bluepill-proxy/services/default.nix rename to hosts/bluepill-proxy/services/default.nix diff --git a/hosts/nixos/bluepill-proxy/services/tinysub.nix b/hosts/bluepill-proxy/services/tinysub.nix similarity index 100% rename from hosts/nixos/bluepill-proxy/services/tinysub.nix rename to hosts/bluepill-proxy/services/tinysub.nix diff --git a/hosts/bluepill/default.nix b/hosts/bluepill/default.nix new file mode 100644 index 0000000..d516832 --- /dev/null +++ b/hosts/bluepill/default.nix @@ -0,0 +1,53 @@ +{ + config, + inputs, + pkgs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ./services + ./home.nix + ../../modules/nixos/server.nix + ../../modules/nixos/viaproxy.nix + inputs.quadlet-nix.nixosModules.quadlet + inputs.tangled.nixosModules.knot + inputs.tangled.nixosModules.spindle + inputs.restray.nixosModules.default + ]; + + nixpkgs.config.permittedInsecurePackages = [ + "olm-3.2.16" + ]; + + networking.hostName = "bluepill"; + + environment.systemPackages = with pkgs; [ + inputs.restray.packages.${pkgs.stdenv.hostPlatform.system}.default + restic + ]; + + users.groups.msmtp.members = ["tranquil-pds"]; + + age.secrets.msmtp = { + file = inputs.self + "/secrets/msmtp.age"; + group = "msmtp"; + mode = "640"; + }; + + programs.msmtp = { + enable = true; + accounts.default = { + port = 587; + auth = "plain"; + tls = true; + tls_starttls = true; + host = "mail.smtp2go.com"; + from = "noreply@devins.page"; + user = "noreply-devinspage"; + passwordeval = "cat ${config.age.secrets.msmtp.path}"; + }; + }; + + system.stateVersion = "24.11"; +} diff --git a/hosts/nixos/bluepill/hardware.nix b/hosts/bluepill/hardware-configuration.nix similarity index 100% rename from hosts/nixos/bluepill/hardware.nix rename to hosts/bluepill/hardware-configuration.nix diff --git a/hosts/bluepill/home.nix b/hosts/bluepill/home.nix new file mode 100644 index 0000000..01f0546 --- /dev/null +++ b/hosts/bluepill/home.nix @@ -0,0 +1,72 @@ +{ + home-manager.users.devin.imports = [ + ( + {pkgs, ...}: let + ffmpeg-fdkaac = pkgs.ffmpeg.override { + withFdkAac = true; + withUnfree = true; + }; + musicDir = "/srv/media/music"; + in { + home.packages = with pkgs; [ + ffmpeg-fdkaac + imagemagick + ]; + + programs.beets = { + enable = true; + settings = { + directory = musicDir; + library = "${musicDir}/musiclibrary.db"; + + plugins = "chroma musicbrainz lastgenre duplicates scrub fetchart embedart lyrics convert replaygain info mbsync"; + + lastgenre.count = 10; + + lyrics = { + synced = true; + sources = "lrclib"; + }; + + convert = { + auto = true; + dest = musicDir; + never_convert_lossy_files = true; + format = "aac"; + formats = { + aac = { + command = "${ffmpeg-fdkaac}/bin/ffmpeg -i $source -y -vn -c:a libfdk_aac -vbr 5 -ar 44100 $dest"; + extension = "m4a"; + }; + flac = { + command = "${ffmpeg-fdkaac}/bin/ffmpeg -i $source -ar 44100 -sample_fmt s16 -y $dest"; + extension = "flac"; + }; + }; + }; + + fetchart = { + cover_format = "JPEG"; + enforce_ratio = true; + }; + embedart = { + auto = false; + maxwidth = 600; + quality = 90; + }; + + replaygain.backend = "ffmpeg"; + + import = { + from_scratch = true; + languages = "en"; + }; + + asciify_paths = true; + original_date = true; + }; + }; + } + ) + ]; +} diff --git a/hosts/nixos/bluepill/services/default.nix b/hosts/bluepill/services/default.nix similarity index 95% rename from hosts/nixos/bluepill/services/default.nix rename to hosts/bluepill/services/default.nix index bf79c71..c3a340b 100644 --- a/hosts/nixos/bluepill/services/default.nix +++ b/hosts/bluepill/services/default.nix @@ -17,6 +17,5 @@ ./tangled.nix ./tranquil-pds.nix ./transmission.nix - ./viaproxy.nix ]; } diff --git a/hosts/nixos/bluepill/services/gonic.nix b/hosts/bluepill/services/gonic.nix similarity index 63% rename from hosts/nixos/bluepill/services/gonic.nix rename to hosts/bluepill/services/gonic.nix index b1d5f0b..0cd3ef6 100644 --- a/hosts/nixos/bluepill/services/gonic.nix +++ b/hosts/bluepill/services/gonic.nix @@ -1,13 +1,15 @@ -{config, ...}: { +{config, ...}: let + port = 4747; +in { services.gonic = { enable = true; settings = { - listen-addr = "0.0.0.0:4747"; + listen-addr = "0.0.0.0:${toString port}"; music-path = [config.services.navidrome.settings.MusicFolder]; podcast-path = "/srv/media/podcasts"; playlists-path = "/srv/media/playlists"; }; }; - networking.firewall.allowedTCPPorts = [4747]; + networking.firewall.allowedTCPPorts = [port]; } diff --git a/hosts/nixos/bluepill/services/immich.nix b/hosts/bluepill/services/immich.nix similarity index 100% rename from hosts/nixos/bluepill/services/immich.nix rename to hosts/bluepill/services/immich.nix diff --git a/hosts/nixos/bluepill/services/ipod-sync.nix b/hosts/bluepill/services/ipod-sync.nix similarity index 100% rename from hosts/nixos/bluepill/services/ipod-sync.nix rename to hosts/bluepill/services/ipod-sync.nix diff --git a/hosts/nixos/bluepill/services/jellyfin.nix b/hosts/bluepill/services/jellyfin.nix similarity index 100% rename from hosts/nixos/bluepill/services/jellyfin.nix rename to hosts/bluepill/services/jellyfin.nix diff --git a/hosts/nixos/bluepill/services/matrix.nix b/hosts/bluepill/services/matrix.nix similarity index 100% rename from hosts/nixos/bluepill/services/matrix.nix rename to hosts/bluepill/services/matrix.nix diff --git a/hosts/nixos/bluepill/services/navidrome.nix b/hosts/bluepill/services/navidrome.nix similarity index 100% rename from hosts/nixos/bluepill/services/navidrome.nix rename to hosts/bluepill/services/navidrome.nix diff --git a/hosts/nixos/bluepill/services/nix-serve.nix b/hosts/bluepill/services/nix-serve.nix similarity index 100% rename from hosts/nixos/bluepill/services/nix-serve.nix rename to hosts/bluepill/services/nix-serve.nix diff --git a/hosts/nixos/bluepill/services/quadlet-ourcity.nix b/hosts/bluepill/services/quadlet-ourcity.nix similarity index 100% rename from hosts/nixos/bluepill/services/quadlet-ourcity.nix rename to hosts/bluepill/services/quadlet-ourcity.nix diff --git a/hosts/nixos/bluepill/services/quadlet-reelsparty.nix b/hosts/bluepill/services/quadlet-reelsparty.nix similarity index 100% rename from hosts/nixos/bluepill/services/quadlet-reelsparty.nix rename to hosts/bluepill/services/quadlet-reelsparty.nix diff --git a/hosts/nixos/bluepill/services/quadlet-server2.nix b/hosts/bluepill/services/quadlet-server2.nix similarity index 100% rename from hosts/nixos/bluepill/services/quadlet-server2.nix rename to hosts/bluepill/services/quadlet-server2.nix diff --git a/hosts/nixos/bluepill/services/restic.nix b/hosts/bluepill/services/restic.nix similarity index 100% rename from hosts/nixos/bluepill/services/restic.nix rename to hosts/bluepill/services/restic.nix diff --git a/hosts/nixos/bluepill/services/restray.nix b/hosts/bluepill/services/restray.nix similarity index 100% rename from hosts/nixos/bluepill/services/restray.nix rename to hosts/bluepill/services/restray.nix diff --git a/hosts/nixos/bluepill/services/samba.nix b/hosts/bluepill/services/samba.nix similarity index 93% rename from hosts/nixos/bluepill/services/samba.nix rename to hosts/bluepill/services/samba.nix index 8014669..ea32d5f 100644 --- a/hosts/nixos/bluepill/services/samba.nix +++ b/hosts/bluepill/services/samba.nix @@ -1,6 +1,4 @@ -{config, ...}: let - transmissionDir = config.services.transmission.home; -in { +{config, ...}: { users.groups.share-general.members = ["transmission" "devin"]; users.groups.share-media.members = ["jellyfin" "navidrome" "gonic" "slskd" "transmission" "devin"]; @@ -38,7 +36,7 @@ in { "fruit:posix_rename" = "yes"; }; "transmission" = { - "path" = transmissionDir; + "path" = config.services.transmission.home; "comment" = "transmission daemon directory"; "read only" = "no"; }; diff --git a/hosts/nixos/bluepill/services/slskd.nix b/hosts/bluepill/services/slskd.nix similarity index 100% rename from hosts/nixos/bluepill/services/slskd.nix rename to hosts/bluepill/services/slskd.nix diff --git a/hosts/nixos/bluepill/services/tangled.nix b/hosts/bluepill/services/tangled.nix similarity index 100% rename from hosts/nixos/bluepill/services/tangled.nix rename to hosts/bluepill/services/tangled.nix diff --git a/hosts/nixos/bluepill/services/tranquil-pds.nix b/hosts/bluepill/services/tranquil-pds.nix similarity index 100% rename from hosts/nixos/bluepill/services/tranquil-pds.nix rename to hosts/bluepill/services/tranquil-pds.nix diff --git a/hosts/nixos/bluepill/services/transmission.nix b/hosts/bluepill/services/transmission.nix similarity index 100% rename from hosts/nixos/bluepill/services/transmission.nix rename to hosts/bluepill/services/transmission.nix diff --git a/hosts/nixos/d-latitude/programs/default.nix b/hosts/d-latitude/default.nix similarity index 61% rename from hosts/nixos/d-latitude/programs/default.nix rename to hosts/d-latitude/default.nix index 85de5eb..6d7fbd7 100644 --- a/hosts/nixos/d-latitude/programs/default.nix +++ b/hosts/d-latitude/default.nix @@ -1,4 +1,34 @@ -{pkgs, ...}: { +{ + inputs, + pkgs, + ... +}: { + imports = [ + ./hardware-configuration.nix + ./home.nix + inputs.aerothemeplasma-nix.nixosModules.aerothemeplasma-nix + ]; + + boot.plymouth.enable = true; + boot.kernelPackages = pkgs.linuxPackages_latest; + + networking = { + hostName = "d-latitude"; + networkmanager.enable = true; + }; + + powerManagement.enable = true; + powerManagement.powertop.enable = true; + + services.power-profiles-daemon.enable = false; + services.auto-cpufreq.enable = true; + + services.displayManager.sddm.enable = true; + services.displayManager.sddm.wayland.enable = true; + services.displayManager.sddm.wayland.compositor = "kwin"; + services.desktopManager.plasma6.enable = true; + services.displayManager.defaultSession = "aerothemeplasma"; + programs.firefox.enable = true; programs.aeroshell = { @@ -40,4 +70,6 @@ wl-clipboard # Wayland copy/paste support vlc # Media player ]; + + system.stateVersion = "26.11"; } diff --git a/hosts/nixos/d-latitude/hardware.nix b/hosts/d-latitude/hardware-configuration.nix similarity index 89% rename from hosts/nixos/d-latitude/hardware.nix rename to hosts/d-latitude/hardware-configuration.nix index 4798b05..c9612d9 100644 --- a/hosts/nixos/d-latitude/hardware.nix +++ b/hosts/d-latitude/hardware-configuration.nix @@ -8,6 +8,9 @@ (modulesPath + "/installer/scan/not-detected.nix") ]; + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"]; boot.initrd.kernelModules = []; boot.kernelModules = ["kvm-amd"]; diff --git a/hosts/d-latitude/home.nix b/hosts/d-latitude/home.nix new file mode 100644 index 0000000..24cfcf8 --- /dev/null +++ b/hosts/d-latitude/home.nix @@ -0,0 +1,5 @@ +{ + home-manager.users.devin.imports = [ + ../../home/desktop.nix + ]; +} diff --git a/hosts/darwin/d-macbook/programs/default.nix b/hosts/d-macbook/default.nix similarity index 92% rename from hosts/darwin/d-macbook/programs/default.nix rename to hosts/d-macbook/default.nix index 7879a75..18db699 100644 --- a/hosts/darwin/d-macbook/programs/default.nix +++ b/hosts/d-macbook/default.nix @@ -3,6 +3,11 @@ pkgs, ... }: { + imports = [./home.nix]; + + networking.hostName = "d-macbook"; + system.stateVersion = 6; + environment.systemPackages = with pkgs; [ cinny-desktop inputs.restray.packages.${pkgs.stdenv.hostPlatform.system}.default diff --git a/hosts/d-macbook/home.nix b/hosts/d-macbook/home.nix new file mode 100644 index 0000000..c0e68c3 --- /dev/null +++ b/hosts/d-macbook/home.nix @@ -0,0 +1,79 @@ +{ + home-manager.users.devin.imports = [ + ../../home/desktop.nix + ( + { + config, + inputs, + pkgs, + ... + }: { + imports = [inputs.restray.homeManagerModules.default]; + + age.secrets.restray-bluepill-rest = { + file = inputs.self + "/secrets/restray-bluepill-rest.age"; + path = "${config.home.homeDirectory}/.local/state/agenix/restray-bluepill-rest"; + }; + age.secrets.restray-onedrive = { + file = inputs.self + "/secrets/restray-onedrive.age"; + path = "${config.home.homeDirectory}/.local/state/agenix/restray-onedrive"; + }; + + home.packages = with pkgs; [ + inputs.restray.packages.${pkgs.stdenv.hostPlatform.system}.default + restic + ]; + + programs.restray = { + enable = true; + gui = { + scheduleDisplay = "last"; + terminal = "Ghostty"; + }; + profiles = { + "bluepill-rest" = { + envFile = config.age.secrets.restray-bluepill-rest.path; + retryLock = "5m"; + schedule = { + cron = "30 * * * *"; + onBattery = true; + }; + backup = { + paths = [ + "${config.home.homeDirectory}/Desktop" + "${config.home.homeDirectory}/Documents" + "${config.home.homeDirectory}/Movies" + "${config.home.homeDirectory}/Music" + "${config.home.homeDirectory}/Pictures" + "${config.home.homeDirectory}/Library/Mobile Documents" + ]; + args = ["--skip-if-unchanged" "--one-file-system" "--exclude-caches" "--exclude-cloud-files" "--exclude" "${config.home.homeDirectory}/Music/Logic Pro Library.bundle"]; + }; + prune.args = ["--repack-smaller-than" "64M" "--keep-last" "4" "--keep-hourly" "24" "--keep-daily" "14" "--keep-weekly" "4"]; + }; + "onedrive" = { + envFile = config.age.secrets.restray-onedrive.path; + retryLock = "5m"; + schedule = { + cron = "30 0 * * *"; + onBattery = true; + }; + backup = { + paths = [ + "${config.home.homeDirectory}/Desktop" + "${config.home.homeDirectory}/Documents" + "${config.home.homeDirectory}/Movies" + "${config.home.homeDirectory}/Music" + "${config.home.homeDirectory}/Pictures" + "${config.home.homeDirectory}/Library/Mobile Documents" + ]; + args = ["--skip-if-unchanged" "--one-file-system" "--exclude-caches" "--exclude-cloud-files" "--exclude" "${config.home.homeDirectory}/Music/Logic Pro Library.bundle"]; + }; + prune.args = ["--repack-smaller-than" "64M" "--keep-last" "4" "--keep-daily" "7"]; + }; + }; + }; + } + ) + ]; +} diff --git a/hosts/darwin/d-macbook/default.nix b/hosts/darwin/d-macbook/default.nix deleted file mode 100644 index 07b7ce3..0000000 --- a/hosts/darwin/d-macbook/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - imports = [ - ./programs - ./home-manager - ]; - - networking.hostName = "d-macbook"; - system.stateVersion = 6; -} diff --git a/hosts/darwin/d-macbook/home-manager/default.nix b/hosts/darwin/d-macbook/home-manager/default.nix deleted file mode 100644 index ccb3e34..0000000 --- a/hosts/darwin/d-macbook/home-manager/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{inputs, ...}: { - home-manager.users.devin.imports = [ - (inputs.self + "/modules/home-manager/users/devin/desktop") - ./devin - ]; -} diff --git a/hosts/darwin/d-macbook/home-manager/devin/default.nix b/hosts/darwin/d-macbook/home-manager/devin/default.nix deleted file mode 100644 index 4d8aa76..0000000 --- a/hosts/darwin/d-macbook/home-manager/devin/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [./restray.nix]; -} diff --git a/hosts/darwin/d-macbook/home-manager/devin/restray.nix b/hosts/darwin/d-macbook/home-manager/devin/restray.nix deleted file mode 100644 index c729bf7..0000000 --- a/hosts/darwin/d-macbook/home-manager/devin/restray.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ - config, - inputs, - pkgs, - ... -}: { - age.secrets.restray-bluepill-rest = { - file = inputs.self + "/secrets/restray-bluepill-rest.age"; - path = "${config.home.homeDirectory}/.local/state/agenix/restray-bluepill-rest"; - }; - age.secrets.restray-onedrive = { - file = inputs.self + "/secrets/restray-onedrive.age"; - path = "${config.home.homeDirectory}/.local/state/agenix/restray-onedrive"; - }; - - home.packages = with pkgs; [ - inputs.restray.packages.${pkgs.stdenv.hostPlatform.system}.default - restic - ]; - - imports = [inputs.restray.homeManagerModules.default]; - - programs.restray = { - enable = true; - gui = { - scheduleDisplay = "last"; - terminal = "Ghostty"; - }; - profiles = { - "bluepill-rest" = { - envFile = config.age.secrets.restray-bluepill-rest.path; - retryLock = "5m"; - schedule = { - cron = "30 * * * *"; - onBattery = true; - }; - backup = { - paths = [ - "${config.home.homeDirectory}/Desktop" - "${config.home.homeDirectory}/Documents" - "${config.home.homeDirectory}/Movies" - "${config.home.homeDirectory}/Music" - "${config.home.homeDirectory}/Pictures" - "${config.home.homeDirectory}/Library/Mobile Documents" - ]; - args = ["--skip-if-unchanged" "--one-file-system" "--exclude-caches" "--exclude-cloud-files" "--exclude" "${config.home.homeDirectory}/Music/Logic Pro Library.bundle"]; - }; - prune.args = ["--repack-smaller-than" "64M" "--keep-last" "4" "--keep-hourly" "24" "--keep-daily" "14" "--keep-weekly" "4"]; - }; - "onedrive" = { - envFile = config.age.secrets.restray-onedrive.path; - retryLock = "5m"; - schedule = { - cron = "30 0 * * *"; - onBattery = true; - }; - backup = { - paths = [ - "${config.home.homeDirectory}/Desktop" - "${config.home.homeDirectory}/Documents" - "${config.home.homeDirectory}/Movies" - "${config.home.homeDirectory}/Music" - "${config.home.homeDirectory}/Pictures" - "${config.home.homeDirectory}/Library/Mobile Documents" - ]; - args = ["--skip-if-unchanged" "--one-file-system" "--exclude-caches" "--exclude-cloud-files" "--exclude" "${config.home.homeDirectory}/Music/Logic Pro Library.bundle"]; - }; - prune.args = ["--repack-smaller-than" "64M" "--keep-last" "4" "--keep-daily" "7"]; - }; - }; - }; -} diff --git a/hosts/darwin/default.nix b/hosts/darwin/default.nix deleted file mode 100644 index 2e64542..0000000 --- a/hosts/darwin/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - inputs, - topology, -}: -inputs.nixpkgs.lib.mapAttrs ( - host: extraModules: - inputs.nix-darwin.lib.darwinSystem { - system = "aarch64-darwin"; - specialArgs = {inherit inputs topology;}; - modules = - [./${host}] - ++ [ - ../../modules/common - ../../modules/darwin - ../../modules/users/devin - ../../modules/home-manager/users/devin - ] - ++ extraModules; - } -) { - d-macbook = []; - - bluellama = [ - ../../modules/darwin/services - ]; - - bluellama2 = [ - ../../modules/darwin/services - ]; -} diff --git a/hosts/default.nix b/hosts/default.nix deleted file mode 100644 index 6037fab..0000000 --- a/hosts/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{inputs}: let - topology = import ./topology.nix; -in { - darwinConfigurations = import ./darwin {inherit inputs topology;}; - nixosConfigurations = import ./nixos {inherit inputs topology;}; -} diff --git a/hosts/nixos/bluepill/default.nix b/hosts/nixos/bluepill/default.nix deleted file mode 100644 index 5c38dc1..0000000 --- a/hosts/nixos/bluepill/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - imports = [ - ./hardware.nix - ./programs - ./services - ./home-manager - ]; - - nixpkgs.config.permittedInsecurePackages = [ - "olm-3.2.16" - ]; - - networking = { - hostName = "bluepill"; - }; - - system.stateVersion = "24.11"; -} diff --git a/hosts/nixos/bluepill/home-manager/default.nix b/hosts/nixos/bluepill/home-manager/default.nix deleted file mode 100644 index f48a9cf..0000000 --- a/hosts/nixos/bluepill/home-manager/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - home-manager.users.devin.imports = [./devin]; -} diff --git a/hosts/nixos/bluepill/home-manager/devin/beets.nix b/hosts/nixos/bluepill/home-manager/devin/beets.nix deleted file mode 100644 index 3dac798..0000000 --- a/hosts/nixos/bluepill/home-manager/devin/beets.nix +++ /dev/null @@ -1,66 +0,0 @@ -{pkgs, ...}: let - ffmpeg-fdkaac = pkgs.ffmpeg.override { - withFdkAac = true; - withUnfree = true; - }; - musicDir = "/srv/media/music"; -in { - home.packages = with pkgs; [ - ffmpeg-fdkaac - imagemagick - ]; - - programs.beets = { - enable = true; - settings = { - directory = musicDir; - library = "${musicDir}/musiclibrary.db"; - - plugins = "chroma musicbrainz lastgenre duplicates scrub fetchart embedart lyrics convert replaygain info mbsync"; - - lastgenre.count = 10; - - lyrics = { - synced = true; - sources = "lrclib"; - }; - - convert = { - auto = true; - dest = musicDir; - never_convert_lossy_files = true; - format = "aac"; - formats = { - aac = { - command = "${ffmpeg-fdkaac}/bin/ffmpeg -i $source -y -vn -c:a libfdk_aac -vbr 5 -ar 44100 $dest"; - extension = "m4a"; - }; - flac = { - command = "${ffmpeg-fdkaac}/bin/ffmpeg -i $source -ar 44100 -sample_fmt s16 -y $dest"; - extension = "flac"; - }; - }; - }; - - fetchart = { - cover_format = "JPEG"; - enforce_ratio = true; - }; - embedart = { - auto = false; - maxwidth = 600; - quality = 90; - }; - - replaygain.backend = "ffmpeg"; - - import = { - from_scratch = true; - languages = "en"; - }; - - asciify_paths = true; - original_date = true; - }; - }; -} diff --git a/hosts/nixos/bluepill/home-manager/devin/default.nix b/hosts/nixos/bluepill/home-manager/devin/default.nix deleted file mode 100644 index 398a8c3..0000000 --- a/hosts/nixos/bluepill/home-manager/devin/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [./beets.nix]; -} diff --git a/hosts/nixos/bluepill/programs/default.nix b/hosts/nixos/bluepill/programs/default.nix deleted file mode 100644 index 8bdbbc5..0000000 --- a/hosts/nixos/bluepill/programs/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./msmtp.nix - ./restray.nix - ]; -} diff --git a/hosts/nixos/bluepill/programs/msmtp.nix b/hosts/nixos/bluepill/programs/msmtp.nix deleted file mode 100644 index 59ae281..0000000 --- a/hosts/nixos/bluepill/programs/msmtp.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - inputs, - ... -}: { - users.groups.msmtp.members = ["tranquil-pds"]; - - age.secrets.msmtp = { - file = inputs.self + "/secrets/msmtp.age"; - group = "msmtp"; - mode = "640"; - }; - - programs.msmtp = { - enable = true; - accounts.default = { - port = 587; - auth = "plain"; - tls = true; - tls_starttls = true; - host = "mail.smtp2go.com"; - from = "noreply@devins.page"; - user = "noreply-devinspage"; - passwordeval = "cat ${config.age.secrets.msmtp.path}"; - }; - }; -} diff --git a/hosts/nixos/bluepill/programs/restray.nix b/hosts/nixos/bluepill/programs/restray.nix deleted file mode 100644 index c5b446c..0000000 --- a/hosts/nixos/bluepill/programs/restray.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - inputs, - pkgs, - ... -}: { - environment.systemPackages = with pkgs; [ - inputs.restray.packages.${pkgs.stdenv.hostPlatform.system}.default - restic - ]; -} diff --git a/hosts/nixos/d-latitude/default.nix b/hosts/nixos/d-latitude/default.nix deleted file mode 100644 index 28f1951..0000000 --- a/hosts/nixos/d-latitude/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - imports = [ - ./hardware.nix - ./programs - ./services - ./home-manager - ]; - - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.plymouth.enable = true; - - networking = { - hostName = "d-latitude"; - networkmanager.enable = true; - }; - - powerManagement.enable = true; - powerManagement.powertop.enable = true; - - system.stateVersion = "26.11"; -} diff --git a/hosts/nixos/d-latitude/home-manager/default.nix b/hosts/nixos/d-latitude/home-manager/default.nix deleted file mode 100644 index baa69d2..0000000 --- a/hosts/nixos/d-latitude/home-manager/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{inputs, ...}: { - home-manager.users.devin.imports = [ - (inputs.self + "/modules/home-manager/users/devin/desktop") - ]; -} diff --git a/hosts/nixos/d-latitude/services/default.nix b/hosts/nixos/d-latitude/services/default.nix deleted file mode 100644 index 97e6eb7..0000000 --- a/hosts/nixos/d-latitude/services/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - services.power-profiles-daemon.enable = false; - services.auto-cpufreq.enable = true; - - services.displayManager.sddm.enable = true; - services.displayManager.sddm.wayland.enable = true; - services.displayManager.sddm.wayland.compositor = "kwin"; - services.desktopManager.plasma6.enable = true; - services.displayManager.defaultSession = "aerothemeplasma"; -} diff --git a/hosts/nixos/default.nix b/hosts/nixos/default.nix deleted file mode 100644 index 1dc4aa1..0000000 --- a/hosts/nixos/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - inputs, - topology, -}: -inputs.nixpkgs.lib.mapAttrs ( - host: extraModules: - inputs.nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs topology;}; - modules = - [./${host}] - ++ [ - ../../modules/common - ../../modules/nixos - ../../modules/users/devin - ../../modules/home-manager/users/devin - ] - ++ extraModules; - } -) { - bluepill = [ - ../../modules/nixos/profiles/server.nix - inputs.quadlet-nix.nixosModules.quadlet - inputs.tangled.nixosModules.knot - inputs.tangled.nixosModules.spindle - inputs.restray.nixosModules.default - ]; - - bluepill-proxy = [ - ../../modules/nixos/profiles/server.nix - ]; - - d-latitude = [ - inputs.aerothemeplasma-nix.nixosModules.aerothemeplasma-nix - ]; -} diff --git a/hosts/topology.nix b/hosts/topology.nix index 9b3e692..cb021a7 100644 --- a/hosts/topology.nix +++ b/hosts/topology.nix @@ -9,8 +9,7 @@ knot = 5555; spindle = 6555; navidrome = 4533; - feishin = 9180; - jellyfin = 8096; + jellyfin = 8096; # proxy only! nixos module doesn't provide a way to change port matrix = 6167; mautrixDiscord = 29334; diff --git a/modules/common/default.nix b/modules/common/default.nix index a8d7f5c..124fbe0 100644 --- a/modules/common/default.nix +++ b/modules/common/default.nix @@ -1,5 +1,6 @@ { inputs, + lib, pkgs, ... }: { @@ -39,4 +40,24 @@ zsh fish ]; + + nix.settings.trusted-users = ["devin"]; + + system = lib.optionalAttrs pkgs.stdenv.hostPlatform.isDarwin { + primaryUser = "devin"; + }; + + users.users.devin = + { + home = + if pkgs.stdenv.hostPlatform.isDarwin + then "/Users/devin" + else "/home/devin"; + shell = pkgs.zsh; + openssh.authorizedKeys.keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILyOJLlmq653uVs/1KdVnaMzi+EolB7EJMJ7AdBxVi6m devin@devins.page"]; + } + // lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { + isNormalUser = true; + extraGroups = ["networkmanager" "wheel"]; + }; } diff --git a/modules/darwin/services/default.nix b/modules/darwin/services/default.nix deleted file mode 100644 index b16c76b..0000000 --- a/modules/darwin/services/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [./tailscaled.nix]; -} diff --git a/modules/darwin/services/tailscaled.nix b/modules/darwin/services/tailscaled.nix deleted file mode 100644 index 5e999b5..0000000 --- a/modules/darwin/services/tailscaled.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - services.tailscale = { - enable = true; - overrideLocalDns = true; - }; -} diff --git a/modules/home-manager/users/devin/desktop/default.nix b/modules/home-manager/users/devin/desktop/default.nix deleted file mode 100644 index 997638c..0000000 --- a/modules/home-manager/users/devin/desktop/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{config, ...}: { - age.identityPaths = ["${config.home.homeDirectory}/.config/age/keys.txt"]; - imports = [./mail.nix]; -} diff --git a/modules/home-manager/users/devin/programs/fastfetch.nix b/modules/home-manager/users/devin/programs/fastfetch.nix deleted file mode 100644 index cdf5edf..0000000 --- a/modules/home-manager/users/devin/programs/fastfetch.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - programs.fastfetch = { - enable = true; - #settings = { - # logo = { - # type = "small"; - # }; - # modules = [ - # "title" - # "uptime" - # "host" - # "os" - # "localip" - # "disk" - # ]; - #}; - }; -} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index a9180a1..0c8fc0e 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -1,11 +1,54 @@ -{inputs, ...}: { +{ + config, + inputs, + lib, + pkgs, + ... +}: { imports = [ inputs.agenix.nixosModules.default inputs.home-manager.nixosModules.default - ./programs - ./services ]; home-manager.useUserPackages = true; zramSwap.enable = true; + + programs.mosh.enable = true; + + services.fwupd.enable = true; + + fonts.packages = [pkgs.maple-mono.NF]; + services.kmscon = { + enable = true; + config.font-name = "Maple Mono NF"; + }; + + services.openssh.settings = { + PasswordAuthentication = false; + KbdInteractiveAuthentication = false; + PermitRootLogin = "no"; + }; + + services.tailscale = { + enable = true; + useRoutingFeatures = "both"; + openFirewall = true; + }; + + boot.kernel.sysctl = { + "net.ipv4.ip_forward" = 1; + "net.ipv6.conf.all.forwarding" = 1; + }; + + services.networkd-dispatcher = lib.mkIf (config.networking.useNetworkd || config.systemd.network.enable) { + enable = true; + rules."50-tailscale-optimizations" = { + onState = ["routable"]; + script = '' + ${pkgs.ethtool}/bin/ethtool -K "$IFACE" \ + rx-udp-gro-forwarding on \ + rx-gro-list off + ''; + }; + }; } diff --git a/modules/nixos/programs/default.nix b/modules/nixos/programs/default.nix deleted file mode 100644 index cd07361..0000000 --- a/modules/nixos/programs/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [./mosh.nix]; -} diff --git a/modules/nixos/programs/mosh.nix b/modules/nixos/programs/mosh.nix deleted file mode 100644 index 1c2e34e..0000000 --- a/modules/nixos/programs/mosh.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - programs.mosh.enable = true; -} diff --git a/modules/nixos/profiles/server.nix b/modules/nixos/server.nix similarity index 100% rename from modules/nixos/profiles/server.nix rename to modules/nixos/server.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix deleted file mode 100644 index 3cc270e..0000000 --- a/modules/nixos/services/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - imports = [ - ./fwupd.nix - ./kmscon.nix - ./openssh-hardening.nix - ./tailscaled.nix - ]; -} diff --git a/modules/nixos/services/fwupd.nix b/modules/nixos/services/fwupd.nix deleted file mode 100644 index a62f709..0000000 --- a/modules/nixos/services/fwupd.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - services.fwupd.enable = true; -} diff --git a/modules/nixos/services/kmscon.nix b/modules/nixos/services/kmscon.nix deleted file mode 100644 index 6036afd..0000000 --- a/modules/nixos/services/kmscon.nix +++ /dev/null @@ -1,8 +0,0 @@ -{pkgs, ...}: { - fonts.packages = [pkgs.maple-mono.NF]; - - services.kmscon = { - enable = true; - config.font-name = "Maple Mono NF"; - }; -} diff --git a/modules/nixos/services/openssh-hardening.nix b/modules/nixos/services/openssh-hardening.nix deleted file mode 100644 index d2af705..0000000 --- a/modules/nixos/services/openssh-hardening.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - services.openssh = { - settings = { - PasswordAuthentication = false; - KbdInteractiveAuthentication = false; - PermitRootLogin = "no"; - }; - }; -} diff --git a/modules/nixos/services/tailscaled.nix b/modules/nixos/services/tailscaled.nix deleted file mode 100644 index 9ee698a..0000000 --- a/modules/nixos/services/tailscaled.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: { - services.tailscale = { - enable = true; - useRoutingFeatures = "both"; - openFirewall = true; - }; - - boot.kernel.sysctl = { - "net.ipv4.ip_forward" = 1; - "net.ipv6.conf.all.forwarding" = 1; - }; - - services.networkd-dispatcher = lib.mkIf (config.networking.useNetworkd || config.systemd.network.enable) { - enable = true; - rules."50-tailscale-optimizations" = { - onState = ["routable"]; - script = '' - ${pkgs.ethtool}/bin/ethtool -K "$IFACE" \ - rx-udp-gro-forwarding on \ - rx-gro-list off - ''; - }; - }; -} diff --git a/hosts/nixos/bluepill/services/viaproxy.nix b/modules/nixos/viaproxy.nix similarity index 100% rename from hosts/nixos/bluepill/services/viaproxy.nix rename to modules/nixos/viaproxy.nix diff --git a/modules/users/devin/default.nix b/modules/users/devin/default.nix deleted file mode 100644 index e6547d6..0000000 --- a/modules/users/devin/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - lib, - pkgs, - ... -}: { - nix.settings.trusted-users = ["devin"]; - - system = lib.optionalAttrs pkgs.stdenv.hostPlatform.isDarwin { - primaryUser = "devin"; - }; - - users.users.devin = - { - home = - if pkgs.stdenv.hostPlatform.isDarwin - then "/Users/devin" - else "/home/devin"; - shell = pkgs.zsh; - openssh.authorizedKeys.keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILyOJLlmq653uVs/1KdVnaMzi+EolB7EJMJ7AdBxVi6m devin@devins.page"]; - } - // lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { - isNormalUser = true; - extraGroups = ["networkmanager" "wheel"]; - }; -}