configurations for my servers and desktops
nix nixos flake dots dotfiles

chore: remove alejandra config

+749 -756
-1
alejandra.toml
··· 1 - indentation = "Tabs"
···
+59 -62
flake.nix
··· 1 { 2 - inputs = { 3 - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 4 - nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11"; 5 - home-manager = { 6 - url = "github:nix-community/home-manager"; 7 - inputs.nixpkgs.follows = "nixpkgs"; 8 - }; 9 - home-manager-stable = { 10 - url = "github:nix-community/home-manager/release-25.11"; 11 - inputs.nixpkgs.follows = "nixpkgs-stable"; 12 - }; 13 - nix-darwin = { 14 - url = "github:nix-darwin/nix-darwin"; 15 - inputs.nixpkgs.follows = "nixpkgs"; 16 - }; 17 - mac-app-util.url = "github:hraban/mac-app-util"; 18 - agenix.url = "github:ryantm/agenix"; 19 - }; 20 21 - outputs = { 22 - nixpkgs, 23 - nixpkgs-stable, 24 - nix-darwin, 25 - home-manager, 26 - home-manager-stable, 27 - mac-app-util, 28 - agenix, 29 - ... 30 - }: { 31 - darwinConfigurations.neo = 32 - nix-darwin.lib.darwinSystem { 33 - modules = [ 34 - ./modules/common 35 - ./modules/darwin 36 - ./hosts/neo 37 - home-manager.darwinModules.home-manager 38 - mac-app-util.darwinModules.default 39 - {home-manager.sharedModules = [mac-app-util.homeManagerModules.default];} 40 - ]; 41 - }; 42 43 - nixosConfigurations = { 44 - trinity = 45 - nixpkgs.lib.nixosSystem { 46 - modules = [ 47 - ./modules/common 48 - ./modules/nixos 49 - ./hosts/trinity 50 - home-manager.nixosModules.home-manager 51 - ]; 52 - }; 53 54 - bluepill = 55 - nixpkgs.lib.nixosSystem { 56 - modules = [ 57 - ./modules/common 58 - ./modules/nixos 59 - ./hosts/bluepill 60 - agenix.nixosModules.default 61 - home-manager.nixosModules.home-manager 62 - ]; 63 - }; 64 - }; 65 66 - formatter = nixpkgs.lib.genAttrs ["aarch64-darwin" "x86_64-linux"] (system: nixpkgs.legacyPackages.${system}.alejandra); 67 - }; 68 }
··· 1 { 2 + inputs = { 3 + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 4 + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.11"; 5 + home-manager = { 6 + url = "github:nix-community/home-manager"; 7 + inputs.nixpkgs.follows = "nixpkgs"; 8 + }; 9 + home-manager-stable = { 10 + url = "github:nix-community/home-manager/release-25.11"; 11 + inputs.nixpkgs.follows = "nixpkgs-stable"; 12 + }; 13 + nix-darwin = { 14 + url = "github:nix-darwin/nix-darwin"; 15 + inputs.nixpkgs.follows = "nixpkgs"; 16 + }; 17 + mac-app-util.url = "github:hraban/mac-app-util"; 18 + agenix.url = "github:ryantm/agenix"; 19 + }; 20 21 + outputs = { 22 + nixpkgs, 23 + nixpkgs-stable, 24 + nix-darwin, 25 + home-manager, 26 + home-manager-stable, 27 + mac-app-util, 28 + agenix, 29 + ... 30 + }: { 31 + darwinConfigurations.neo = nix-darwin.lib.darwinSystem { 32 + modules = [ 33 + ./modules/common 34 + ./modules/darwin 35 + ./hosts/neo 36 + home-manager.darwinModules.home-manager 37 + mac-app-util.darwinModules.default 38 + {home-manager.sharedModules = [mac-app-util.homeManagerModules.default];} 39 + ]; 40 + }; 41 42 + nixosConfigurations = { 43 + trinity = nixpkgs.lib.nixosSystem { 44 + modules = [ 45 + ./modules/common 46 + ./modules/nixos 47 + ./hosts/trinity 48 + home-manager.nixosModules.home-manager 49 + ]; 50 + }; 51 52 + bluepill = nixpkgs.lib.nixosSystem { 53 + modules = [ 54 + ./modules/common 55 + ./modules/nixos 56 + ./hosts/bluepill 57 + agenix.nixosModules.default 58 + home-manager.nixosModules.home-manager 59 + ]; 60 + }; 61 + }; 62 63 + formatter = nixpkgs.lib.genAttrs ["aarch64-darwin" "x86_64-linux"] (system: nixpkgs.legacyPackages.${system}.alejandra); 64 + }; 65 }
+30 -30
hosts/bluepill/default.nix
··· 1 {pkgs, ...}: { 2 - imports = [ 3 - ./hardware.nix 4 - ../../modules/nixos/services/homepage.nix 5 - ../../modules/nixos/services/jellyfin.nix 6 - ../../modules/nixos/services/mikusmp67.nix 7 - ../../modules/nixos/services/navidrome.nix 8 - ../../modules/nixos/services/newbeginnings7.nix 9 - ../../modules/nixos/services/restic.nix 10 - ../../modules/nixos/services/samba.nix 11 - ../../modules/nixos/services/slskd.nix 12 - ../../modules/nixos/services/transmission.nix 13 - ]; 14 15 - networking.hostName = "bluepill"; 16 17 - environment.systemPackages = with pkgs; [ 18 - age 19 - beets 20 - (ffmpeg.override { 21 - withFdkAac = true; 22 - withUnfree = true; 23 - }) 24 - imagemagick 25 - restic 26 - ]; 27 28 - system.autoUpgrade = { 29 - enable = true; 30 - flake = "github:intergrav/flake"; 31 - flags = ["-L"]; 32 - dates = "04:40"; 33 - }; 34 35 - age.identityPaths = ["/etc/age.key"]; 36 }
··· 1 {pkgs, ...}: { 2 + imports = [ 3 + ./hardware.nix 4 + ../../modules/nixos/services/homepage.nix 5 + ../../modules/nixos/services/jellyfin.nix 6 + ../../modules/nixos/services/mikusmp67.nix 7 + ../../modules/nixos/services/navidrome.nix 8 + ../../modules/nixos/services/newbeginnings7.nix 9 + ../../modules/nixos/services/restic.nix 10 + ../../modules/nixos/services/samba.nix 11 + ../../modules/nixos/services/slskd.nix 12 + ../../modules/nixos/services/transmission.nix 13 + ]; 14 15 + networking.hostName = "bluepill"; 16 17 + environment.systemPackages = with pkgs; [ 18 + age 19 + beets 20 + (ffmpeg.override { 21 + withFdkAac = true; 22 + withUnfree = true; 23 + }) 24 + imagemagick 25 + restic 26 + ]; 27 28 + system.autoUpgrade = { 29 + enable = true; 30 + flake = "github:intergrav/flake"; 31 + flags = ["-L"]; 32 + dates = "04:40"; 33 + }; 34 35 + age.identityPaths = ["/etc/age.key"]; 36 }
+38 -38
hosts/bluepill/hardware.nix
··· 1 { 2 - config, 3 - lib, 4 - modulesPath, 5 - ... 6 }: { 7 - imports = [(modulesPath + "/installer/scan/not-detected.nix")]; 8 9 - boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "xhci_pci_renesas" "usbhid" "sd_mod"]; 10 - boot.initrd.kernelModules = []; 11 - boot.kernelModules = []; 12 - boot.extraModulePackages = []; 13 14 - fileSystems."/" = { 15 - device = "/dev/disk/by-uuid/649b9c36-dd13-4cb7-9561-dff01fa3641b"; 16 - fsType = "ext4"; 17 - }; 18 19 - fileSystems."/boot" = { 20 - device = "/dev/disk/by-uuid/8865-CA84"; 21 - fsType = "vfat"; 22 - options = ["fmask=0077" "dmask=0077"]; 23 - }; 24 25 - fileSystems."/mnt/backup" = { 26 - device = "/dev/disk/by-uuid/ec387aee-c588-4e84-9ddc-3be935c43257"; 27 - fsType = "ext4"; 28 - options = [ 29 - "defaults" 30 - "noatime" 31 - "nofail" 32 - "noauto" 33 - "x-systemd.automount" 34 - "x-systemd.idle-timeout=600" 35 - ]; 36 - }; 37 38 - swapDevices = [ 39 - { 40 - device = "/var/lib/swapfile"; 41 - size = 32 * 1024; 42 - } 43 - ]; 44 45 - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 46 - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 47 }
··· 1 { 2 + config, 3 + lib, 4 + modulesPath, 5 + ... 6 }: { 7 + imports = [(modulesPath + "/installer/scan/not-detected.nix")]; 8 9 + boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "xhci_pci_renesas" "usbhid" "sd_mod"]; 10 + boot.initrd.kernelModules = []; 11 + boot.kernelModules = []; 12 + boot.extraModulePackages = []; 13 14 + fileSystems."/" = { 15 + device = "/dev/disk/by-uuid/649b9c36-dd13-4cb7-9561-dff01fa3641b"; 16 + fsType = "ext4"; 17 + }; 18 19 + fileSystems."/boot" = { 20 + device = "/dev/disk/by-uuid/8865-CA84"; 21 + fsType = "vfat"; 22 + options = ["fmask=0077" "dmask=0077"]; 23 + }; 24 25 + fileSystems."/mnt/backup" = { 26 + device = "/dev/disk/by-uuid/ec387aee-c588-4e84-9ddc-3be935c43257"; 27 + fsType = "ext4"; 28 + options = [ 29 + "defaults" 30 + "noatime" 31 + "nofail" 32 + "noauto" 33 + "x-systemd.automount" 34 + "x-systemd.idle-timeout=600" 35 + ]; 36 + }; 37 38 + swapDevices = [ 39 + { 40 + device = "/var/lib/swapfile"; 41 + size = 32 * 1024; 42 + } 43 + ]; 44 45 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 46 + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 47 }
+44 -44
hosts/neo/default.nix
··· 1 {pkgs, ...}: { 2 - networking.hostName = "neo"; 3 4 - homebrew = { 5 - casks = [ 6 - "affinity" 7 - "bambu-studio" 8 - "discord" 9 - "font-sf-compact" 10 - "font-sf-mono" 11 - "font-sf-pro" 12 - "ghostty" 13 - "helium-browser" 14 - "iina" 15 - "inkscape" 16 - "keka" 17 - "meshlab" 18 - "moonlight" 19 - "mpluginmanager" 20 - "musescore" 21 - "netnewswire" 22 - "obsidian" 23 - "omnidisksweeper" 24 - "onyx" 25 - "prismlauncher" 26 - "rnnoise" 27 - "roblox" 28 - "robloxstudio" 29 - "rockboxutility" 30 - "sf-symbols" 31 - "signal" 32 - "steam" 33 - "tailscale-app" 34 - "utm" 35 - "valhalla-freq-echo" 36 - "valhalla-space-modulator" 37 - "valhalla-supermassive" 38 - "visual-studio-code" 39 - ]; 40 - }; 41 42 - environment.systemPackages = with pkgs; [ 43 - xz 44 - rsync 45 - cinny-desktop 46 - qutebrowser 47 - ]; 48 }
··· 1 {pkgs, ...}: { 2 + networking.hostName = "neo"; 3 4 + homebrew = { 5 + casks = [ 6 + "affinity" 7 + "bambu-studio" 8 + "discord" 9 + "font-sf-compact" 10 + "font-sf-mono" 11 + "font-sf-pro" 12 + "ghostty" 13 + "helium-browser" 14 + "iina" 15 + "inkscape" 16 + "keka" 17 + "meshlab" 18 + "moonlight" 19 + "mpluginmanager" 20 + "musescore" 21 + "netnewswire" 22 + "obsidian" 23 + "omnidisksweeper" 24 + "onyx" 25 + "prismlauncher" 26 + "rnnoise" 27 + "roblox" 28 + "robloxstudio" 29 + "rockboxutility" 30 + "sf-symbols" 31 + "signal" 32 + "steam" 33 + "tailscale-app" 34 + "utm" 35 + "valhalla-freq-echo" 36 + "valhalla-space-modulator" 37 + "valhalla-supermassive" 38 + "visual-studio-code" 39 + ]; 40 + }; 41 42 + environment.systemPackages = with pkgs; [ 43 + xz 44 + rsync 45 + cinny-desktop 46 + qutebrowser 47 + ]; 48 }
+22 -22
hosts/trinity/default.nix
··· 1 {pkgs, ...}: { 2 - imports = [ 3 - ./hardware.nix 4 - ../../modules/nixos/services/tlp.nix 5 - ]; 6 7 - networking.hostName = "trinity"; 8 - networking.networkmanager.enable = true; 9 10 - services.displayManager.gdm.enable = true; 11 - services.desktopManager.gnome.enable = true; 12 13 - services.flatpak.enable = true; 14 15 - environment.systemPackages = with pkgs; [ 16 - gnome-software 17 - refine 18 - adw-gtk3 19 - gnomeExtensions.appindicator 20 - gnomeExtensions.blur-my-shell 21 - gnomeExtensions.paperwm 22 - gnomeExtensions.rounded-corners 23 - gnomeExtensions.rounded-window-corners-reborn 24 - gnomeExtensions.user-themes 25 26 - vscode-fhs 27 - ]; 28 29 - system.stateVersion = "25.11"; 30 }
··· 1 {pkgs, ...}: { 2 + imports = [ 3 + ./hardware.nix 4 + ../../modules/nixos/services/tlp.nix 5 + ]; 6 7 + networking.hostName = "trinity"; 8 + networking.networkmanager.enable = true; 9 10 + services.displayManager.gdm.enable = true; 11 + services.desktopManager.gnome.enable = true; 12 13 + services.flatpak.enable = true; 14 15 + environment.systemPackages = with pkgs; [ 16 + gnome-software 17 + refine 18 + adw-gtk3 19 + gnomeExtensions.appindicator 20 + gnomeExtensions.blur-my-shell 21 + gnomeExtensions.paperwm 22 + gnomeExtensions.rounded-corners 23 + gnomeExtensions.rounded-window-corners-reborn 24 + gnomeExtensions.user-themes 25 26 + vscode-fhs 27 + ]; 28 29 + system.stateVersion = "25.11"; 30 }
+21 -21
hosts/trinity/hardware.nix
··· 1 { 2 - config, 3 - lib, 4 - modulesPath, 5 - ... 6 }: { 7 - imports = [(modulesPath + "/installer/scan/not-detected.nix")]; 8 9 - boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "sd_mod" "rtsx_pci_sdmmc"]; 10 - boot.initrd.kernelModules = []; 11 - boot.kernelModules = ["kvm-amd"]; 12 - boot.extraModulePackages = []; 13 14 - fileSystems."/" = { 15 - device = "/dev/disk/by-uuid/fcff0631-a9c5-4174-9318-c17abd48ff12"; 16 - fsType = "ext4"; 17 - }; 18 19 - fileSystems."/boot" = { 20 - device = "/dev/disk/by-uuid/DE32-2615"; 21 - fsType = "vfat"; 22 - options = ["fmask=0077" "dmask=0077"]; 23 - }; 24 25 - swapDevices = []; 26 27 - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 28 - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 29 }
··· 1 { 2 + config, 3 + lib, 4 + modulesPath, 5 + ... 6 }: { 7 + imports = [(modulesPath + "/installer/scan/not-detected.nix")]; 8 9 + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "sd_mod" "rtsx_pci_sdmmc"]; 10 + boot.initrd.kernelModules = []; 11 + boot.kernelModules = ["kvm-amd"]; 12 + boot.extraModulePackages = []; 13 14 + fileSystems."/" = { 15 + device = "/dev/disk/by-uuid/fcff0631-a9c5-4174-9318-c17abd48ff12"; 16 + fsType = "ext4"; 17 + }; 18 19 + fileSystems."/boot" = { 20 + device = "/dev/disk/by-uuid/DE32-2615"; 21 + fsType = "vfat"; 22 + options = ["fmask=0077" "dmask=0077"]; 23 + }; 24 25 + swapDevices = []; 26 27 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 28 + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 29 }
+12 -12
modules/common/default.nix
··· 1 {pkgs, ...}: { 2 - imports = [../users/devin.nix]; 3 4 - nix = { 5 - gc = { 6 - automatic = true; 7 - options = "--delete-older-than 7d"; 8 - }; 9 - optimise.automatic = true; 10 - settings.experimental-features = ["flakes" "nix-command"]; 11 - }; 12 13 - nixpkgs.config.allowUnfree = true; 14 15 - programs.fish.enable = true; 16 - environment.shells = [pkgs.fish]; 17 }
··· 1 {pkgs, ...}: { 2 + imports = [../users/devin.nix]; 3 4 + nix = { 5 + gc = { 6 + automatic = true; 7 + options = "--delete-older-than 7d"; 8 + }; 9 + optimise.automatic = true; 10 + settings.experimental-features = ["flakes" "nix-command"]; 11 + }; 12 13 + nixpkgs.config.allowUnfree = true; 14 15 + programs.fish.enable = true; 16 + environment.shells = [pkgs.fish]; 17 }
+11 -11
modules/darwin/default.nix
··· 1 {lib, ...}: { 2 - system.stateVersion = 6; 3 - system.primaryUser = "devin"; 4 - nixpkgs.hostPlatform = lib.mkDefault "aarch64-darwin"; 5 6 - homebrew = { 7 - enable = true; 8 - onActivation = { 9 - autoUpdate = true; 10 - cleanup = "zap"; 11 - upgrade = true; 12 - }; 13 - }; 14 }
··· 1 {lib, ...}: { 2 + system.stateVersion = 6; 3 + system.primaryUser = "devin"; 4 + nixpkgs.hostPlatform = lib.mkDefault "aarch64-darwin"; 5 6 + homebrew = { 7 + enable = true; 8 + onActivation = { 9 + autoUpdate = true; 10 + cleanup = "zap"; 11 + upgrade = true; 12 + }; 13 + }; 14 }
+14 -14
modules/nixos/default.nix
··· 1 {lib, ...}: { 2 - imports = [ 3 - ./services/fwupd.nix 4 - ./services/ssh.nix 5 - ./services/tailscale.nix 6 - ]; 7 8 - system.stateVersion = lib.mkDefault "24.11"; 9 - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 10 11 - boot.loader = { 12 - systemd-boot.enable = lib.mkDefault true; 13 - efi.canTouchEfiVariables = lib.mkDefault true; 14 - }; 15 16 - zramSwap.enable = true; 17 - time.timeZone = lib.mkDefault "America/Nassau"; 18 - i18n.defaultLocale = lib.mkDefault "en_US.UTF-8"; 19 }
··· 1 {lib, ...}: { 2 + imports = [ 3 + ./services/fwupd.nix 4 + ./services/ssh.nix 5 + ./services/tailscale.nix 6 + ]; 7 8 + system.stateVersion = lib.mkDefault "24.11"; 9 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 10 11 + boot.loader = { 12 + systemd-boot.enable = lib.mkDefault true; 13 + efi.canTouchEfiVariables = lib.mkDefault true; 14 + }; 15 16 + zramSwap.enable = true; 17 + time.timeZone = lib.mkDefault "America/Nassau"; 18 + i18n.defaultLocale = lib.mkDefault "en_US.UTF-8"; 19 }
+1 -1
modules/nixos/services/fwupd.nix
··· 1 {...}: { 2 - services.fwupd.enable = true; 3 }
··· 1 {...}: { 2 + services.fwupd.enable = true; 3 }
+36 -36
modules/nixos/services/homepage.nix
··· 1 {...}: { 2 - services.homepage-dashboard = { 3 - enable = true; 4 - openFirewall = true; 5 - allowedHosts = "*"; 6 - widgets = [ 7 - { 8 - resources = { 9 - label = "Statistics"; 10 - cpu = true; 11 - memory = true; 12 - cputemp = true; 13 - uptime = true; 14 - units = "imperial"; 15 - network = true; 16 - }; 17 - } 18 - { 19 - resources = { 20 - label = "Internal"; 21 - disk = "/"; 22 - }; 23 - } 24 - { 25 - resources = { 26 - label = "Backups"; 27 - disk = "/mnt/backup"; 28 - }; 29 - } 30 - { 31 - search = { 32 - provider = "duckduckgo"; 33 - target = "_blank"; 34 - }; 35 - } 36 - ]; 37 - }; 38 }
··· 1 {...}: { 2 + services.homepage-dashboard = { 3 + enable = true; 4 + openFirewall = true; 5 + allowedHosts = "*"; 6 + widgets = [ 7 + { 8 + resources = { 9 + label = "Statistics"; 10 + cpu = true; 11 + memory = true; 12 + cputemp = true; 13 + uptime = true; 14 + units = "imperial"; 15 + network = true; 16 + }; 17 + } 18 + { 19 + resources = { 20 + label = "Internal"; 21 + disk = "/"; 22 + }; 23 + } 24 + { 25 + resources = { 26 + label = "Backups"; 27 + disk = "/mnt/backup"; 28 + }; 29 + } 30 + { 31 + search = { 32 + provider = "duckduckgo"; 33 + target = "_blank"; 34 + }; 35 + } 36 + ]; 37 + }; 38 }
+17 -17
modules/nixos/services/jellyfin.nix
··· 1 { 2 - config, 3 - pkgs, 4 - ... 5 }: { 6 - services.jellyfin = { 7 - enable = true; 8 - openFirewall = true; 9 - }; 10 11 - hardware.graphics.enable = true; 12 - services.xserver.videoDrivers = ["nvidia"]; 13 - hardware.nvidia = { 14 - open = false; 15 - nvidiaSettings = true; 16 - package = config.boot.kernelPackages.nvidiaPackages.stable; 17 - modesetting.enable = false; 18 - powerManagement.enable = false; 19 - powerManagement.finegrained = false; 20 - }; 21 }
··· 1 { 2 + config, 3 + pkgs, 4 + ... 5 }: { 6 + services.jellyfin = { 7 + enable = true; 8 + openFirewall = true; 9 + }; 10 11 + hardware.graphics.enable = true; 12 + services.xserver.videoDrivers = ["nvidia"]; 13 + hardware.nvidia = { 14 + open = false; 15 + nvidiaSettings = true; 16 + package = config.boot.kernelPackages.nvidiaPackages.stable; 17 + modesetting.enable = false; 18 + powerManagement.enable = false; 19 + powerManagement.finegrained = false; 20 + }; 21 }
+54 -54
modules/nixos/services/mikusmp67.nix
··· 1 {...}: { 2 - networking.firewall = { 3 - allowedTCPPorts = [23343]; 4 - allowedUDPPorts = [22232]; # for vc 5 - }; 6 7 - users.users.mikusmp = { 8 - isSystemUser = true; 9 - uid = 2001; 10 - group = "mikusmp"; 11 - }; 12 - users.groups.mikusmp.gid = 2001; 13 - users.groups.mikusmp.members = ["devin"]; 14 15 - systemd.tmpfiles.rules = ["d /srv/mikusmp67 2775 mikusmp mikusmp -"]; 16 17 - virtualisation = { 18 - docker.enable = true; 19 - oci-containers = { 20 - backend = "docker"; 21 - containers = { 22 - mikusmp67 = { 23 - image = "itzg/minecraft-server:latest"; 24 - user = "2001:2001"; 25 - ports = [ 26 - "23343:25565" 27 - "22232:22232/udp" # for vc 28 - ]; 29 - volumes = [ 30 - "/srv/mikusmp67:/data" 31 - ]; 32 - environment = { 33 - UID = "2001"; 34 - GID = "2001"; 35 - EULA = "TRUE"; 36 - TYPE = "FABRIC"; 37 - VERSION = "1.20.1"; 38 - MEMORY = "12G"; 39 - DIFFICULTY = "hard"; 40 - MOTD = ""; 41 - ENABLE_COMMAND_BLOCK = "true"; 42 - VIEW_DISTANCE = "10"; 43 - SIMULATION_DISTANCE = "5"; 44 - SEED = "61"; 45 - SYNC_CHUNK_WRITES = "false"; 46 - USE_MEOWICE_FLAGS = "true"; 47 - ALLOW_FLIGHT = "true"; 48 - ENFORCE_SECURE_PROFILE = "false"; 49 - SPAWN_PROTECTION = "0"; 50 - PACKWIZ_URL = "https://intergrav.github.io/private-modpacks/mikusmp67/pack.toml"; 51 - ENABLE_AUTOPAUSE = "true"; 52 - MAX_TICK_TIME = "-1"; 53 - }; 54 - autoStart = true; 55 - }; 56 - }; 57 - }; 58 - }; 59 }
··· 1 {...}: { 2 + networking.firewall = { 3 + allowedTCPPorts = [23343]; 4 + allowedUDPPorts = [22232]; # for vc 5 + }; 6 7 + users.users.mikusmp = { 8 + isSystemUser = true; 9 + uid = 2001; 10 + group = "mikusmp"; 11 + }; 12 + users.groups.mikusmp.gid = 2001; 13 + users.groups.mikusmp.members = ["devin"]; 14 15 + systemd.tmpfiles.rules = ["d /srv/mikusmp67 2775 mikusmp mikusmp -"]; 16 17 + virtualisation = { 18 + docker.enable = true; 19 + oci-containers = { 20 + backend = "docker"; 21 + containers = { 22 + mikusmp67 = { 23 + image = "itzg/minecraft-server:latest"; 24 + user = "2001:2001"; 25 + ports = [ 26 + "23343:25565" 27 + "22232:22232/udp" # for vc 28 + ]; 29 + volumes = [ 30 + "/srv/mikusmp67:/data" 31 + ]; 32 + environment = { 33 + UID = "2001"; 34 + GID = "2001"; 35 + EULA = "TRUE"; 36 + TYPE = "FABRIC"; 37 + VERSION = "1.20.1"; 38 + MEMORY = "12G"; 39 + DIFFICULTY = "hard"; 40 + MOTD = ""; 41 + ENABLE_COMMAND_BLOCK = "true"; 42 + VIEW_DISTANCE = "10"; 43 + SIMULATION_DISTANCE = "5"; 44 + SEED = "61"; 45 + SYNC_CHUNK_WRITES = "false"; 46 + USE_MEOWICE_FLAGS = "true"; 47 + ALLOW_FLIGHT = "true"; 48 + ENFORCE_SECURE_PROFILE = "false"; 49 + SPAWN_PROTECTION = "0"; 50 + PACKWIZ_URL = "https://intergrav.github.io/private-modpacks/mikusmp67/pack.toml"; 51 + ENABLE_AUTOPAUSE = "true"; 52 + MAX_TICK_TIME = "-1"; 53 + }; 54 + autoStart = true; 55 + }; 56 + }; 57 + }; 58 + }; 59 }
+16 -16
modules/nixos/services/navidrome.nix
··· 1 {...}: { 2 - age.secrets.navidrome = { 3 - file = ../../../secrets/navidrome.age; 4 - owner = "navidrome"; 5 - group = "navidrome"; 6 - path = "/etc/secrets/navidrome"; 7 - }; 8 9 - services.navidrome = { 10 - enable = true; 11 - openFirewall = true; 12 - environmentFile = "/etc/secrets/navidrome"; 13 - settings = { 14 - MusicFolder = "/srv/media/music"; 15 - Address = "0.0.0.0"; 16 - CoverArtPriority = "cover.*, folder.*, front.*, embedded"; 17 - }; 18 - }; 19 }
··· 1 {...}: { 2 + age.secrets.navidrome = { 3 + file = ../../../secrets/navidrome.age; 4 + owner = "navidrome"; 5 + group = "navidrome"; 6 + path = "/etc/secrets/navidrome"; 7 + }; 8 9 + services.navidrome = { 10 + enable = true; 11 + openFirewall = true; 12 + environmentFile = "/etc/secrets/navidrome"; 13 + settings = { 14 + MusicFolder = "/srv/media/music"; 15 + Address = "0.0.0.0"; 16 + CoverArtPriority = "cover.*, folder.*, front.*, embedded"; 17 + }; 18 + }; 19 }
+56 -56
modules/nixos/services/newbeginnings7.nix
··· 1 {...}: { 2 - networking.firewall = { 3 - allowedTCPPorts = [25565]; 4 - allowedUDPPorts = [ 5 - 24454 # for vc 6 - 19132 # for geyser 7 - ]; 8 - }; 9 10 - users.users.newbeginnings = { 11 - isSystemUser = true; 12 - uid = 2002; 13 - group = "newbeginnings"; 14 - }; 15 - users.groups.newbeginnings.gid = 2002; 16 - users.groups.newbeginnings.members = ["devin"]; 17 18 - systemd.tmpfiles.rules = ["d /srv/newbeginnings7 2775 newbeginnings newbeginnings -"]; 19 20 - virtualisation = { 21 - docker.enable = true; 22 - oci-containers = { 23 - backend = "docker"; 24 - containers = { 25 - newbeginnings7 = { 26 - image = "itzg/minecraft-server:latest"; 27 - user = "2002:2002"; 28 - ports = [ 29 - "25565:25565" 30 - "24454:24454/udp" # for vc 31 - "19132:19132/udp" # for geyser 32 - ]; 33 - volumes = [ 34 - "/srv/newbeginnings7:/data" 35 - ]; 36 - environment = { 37 - UID = "2002"; 38 - GID = "2002"; 39 - EULA = "TRUE"; 40 - TYPE = "FABRIC"; 41 - VERSION = "1.21.10"; 42 - MEMORY = "12G"; 43 - DIFFICULTY = "hard"; 44 - MOTD = ""; 45 - ENABLE_COMMAND_BLOCK = "true"; 46 - VIEW_DISTANCE = "10"; 47 - SIMULATION_DISTANCE = "5"; 48 - SEED = "-8024242352340898148"; 49 - SYNC_CHUNK_WRITES = "false"; 50 - USE_MEOWICE_FLAGS = "true"; 51 - ALLOW_FLIGHT = "true"; 52 - ENFORCE_SECURE_PROFILE = "false"; 53 - SPAWN_PROTECTION = "0"; 54 - PACKWIZ_URL = "https://intergrav.github.io/private-modpacks/newbeginnings7/pack.toml"; 55 - }; 56 - autoStart = true; 57 - }; 58 - }; 59 - }; 60 - }; 61 }
··· 1 {...}: { 2 + networking.firewall = { 3 + allowedTCPPorts = [25565]; 4 + allowedUDPPorts = [ 5 + 24454 # for vc 6 + 19132 # for geyser 7 + ]; 8 + }; 9 10 + users.users.newbeginnings = { 11 + isSystemUser = true; 12 + uid = 2002; 13 + group = "newbeginnings"; 14 + }; 15 + users.groups.newbeginnings.gid = 2002; 16 + users.groups.newbeginnings.members = ["devin"]; 17 18 + systemd.tmpfiles.rules = ["d /srv/newbeginnings7 2775 newbeginnings newbeginnings -"]; 19 20 + virtualisation = { 21 + docker.enable = true; 22 + oci-containers = { 23 + backend = "docker"; 24 + containers = { 25 + newbeginnings7 = { 26 + image = "itzg/minecraft-server:latest"; 27 + user = "2002:2002"; 28 + ports = [ 29 + "25565:25565" 30 + "24454:24454/udp" # for vc 31 + "19132:19132/udp" # for geyser 32 + ]; 33 + volumes = [ 34 + "/srv/newbeginnings7:/data" 35 + ]; 36 + environment = { 37 + UID = "2002"; 38 + GID = "2002"; 39 + EULA = "TRUE"; 40 + TYPE = "FABRIC"; 41 + VERSION = "1.21.10"; 42 + MEMORY = "12G"; 43 + DIFFICULTY = "hard"; 44 + MOTD = ""; 45 + ENABLE_COMMAND_BLOCK = "true"; 46 + VIEW_DISTANCE = "10"; 47 + SIMULATION_DISTANCE = "5"; 48 + SEED = "-8024242352340898148"; 49 + SYNC_CHUNK_WRITES = "false"; 50 + USE_MEOWICE_FLAGS = "true"; 51 + ALLOW_FLIGHT = "true"; 52 + ENFORCE_SECURE_PROFILE = "false"; 53 + SPAWN_PROTECTION = "0"; 54 + PACKWIZ_URL = "https://intergrav.github.io/private-modpacks/newbeginnings7/pack.toml"; 55 + }; 56 + autoStart = true; 57 + }; 58 + }; 59 + }; 60 + }; 61 }
+23 -23
modules/nixos/services/ollama.nix
··· 1 {pkgs, ...}: { 2 - services.ollama = { 3 - enable = true; 4 - loadModels = ["deepseek-r1:latest" "deepseek-v2:latest" "qwen3-coder:latest" "qwen3-vl:latest" "qwen3:latest" "gemma3:latest" "nemotron-3-nano:latest" "functiongemma:latest" "olmo-3:latest" "gtp-oss:latest" "llama3:latest" "devstral-small-2:latest" "mistral:latest" "mistral-nemo:latest"]; 5 - syncModels = true; 6 - openFirewall = true; 7 - }; 8 9 - virtualisation = { 10 - docker.enable = true; 11 - oci-containers = { 12 - backend = "docker"; 13 - containers.open-webui = { 14 - image = "ghcr.io/open-webui/open-webui:main"; 15 - extraOptions = ["--network=host"]; 16 - environment = { 17 - OLLAMA_BASE_URL = "http://127.0.0.1:11434"; 18 - }; 19 - volumes = [ 20 - "/var/lib/open-webui:/app/backend/data" 21 - ]; 22 - autoStart = true; 23 - }; 24 - }; 25 - }; 26 }
··· 1 {pkgs, ...}: { 2 + services.ollama = { 3 + enable = true; 4 + loadModels = ["deepseek-r1:latest" "deepseek-v2:latest" "qwen3-coder:latest" "qwen3-vl:latest" "qwen3:latest" "gemma3:latest" "nemotron-3-nano:latest" "functiongemma:latest" "olmo-3:latest" "gtp-oss:latest" "llama3:latest" "devstral-small-2:latest" "mistral:latest" "mistral-nemo:latest"]; 5 + syncModels = true; 6 + openFirewall = true; 7 + }; 8 9 + virtualisation = { 10 + docker.enable = true; 11 + oci-containers = { 12 + backend = "docker"; 13 + containers.open-webui = { 14 + image = "ghcr.io/open-webui/open-webui:main"; 15 + extraOptions = ["--network=host"]; 16 + environment = { 17 + OLLAMA_BASE_URL = "http://127.0.0.1:11434"; 18 + }; 19 + volumes = [ 20 + "/var/lib/open-webui:/app/backend/data" 21 + ]; 22 + autoStart = true; 23 + }; 24 + }; 25 + }; 26 }
+36 -36
modules/nixos/services/restic.nix
··· 1 {...}: { 2 - age.secrets.restic = { 3 - file = ../../../secrets/restic.age; 4 - owner = "root"; 5 - group = "root"; 6 - path = "/etc/secrets/restic"; 7 - }; 8 9 - services.restic = { 10 - server = { 11 - enable = true; 12 - dataDir = "/mnt/backup/restic"; 13 - extraFlags = ["--no-auth"]; 14 - }; 15 - backups = { 16 - "bluepill" = { 17 - repository = "/mnt/backup/restic/bluepill"; 18 - passwordFile = "/etc/secrets/restic"; 19 - initialize = true; 20 - timerConfig = { 21 - OnCalendar = "hourly"; 22 - Persistent = true; 23 - }; 24 - paths = [ 25 - "/etc/secrets" 26 - "/etc/age.key" 27 - "/home" 28 - "/srv" 29 - "/var/lib" 30 - ]; 31 - exclude = [ 32 - "/var/lib/transmission" 33 - ]; 34 - extraBackupArgs = ["--skip-if-unchanged" "--no-scan" "--one-file-system" "--exclude-caches" "--tag scheduled"]; 35 - pruneOpts = ["--keep-hourly 24" "--keep-daily 14" "--keep-weekly 4" "--keep-monthly 6" "--keep-yearly 2"]; 36 - }; 37 - }; 38 - }; 39 }
··· 1 {...}: { 2 + age.secrets.restic = { 3 + file = ../../../secrets/restic.age; 4 + owner = "root"; 5 + group = "root"; 6 + path = "/etc/secrets/restic"; 7 + }; 8 9 + services.restic = { 10 + server = { 11 + enable = true; 12 + dataDir = "/mnt/backup/restic"; 13 + extraFlags = ["--no-auth"]; 14 + }; 15 + backups = { 16 + "bluepill" = { 17 + repository = "/mnt/backup/restic/bluepill"; 18 + passwordFile = "/etc/secrets/restic"; 19 + initialize = true; 20 + timerConfig = { 21 + OnCalendar = "hourly"; 22 + Persistent = true; 23 + }; 24 + paths = [ 25 + "/etc/secrets" 26 + "/etc/age.key" 27 + "/home" 28 + "/srv" 29 + "/var/lib" 30 + ]; 31 + exclude = [ 32 + "/var/lib/transmission" 33 + ]; 34 + extraBackupArgs = ["--skip-if-unchanged" "--no-scan" "--one-file-system" "--exclude-caches" "--tag scheduled"]; 35 + pruneOpts = ["--keep-hourly 24" "--keep-daily 14" "--keep-weekly 4" "--keep-monthly 6" "--keep-yearly 2"]; 36 + }; 37 + }; 38 + }; 39 }
+61 -61
modules/nixos/services/samba.nix
··· 1 {pkgs, ...}: { 2 - users.groups.share-general.members = ["transmission" "devin"]; 3 - users.groups.share-media.members = ["jellyfin" "navidrome" "slskd" "transmission" "devin"]; 4 5 - systemd.tmpfiles.rules = [ 6 - "d /srv/general 2775 root share-general -" 7 - "d /srv/media 2775 root share-media -" 8 - ]; 9 10 - services.avahi = { 11 - enable = true; 12 - nssmdns4 = true; 13 - publish = { 14 - enable = true; 15 - userServices = true; 16 - }; 17 - }; 18 19 - services.samba-wsdd = { 20 - enable = true; 21 - openFirewall = true; 22 - }; 23 24 - services.samba = { 25 - enable = true; 26 - openFirewall = true; 27 - settings = { 28 - global = { 29 - # https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X 30 - "vfs objects" = "catia fruit streams_xattr"; # added catia 31 - "fruit:metadata" = "stream"; 32 - "fruit:veto_appledouble" = "no"; 33 - "fruit:nfs_aces" = "no"; 34 - "fruit:wipe_intentionally_left_blank_rfork" = "yes"; 35 - "fruit:delete_empty_adfiles" = "yes"; 36 - "fruit:posix_rename" = "yes"; 37 - }; 38 - "timemachine" = { 39 - "fruit:time machine" = "yes"; 40 - "fruit:time machine max size" = "2T"; 41 - "path" = "/mnt/backup/timemachine"; 42 - "comment" = "os x time machine backups"; 43 - "writeable" = "yes"; 44 - }; 45 - "transmission" = { 46 - "path" = "/var/lib/transmission"; 47 - "comment" = "transmission daemon directory"; 48 - "writeable" = "yes"; 49 - }; 50 - "slskd" = { 51 - "path" = "/var/lib/slskd"; 52 - "comment" = "soulseek daemon directory"; 53 - "writeable" = "yes"; 54 - }; 55 - "general" = { 56 - "path" = "/srv/general"; 57 - "comment" = "general miscellaneous stuff, like docs and downloads and other archival things"; 58 - "writeable" = "yes"; 59 - }; 60 - "media" = { 61 - "path" = "/srv/media"; 62 - "comment" = "devin's music, tv (mostly anime), movies, and more"; 63 - "writeable" = "yes"; 64 - }; 65 - }; 66 - }; 67 }
··· 1 {pkgs, ...}: { 2 + users.groups.share-general.members = ["transmission" "devin"]; 3 + users.groups.share-media.members = ["jellyfin" "navidrome" "slskd" "transmission" "devin"]; 4 5 + systemd.tmpfiles.rules = [ 6 + "d /srv/general 2775 root share-general -" 7 + "d /srv/media 2775 root share-media -" 8 + ]; 9 10 + services.avahi = { 11 + enable = true; 12 + nssmdns4 = true; 13 + publish = { 14 + enable = true; 15 + userServices = true; 16 + }; 17 + }; 18 19 + services.samba-wsdd = { 20 + enable = true; 21 + openFirewall = true; 22 + }; 23 24 + services.samba = { 25 + enable = true; 26 + openFirewall = true; 27 + settings = { 28 + global = { 29 + # https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X 30 + "vfs objects" = "catia fruit streams_xattr"; # added catia 31 + "fruit:metadata" = "stream"; 32 + "fruit:veto_appledouble" = "no"; 33 + "fruit:nfs_aces" = "no"; 34 + "fruit:wipe_intentionally_left_blank_rfork" = "yes"; 35 + "fruit:delete_empty_adfiles" = "yes"; 36 + "fruit:posix_rename" = "yes"; 37 + }; 38 + "timemachine" = { 39 + "fruit:time machine" = "yes"; 40 + "fruit:time machine max size" = "2T"; 41 + "path" = "/mnt/backup/timemachine"; 42 + "comment" = "os x time machine backups"; 43 + "writeable" = "yes"; 44 + }; 45 + "transmission" = { 46 + "path" = "/var/lib/transmission"; 47 + "comment" = "transmission daemon directory"; 48 + "writeable" = "yes"; 49 + }; 50 + "slskd" = { 51 + "path" = "/var/lib/slskd"; 52 + "comment" = "soulseek daemon directory"; 53 + "writeable" = "yes"; 54 + }; 55 + "general" = { 56 + "path" = "/srv/general"; 57 + "comment" = "general miscellaneous stuff, like docs and downloads and other archival things"; 58 + "writeable" = "yes"; 59 + }; 60 + "media" = { 61 + "path" = "/srv/media"; 62 + "comment" = "devin's music, tv (mostly anime), movies, and more"; 63 + "writeable" = "yes"; 64 + }; 65 + }; 66 + }; 67 }
+21 -21
modules/nixos/services/slskd.nix
··· 1 {...}: { 2 - networking.firewall.allowedTCPPorts = [5030]; 3 4 - age.secrets.slskd = { 5 - file = ../../../secrets/slskd.age; 6 - owner = "slskd"; 7 - group = "slskd"; 8 - path = "/etc/secrets/slskd"; 9 - }; 10 11 - services.slskd = { 12 - enable = true; 13 - openFirewall = true; 14 - domain = null; 15 - environmentFile = "/etc/secrets/slskd"; 16 - settings = { 17 - shares.directories = ["/srv/media/music"]; 18 - soulseek.description = "\n- running on NixOS and slskd\n- all files are compressed from FLAC/WAV to AAC with `fdk-aac -vbr 5` (essentially the best and most transparent AAC you can possibly get)\n- tagged and organized with beets\n\nthey/he | feel free to say hi, i don't check my messages super often though. enjoy the shares, and remember to try and support artists if you can :)"; 19 - }; 20 - }; 21 22 - systemd.tmpfiles.rules = [ 23 - "Z /var/lib/slskd 0775 slskd slskd -" 24 - ]; 25 26 - users.groups.slskd.members = ["devin"]; 27 }
··· 1 {...}: { 2 + networking.firewall.allowedTCPPorts = [5030]; 3 4 + age.secrets.slskd = { 5 + file = ../../../secrets/slskd.age; 6 + owner = "slskd"; 7 + group = "slskd"; 8 + path = "/etc/secrets/slskd"; 9 + }; 10 11 + services.slskd = { 12 + enable = true; 13 + openFirewall = true; 14 + domain = null; 15 + environmentFile = "/etc/secrets/slskd"; 16 + settings = { 17 + shares.directories = ["/srv/media/music"]; 18 + soulseek.description = "\n- running on NixOS and slskd\n- all files are compressed from FLAC/WAV to AAC with `fdk-aac -vbr 5` (essentially the best and most transparent AAC you can possibly get)\n- tagged and organized with beets\n\nthey/he | feel free to say hi, i don't check my messages super often though. enjoy the shares, and remember to try and support artists if you can :)"; 19 + }; 20 + }; 21 22 + systemd.tmpfiles.rules = [ 23 + "Z /var/lib/slskd 0775 slskd slskd -" 24 + ]; 25 26 + users.groups.slskd.members = ["devin"]; 27 }
+7 -7
modules/nixos/services/ssh.nix
··· 1 {...}: { 2 - services = { 3 - openssh = { 4 - enable = true; 5 - settings.PasswordAuthentication = false; 6 - }; 7 - fail2ban.enable = true; 8 - }; 9 }
··· 1 {...}: { 2 + services = { 3 + openssh = { 4 + enable = true; 5 + settings.PasswordAuthentication = false; 6 + }; 7 + fail2ban.enable = true; 8 + }; 9 }
+1 -1
modules/nixos/services/tailscale.nix
··· 1 {...}: { 2 - services.tailscale.enable = true; 3 }
··· 1 {...}: { 2 + services.tailscale.enable = true; 3 }
+2 -2
modules/nixos/services/tlp.nix
··· 1 {...}: { 2 - services.power-profiles-daemon.enable = false; 3 - services.tlp.enable = true; 4 }
··· 1 {...}: { 2 + services.power-profiles-daemon.enable = false; 3 + services.tlp.enable = true; 4 }
+26 -26
modules/nixos/services/transmission.nix
··· 1 {pkgs, ...}: { 2 - age.secrets.transmission = { 3 - file = ../../../secrets/transmission.age; 4 - owner = "transmission"; 5 - group = "transmission"; 6 - path = "/etc/secrets/transmission.json"; 7 - }; 8 9 - services.transmission = { 10 - enable = true; 11 - openRPCPort = true; 12 - openPeerPorts = true; 13 - package = pkgs.transmission_4; 14 - credentialsFile = "/etc/secrets/transmission.json"; 15 - settings = { 16 - incomplete-dir-enabled = false; 17 - umask = "000"; 18 - rpc-bind-address = "0.0.0.0"; 19 - rpc-whitelist-enabled = false; 20 - rpc-authentication-required = true; 21 - rpc-username = "devin"; 22 - performanceNetParameters = true; 23 - }; 24 - }; 25 26 - systemd.tmpfiles.rules = [ 27 - "Z /var/lib/transmission 0770 transmission transmission -" 28 - ]; 29 30 - users.groups.transmission.members = ["devin"]; 31 }
··· 1 {pkgs, ...}: { 2 + age.secrets.transmission = { 3 + file = ../../../secrets/transmission.age; 4 + owner = "transmission"; 5 + group = "transmission"; 6 + path = "/etc/secrets/transmission.json"; 7 + }; 8 9 + services.transmission = { 10 + enable = true; 11 + openRPCPort = true; 12 + openPeerPorts = true; 13 + package = pkgs.transmission_4; 14 + credentialsFile = "/etc/secrets/transmission.json"; 15 + settings = { 16 + incomplete-dir-enabled = false; 17 + umask = "000"; 18 + rpc-bind-address = "0.0.0.0"; 19 + rpc-whitelist-enabled = false; 20 + rpc-authentication-required = true; 21 + rpc-username = "devin"; 22 + performanceNetParameters = true; 23 + }; 24 + }; 25 26 + systemd.tmpfiles.rules = [ 27 + "Z /var/lib/transmission 0770 transmission transmission -" 28 + ]; 29 30 + users.groups.transmission.members = ["devin"]; 31 }
+48 -48
modules/users/devin.nix
··· 1 {pkgs, ...}: let 2 - isDarwin = pkgs.stdenv.isDarwin; 3 - homeDir = 4 - if isDarwin 5 - then "/Users/devin" 6 - else "/home/devin"; 7 in { 8 - users.users.devin = 9 - { 10 - home = homeDir; 11 - shell = pkgs.fish; 12 - } 13 - // ( 14 - if isDarwin 15 - then {uid = 501;} 16 - else { 17 - isNormalUser = true; 18 - extraGroups = ["networkmanager" "wheel"]; 19 - } 20 - ); 21 22 - home-manager.users.devin = {pkgs, ...}: { 23 - imports = [ 24 - ./programs/fastfetch.nix 25 - ./programs/fish.nix 26 - ./programs/git.nix 27 - ./programs/neovim.nix 28 - ./programs/tmux.nix 29 - ]; 30 - home = { 31 - username = "devin"; 32 - homeDirectory = homeDir; 33 - stateVersion = "23.11"; 34 - packages = with pkgs; [ 35 - alejandra 36 - bat 37 - bun 38 - coreutils 39 - just 40 - nh 41 - nix-your-shell 42 - nixd 43 - packwiz 44 - rsync 45 - starship 46 - tree 47 - xz 48 - ]; 49 - }; 50 - programs.home-manager.enable = true; 51 - }; 52 }
··· 1 {pkgs, ...}: let 2 + isDarwin = pkgs.stdenv.isDarwin; 3 + homeDir = 4 + if isDarwin 5 + then "/Users/devin" 6 + else "/home/devin"; 7 in { 8 + users.users.devin = 9 + { 10 + home = homeDir; 11 + shell = pkgs.fish; 12 + } 13 + // ( 14 + if isDarwin 15 + then {uid = 501;} 16 + else { 17 + isNormalUser = true; 18 + extraGroups = ["networkmanager" "wheel"]; 19 + } 20 + ); 21 22 + home-manager.users.devin = {pkgs, ...}: { 23 + imports = [ 24 + ./programs/fastfetch.nix 25 + ./programs/fish.nix 26 + ./programs/git.nix 27 + ./programs/neovim.nix 28 + ./programs/tmux.nix 29 + ]; 30 + home = { 31 + username = "devin"; 32 + homeDirectory = homeDir; 33 + stateVersion = "23.11"; 34 + packages = with pkgs; [ 35 + alejandra 36 + bat 37 + bun 38 + coreutils 39 + just 40 + nh 41 + nix-your-shell 42 + nixd 43 + packwiz 44 + rsync 45 + starship 46 + tree 47 + xz 48 + ]; 49 + }; 50 + programs.home-manager.enable = true; 51 + }; 52 }
+17 -17
modules/users/programs/fastfetch.nix
··· 1 {...}: { 2 - programs.fastfetch = { 3 - enable = true; 4 - settings = { 5 - logo = { 6 - type = "small"; 7 - }; 8 - modules = [ 9 - "title" 10 - "uptime" 11 - "host" 12 - "os" 13 - "localip" 14 - "disk" 15 - "media" 16 - ]; 17 - }; 18 - }; 19 }
··· 1 {...}: { 2 + programs.fastfetch = { 3 + enable = true; 4 + settings = { 5 + logo = { 6 + type = "small"; 7 + }; 8 + modules = [ 9 + "title" 10 + "uptime" 11 + "host" 12 + "os" 13 + "localip" 14 + "disk" 15 + "media" 16 + ]; 17 + }; 18 + }; 19 }
+28 -28
modules/users/programs/fish.nix
··· 1 {pkgs, ...}: { 2 - home.packages = with pkgs; [ 3 - fzf 4 - fd 5 - bat 6 - grc 7 - ]; 8 9 - programs.fish = { 10 - enable = true; 11 - interactiveShellInit = '' 12 - if command -q nix-your-shell 13 - nix-your-shell fish | source 14 - end 15 - starship init fish | source 16 - fish_add_path /opt/homebrew/bin 17 - fastfetch 18 - set fish_greeting 19 - ''; 20 - plugins = [ 21 - { 22 - name = "fzf-fish"; 23 - src = pkgs.fishPlugins.fzf-fish.src; 24 - } 25 - { 26 - name = "grc"; 27 - src = pkgs.fishPlugins.grc.src; 28 - } 29 - ]; 30 - }; 31 }
··· 1 {pkgs, ...}: { 2 + home.packages = with pkgs; [ 3 + fzf 4 + fd 5 + bat 6 + grc 7 + ]; 8 9 + programs.fish = { 10 + enable = true; 11 + interactiveShellInit = '' 12 + if command -q nix-your-shell 13 + nix-your-shell fish | source 14 + end 15 + starship init fish | source 16 + fish_add_path /opt/homebrew/bin 17 + fastfetch 18 + set fish_greeting 19 + ''; 20 + plugins = [ 21 + { 22 + name = "fzf-fish"; 23 + src = pkgs.fishPlugins.fzf-fish.src; 24 + } 25 + { 26 + name = "grc"; 27 + src = pkgs.fishPlugins.grc.src; 28 + } 29 + ]; 30 + }; 31 }
+14 -14
modules/users/programs/git.nix
··· 1 {pkgs, ...}: { 2 - home.packages = with pkgs; [ 3 - gh 4 - lazygit 5 - ]; 6 7 - programs.git = { 8 - enable = true; 9 - settings = { 10 - user.name = "intergrav"; 11 - user.email = "devin@devins.page"; 12 - credential.helper = "!gh auth git-credential"; 13 - pull.rebase = true; 14 - rebase.autoStash = true; 15 - }; 16 - }; 17 }
··· 1 {pkgs, ...}: { 2 + home.packages = with pkgs; [ 3 + gh 4 + lazygit 5 + ]; 6 7 + programs.git = { 8 + enable = true; 9 + settings = { 10 + user.name = "intergrav"; 11 + user.email = "devin@devins.page"; 12 + credential.helper = "!gh auth git-credential"; 13 + pull.rebase = true; 14 + rebase.autoStash = true; 15 + }; 16 + }; 17 }
+30 -33
modules/users/programs/neovim.nix
··· 1 {pkgs, ...}: { 2 - home.packages = with pkgs; [ 3 - ripgrep 4 - ]; 5 6 - programs.neovim = { 7 - enable = true; 8 - viAlias = true; 9 - vimAlias = true; 10 - defaultEditor = true; 11 - plugins = with pkgs.vimPlugins; [ 12 - nvim-lspconfig 13 14 - nvim-treesitter 15 - nvim-treesitter.withAllGrammars 16 17 - telescope-nvim 18 - plenary-nvim 19 - telescope-fzf-native-nvim 20 21 - nvim-cmp 22 - luasnip 23 - cmp_luasnip 24 25 - nvim-tree-lua 26 27 - lazygit-nvim 28 29 - transparent-nvim 30 - ]; 31 - extraLuaConfig = '' 32 - vim.g.loaded_netrw = 1 33 - vim.g.loaded_netrwPlugin = 1 34 - vim.opt.cmdheight = 0 35 - vim.opt.tabstop = 4 36 - vim.opt.shiftwidth = 4 37 - vim.opt.softtabstop = 4 38 - require("nvim-tree").setup() 39 - require('transparent').setup({}) 40 - ''; 41 - }; 42 }
··· 1 {pkgs, ...}: { 2 + home.packages = with pkgs; [ 3 + ripgrep 4 + ]; 5 6 + programs.neovim = { 7 + enable = true; 8 + viAlias = true; 9 + vimAlias = true; 10 + defaultEditor = true; 11 + plugins = with pkgs.vimPlugins; [ 12 + nvim-lspconfig 13 14 + nvim-treesitter 15 + nvim-treesitter.withAllGrammars 16 17 + telescope-nvim 18 + plenary-nvim 19 + telescope-fzf-native-nvim 20 21 + nvim-cmp 22 + luasnip 23 + cmp_luasnip 24 25 + nvim-tree-lua 26 27 + lazygit-nvim 28 29 + transparent-nvim 30 + ]; 31 + extraLuaConfig = '' 32 + vim.g.loaded_netrw = 1 33 + vim.g.loaded_netrwPlugin = 1 34 + vim.opt.cmdheight = 0 35 + require("nvim-tree").setup() 36 + require('transparent').setup({}) 37 + ''; 38 + }; 39 }
+4 -4
modules/users/programs/tmux.nix
··· 1 {pkgs, ...}: { 2 - programs.tmux = { 3 - enable = true; 4 - plugins = with pkgs.tmuxPlugins; [sensible]; 5 - }; 6 }
··· 1 {pkgs, ...}: { 2 + programs.tmux = { 3 + enable = true; 4 + plugins = with pkgs.tmuxPlugins; [sensible]; 5 + }; 6 }