Compare commits

..

1 Commits

Author SHA1 Message Date
Jacob Hinkle
ee4ff53921 Old setup for pentablet 2023-09-13 07:30:18 -04:00
23 changed files with 201 additions and 332 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.deb filter=lfs diff=lfs merge=lfs -text

70
flake.lock generated
View File

@ -4,30 +4,30 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1747556789, "lastModified": 1671459164,
"narHash": "sha256-7uHyVw9mhvTB6RS1WcIRsebBxj8SZAnlXxZarx7Xk7M=", "narHash": "sha256-RbkDnvLV7WjbiF4Dpiezrf8kXxwieQXAVtY8ciRQj6Q=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e08e6e2389234000b0447e57abf61d8ccd59a68e", "rev": "e7eba9cc46547ae86642ad3c6a9a4fb22c07bc26",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e08e6e2389234000b0447e57abf61d8ccd59a68e",
"type": "github" "type": "github"
} }
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1769086393, "lastModified": 1671467847,
"narHash": "sha256-3ymIZ8s3+hu7sDl/Y48o6bwMxorfKrmn97KuWiw1vjY=", "narHash": "sha256-eIeZIQbbW0QYDW0nhDaieokw6VakPO3TyJ3RmxqGHOs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "9f7ba891ea5fc3ededd7804f1a23fafadbcb26ca", "rev": "25010a042c23695ae457a97aad60e9b1d49f2ecc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -38,17 +38,33 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1768649915, "lastModified": 1669833724,
"narHash": "sha256-jc21hKogFnxU7KXSVTRmxC7u5D4RHwm9BAvDf5/Z1Uo=", "narHash": "sha256-/HEZNyGbnQecrgJnfE8d0WC5c1xuPSD2LUpB6YXlg4c=",
"owner": "NixOS", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3e3f3c7f9977dc123c23ee21e8085ed63daf8c37", "rev": "4d2b37a84fad1091b9de401eb450aae66f1a741e",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "owner": "nixos",
"ref": "release-25.05", "repo": "nixpkgs",
"type": "indirect" "type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1671459584,
"narHash": "sha256-6wRK7xmeHfClJ0ICOkax1avLZVGTDqBodQlkl/opccY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "87b58217c9a05edcf7630b9be32570f889217aef",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-22.11",
"repo": "nixpkgs",
"type": "github"
} }
}, },
"root": { "root": {
@ -63,14 +79,15 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1768863606, "lastModified": 1671472949,
"narHash": "sha256-1IHAeS8WtBiEo5XiyJBHOXMzECD6aaIOJmpQKzRRl64=", "narHash": "sha256-9iHSGpljCX+RypahQssBXPwkru9onfKfceCTeVrMpH4=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "c7067be8db2c09ab1884de67ef6c4f693973f4a2", "rev": "32840f16ffa0856cdf9503a8658f2dd42bf70342",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -78,6 +95,21 @@
"repo": "sops-nix", "repo": "sops-nix",
"type": "github" "type": "github"
} }
},
"utils": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@ -2,13 +2,12 @@
description = "NixOS configurations for my machines"; description = "NixOS configurations for my machines";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/release-25.05"; nixpkgs.url = github:nixos/nixpkgs;
nixos-hardware = { nixos-hardware = {
url = github:nixos/nixos-hardware; url = github:nixos/nixos-hardware;
}; };
home-manager = { home-manager = {
# url = github:nix-community/home-manager; url = github:nix-community/home-manager;
url = github:nix-community/home-manager/e08e6e2389234000b0447e57abf61d8ccd59a68e;
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
sops-nix = { sops-nix = {
@ -59,7 +58,7 @@
]; ];
# ThinkCentre M700 mini-pc (server) # ThinkCentre M700 mini-pc (server)
cj = mkNixosSystem [ cj = mkNixosSystem [
#nixos-hardware.nixosModules.common-pc-hdd nixos-hardware.nixosModules.common-pc-hdd
nixos-hardware.nixosModules.common-cpu-intel-cpu-only nixos-hardware.nixosModules.common-cpu-intel-cpu-only
./machines/cj/configuration.nix ./machines/cj/configuration.nix
]; ];

View File

@ -40,6 +40,7 @@
inconsolata inconsolata
jq jq
keyutils # for keyctl, used by some bitwarden scripts like qute-bitwarden keyutils # for keyctl, used by some bitwarden scripts like qute-bitwarden
krita
libreoffice libreoffice
logseq logseq
mupdf mupdf
@ -47,7 +48,6 @@
#openscad #openscad
#pandoc #pandoc
pavucontrol pavucontrol
qalculate-qt
ripgrep ripgrep
rofi rofi
scli scli
@ -56,12 +56,13 @@
sops sops
speedcrunch speedcrunch
spotify spotify
#spotify-tui # this has been removed as of 2024.05 spotify-tui
sxiv sxiv
#texlive.combined.scheme-full #texlive.combined.scheme-full
tree tree
unzip unzip
xclip xclip
xournal
xpra xpra
zathura zathura
zoom-us zoom-us
@ -153,7 +154,11 @@
}; };
firefox = { firefox = {
enable = true; enable = true;
#nativeMessagingHosts.packages = [ pkgs.tridactyl-native ]; package = pkgs.firefox.override {
cfg = {
enableTridactylNative = true;
};
};
}; };
git = { git = {
enable = true; enable = true;
@ -201,7 +206,39 @@
enable = true; enable = true;
settings.email = "jacob.hinkle@gmail.com"; settings.email = "jacob.hinkle@gmail.com";
}; };
ssh = import ./ssh.nix; ssh = {
enable = true;
matchBlocks = {
login1 = {
hostname = "login1.ornl.gov";
user = "4jh";
};
lucky = {
hostname = "lucky.ornl.gov";
user = "4jh";
proxyJump = "login1";
};
murdock = {
hostname = "murdock.ornl.gov";
user = "4jh";
proxyJump = "login1";
};
penny = {
hostname = "192.168.88.18";
user = "jhinkle";
};
dlcluster = {
hostname = "dlcluster.nvidia.com";
user = "jhinkle";
proxyJump = "penny";
};
router ={
hostname = "192.168.88.1";
user = "jacob";
port = 2200;
};
};
};
tmux = import ./tmux.nix; tmux = import ./tmux.nix;
xmobar = { xmobar = {
enable = true; enable = true;
@ -229,7 +266,7 @@
]; ];
theme = "michelebologna"; # nice clean theme that shows jobs theme = "michelebologna"; # nice clean theme that shows jobs
}; };
initContent = '' initExtra = ''
# michelebologna theme doesn't have an RPROMPT, but I like the one from # michelebologna theme doesn't have an RPROMPT, but I like the one from
# the clean theme # the clean theme
RPROMPT='[%*]' RPROMPT='[%*]'
@ -257,12 +294,14 @@
"--fx ''" # don't apply effects "--fx ''" # don't apply effects
]; ];
}; };
dunst = {
enable = true;
};
flameshot.enable = true; flameshot.enable = true;
mbsync = { mbsync = {
enable = true; enable = true;
verbose = true; verbose = true;
}; };
network-manager-applet.enable = true;
spotifyd = { spotifyd = {
enable = false; enable = false;
settings = { settings = {
@ -277,7 +316,7 @@
}; };
}; };
syncthing = { syncthing = {
enable = false; enable = true;
# cause the tray command to wait for the service and tray manager to start # cause the tray command to wait for the service and tray manager to start
extraOptions = [ "--wait" ]; extraOptions = [ "--wait" ];
tray.enable = true; tray.enable = true;
@ -320,5 +359,9 @@
config = ./xmonad.hs; config = ./xmonad.hs;
}; };
}; };
initExtra = ''
xinput --map-to-output 'HANVON UGEE Artist 16(2nd Gen) Mouse' DP-1
xinput --map-to-output 'HANVON UGEE Artist 16(2nd Gen)' DP-1
'';
}; };
} }

View File

@ -1,34 +0,0 @@
{
enable = true;
matchBlocks = {
login1 = {
hostname = "login1.ornl.gov";
user = "4jh";
};
lucky = {
hostname = "lucky.ornl.gov";
user = "4jh";
proxyJump = "login1";
};
murdock = {
hostname = "murdock.ornl.gov";
user = "4jh";
proxyJump = "login1";
};
penny = {
#hostname = "192.168.88.18";
hostname = "192.168.88.13";
user = "jhinkle";
};
dlcluster = {
hostname = "dlcluster.nvidia.com";
user = "jhinkle";
proxyJump = "penny";
};
router ={
hostname = "192.168.88.1";
user = "jacob";
port = 2200;
};
};
}

View File

@ -34,12 +34,12 @@ Config { overrideRedirect = False
, "--" , "--"
, "--on", "" , "--on", ""
] ]
, Run Memory ["--template", "<usedratio>"] 10 , Run Memory ["--template", "Mem: <usedratio>%"] 10
, Run Swap [] 10 , Run Swap [] 10
, Run Date "%Y%m%d <fc=#8be9fd>%H:%M</fc>" "date" 10 , Run Date "%a %Y-%m-%d <fc=#8be9fd>%H:%M</fc>" "date" 10
, Run XMonadLog , Run XMonadLog
] ]
, sepChar = "%" , sepChar = "%"
, alignSep = "}{" , alignSep = "}{"
, template = "%XMonadLog% }{A%alsa:default:Master%M%memory%%cpu%B%battery% %date%" , template = "%XMonadLog% }{ Sound: %alsa:default:Master% | %cpu% | %memory% * %swap% | BAT1: %battery% | %date% "
} }

View File

@ -78,29 +78,28 @@ myXmobarPP = def
{ ppSep = magenta "" { ppSep = magenta ""
, ppTitleSanitize = xmobarStrip , ppTitleSanitize = xmobarStrip
, ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2 , ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2
, ppHidden = lightGreen . wrap " " "" , ppHidden = white . wrap " " ""
, ppHiddenNoWindows = gray . wrap " " "" , ppHiddenNoWindows = lowWhite . wrap " " ""
, ppUrgent = red . wrap (yellow "!") (yellow "!") , ppUrgent = red . wrap (yellow "!") (yellow "!")
, ppOrder = \[ws, l, _, wins] -> [ws, l, wins] , ppOrder = \[ws, l, _, wins] -> [ws, l, wins]
, ppExtras = [logTitles formatFocused formatUnfocused] , ppExtras = [logTitles formatFocused formatUnfocused]
} }
where where
formatFocused = wrap (white "[") (white "]") . magenta . ppWindow formatFocused = wrap (white "[") (white "]") . magenta . ppWindow
formatUnfocused = wrap (gray "[") (gray "]") . blue . ppWindow formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow
-- | Windows should have *some* title, which should not not exceed a -- | Windows should have *some* title, which should not not exceed a
-- sane length. -- sane length.
ppWindow :: String -> String ppWindow :: String -> String
ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30 ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30
blue, gray, magenta, lightGreen, red, white, yellow :: String -> String blue, lowWhite, magenta, red, white, yellow :: String -> String
magenta = xmobarColor "#ff79c6" "" magenta = xmobarColor "#ff79c6" ""
lightGreen = xmobarColor "#bbffbb" "" blue = xmobarColor "#bd93f9" ""
blue = xmobarColor "#bdbdf9" ""
white = xmobarColor "#f8f8f2" "" white = xmobarColor "#f8f8f2" ""
yellow = xmobarColor "#f1fa8c" "" yellow = xmobarColor "#f1fa8c" ""
red = xmobarColor "#ff5555" "" red = xmobarColor "#ff5555" ""
gray = xmobarColor "#888888" "" lowWhite = xmobarColor "#bbbbbb" ""
addlWorkspaces :: [String] addlWorkspaces :: [String]
addlWorkspaces = ["0", "-", "=", "i"] addlWorkspaces = ["0", "-", "=", "i"]

View File

@ -8,17 +8,16 @@
inputs, inputs,
sops, sops,
... ...
}: { }:
let
xp_pen_pentablet = pkgs.callPackage ./xp_pen_pentablet.nix {};
in
{
imports = [ imports = [
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
nixpkgs.config.permittedInsecurePackages = [
"electron-25.9.0"
];
# This lets us pin the nixpkgs registry by default to the nixpkgs used to build this system. # This lets us pin the nixpkgs registry by default to the nixpkgs used to build this system.
# Doing this means we are less likely to require the 30+MB download when # Doing this means we are less likely to require the 30+MB download when
# running commands like nix search or nix run # running commands like nix search or nix run
@ -61,9 +60,8 @@
networking = { networking = {
hostName = "buck"; # Define your hostname. hostName = "buck"; # Define your hostname.
enableIPv6 = true; enableIPv6 = true;
networkmanager.enable = true; wireless = {
wireless = { # wpa_supplicant enable = true;
enable = false;
userControlled.enable = true; userControlled.enable = true;
environmentFile = "/run/secrets/wifi/env"; environmentFile = "/run/secrets/wifi/env";
networks = { networks = {
@ -97,6 +95,7 @@
networkmanagerapplet networkmanagerapplet
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget wget
xp_pen_pentablet
]; ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
@ -170,20 +169,26 @@
enable = true; enable = true;
}; };
rpcbind.enable = true; # for NFS
syncthing = import ./syncthing.nix; syncthing = import ./syncthing.nix;
udev.extraRules = '' udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness" ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness"
''; KERNEL=="hidraw", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev"
tailscale.enable = true; # For XP-PEN tablet
# From the official driver
KERNEL=="uinput",MODE:="0666",OPTIONS+="static_node=uinput"
SUBSYSTEMS=="usb",ATTRS{idVendor}=="28bd",MODE:="0666"
j
#KERNEL=="event[0-9]*", SUBSYSTEM=="input", SUBSYSTEMS=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="094c", MODE="0664", GROUP="plugdev"
#KERNEL=="mouse[0-9]*", SUBSYSTEM=="input", SUBSYSTEMS=="usb", ATTRS{idVendor}=="28bd", ATTRS{idProduct}=="094c", MODE="0664", GROUP="plugdev"
'';
# Enable the X11 windowing system. services.xserver.enable = true; # Enable the X11 windowing system. services.xserver.enable = true;
xserver = { xserver = {
enable = true; enable = true;
dpi = 112; # t470 has a 14" 16:9 monitor at native res 1366x768 dpi = 112; # t470 has a 14" 16:9 monitor at native res 1366x768
digimend.enable = true;
displayManager = { displayManager = {
defaultSession = "none+i3"; defaultSession = "none+i3";
autoLogin = { autoLogin = {
@ -202,6 +207,7 @@
disableWhileTyping = true; disableWhileTyping = true;
}; };
}; };
#wacom.enable = true;
windowManager.i3 = { windowManager.i3 = {
enable = true; enable = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
@ -218,31 +224,6 @@
services.thermald.enable = true; services.thermald.enable = true;
services.fwupd.enable = true; services.fwupd.enable = true;
systemd.mounts = let
nfsOpts = {
type = "nfs";
mountConfig = {
Options = "noatime";
};
};
nas = "100.64.0.5"; # synnas over tailscale
in [
(nfsOpts // {
what = "${nas}:/homes/jacob/Photos";
where = "/nas/photos";
})
];
systemd.automounts = let
autoMountOpts = {
wantedBy = [ "multi-user.target" ];
automountConfig = {
TimeoutIdleSec = "600";
};
};
in [
(autoMountOpts // { where = "/nas/photos"; })
];
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
# services.openssh.enable = true; # services.openssh.enable = true;

View File

@ -18,13 +18,12 @@
boot.extraModulePackages = []; boot.extraModulePackages = [];
fileSystems."/" = { fileSystems."/" = {
#device = "/dev/disk/by-uuid/cc13728f-a446-49db-98fc-51db875bba20"; device = "/dev/disk/by-uuid/cc13728f-a446-49db-98fc-51db875bba20";
device = "/dev/disk/by-uuid/a04773e7-3ccd-4d10-908d-53896b910f61";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot/efi" = { fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/0EB1-1189"; device = "/dev/disk/by-uuid/164F-882B";
fsType = "vfat"; fsType = "vfat";
}; };
@ -47,4 +46,10 @@
powerManagement.cpuFreqGovernor = "powersave"; powerManagement.cpuFreqGovernor = "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# for XP-Pen tablet
#hardware.opentabletdriver = {
#enable = true;
#package = patchedOTD;
#};
} }

View File

@ -1,5 +1,5 @@
{ {
enable = false; enable = true;
user = "jacob"; user = "jacob";
dataDir = "/home/jacob/Sync"; dataDir = "/home/jacob/Sync";
#guiAddress = "0.0.0.0:8234"; # for headless #guiAddress = "0.0.0.0:8234"; # for headless

View File

@ -25,7 +25,7 @@
, lib , lib
, fetchurl , fetchurl
, glib , glib
, dbus_libs , dbus
, dpkg , dpkg
, autoPatchelfHook , autoPatchelfHook
, writeShellScript , writeShellScript
@ -44,7 +44,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "xp_pen_driver"; pname = "xp_pen_driver";
version = "3.2.0.210804-1"; version = "3.3.9.230222-1";
src = fetchurl { src = fetchurl {
#url = "https://github.com/peterwilli/XP-Pen-Pentablet-Driver-for-Nixos/releases/download/3.2.0.210804-1/XP-PEN-pentablet-3.2.0.210804-1.x86_64.deb"; #url = "https://github.com/peterwilli/XP-Pen-Pentablet-Driver-for-Nixos/releases/download/3.2.0.210804-1/XP-PEN-pentablet-3.2.0.210804-1.x86_64.deb";
@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
zlib zlib
libGL libGL
libusb libusb
dbus_libs dbus
fontconfig fontconfig
glib glib
freetype freetype
@ -81,6 +81,7 @@ stdenv.mkDerivation rec {
chmod 755 "$out" chmod 755 "$out"
chmod a+x $out/usr/lib/pentablet/pentablet.sh chmod a+x $out/usr/lib/pentablet/pentablet.sh
chmod a+x $out/usr/lib/pentablet/pentablet
runHook postInstall runHook postInstall
mkdir -p $out/bin mkdir -p $out/bin
makeWrapper $out/usr/lib/pentablet/pentablet.sh $out/bin/pentablet makeWrapper $out/usr/lib/pentablet/pentablet.sh $out/bin/pentablet

View File

@ -7,10 +7,6 @@
./hardware-configuration-zfs.nix ./hardware-configuration-zfs.nix
]; ];
nixpkgs.config.permittedInsecurePackages = [
"electron-27.3.11"
];
# This lets us pin the nixpkgs registry by default to the nixpkgs used to build this system. # This lets us pin the nixpkgs registry by default to the nixpkgs used to build this system.
# Doing this means we are less likely to require the 30+MB download when # Doing this means we are less likely to require the 30+MB download when
# running commands like nix search or nix run # running commands like nix search or nix run
@ -61,9 +57,9 @@
# Aliases subdomains we serve here. Since we bypass pihole locally to avoid # Aliases subdomains we serve here. Since we bypass pihole locally to avoid
# circular lookups, we can set local addresses here instead of using local # circular lookups, we can set local addresses here instead of using local
# dns in pihole (or global dns which would resolve to our WAN ips). # dns in pihole (or global dns which would resolve to our WAN ips).
#extraHosts = '' extraHosts = ''
# 127.0.0.1 git.jhink.org home.jhink.org 127.0.0.1 git.jhink.org vault.jhink.org home.jhink.org
# ''; '';
# The global useDHCP flag is deprecated, therefore explicitly set to false here. Per-interface useDHCP will be mandatory in the future, so this generated config replicates the default behaviour. # The global useDHCP flag is deprecated, therefore explicitly set to false here. Per-interface useDHCP will be mandatory in the future, so this generated config replicates the default behaviour.
@ -79,20 +75,18 @@
wireless = { wireless = {
enable = false; # turn of wifi until needed enable = false; # turn of wifi until needed
userControlled.enable = true; userControlled.enable = true;
#environmentFile = "/run/secrets/wifi/env"; environmentFile = "/run/secrets/wifi/env";
secretsFile = "/run/secrets/wifi/env";
networks = { networks = {
home.pskRaw = "ext:PSKRAW_HOME"; "@SSID_HOME@" = {
#"@SSID_HOME@" = { pskRaw = "@PSKRAW_HOME@";
#pskRaw = "@PSKRAW_HOME@"; };
#};
}; };
}; };
firewall = import ./firewall.nix; firewall = import ./firewall.nix;
timeServers = [ "192.168.88.1" ] ++ options.networking.timeServers.default; timeServers = [ "192.168.88.1" ] ++ options.networking.timeServers.default;
}; };
#hardware.video.hidpi.enable = false; hardware.video.hidpi.enable = false;
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
#hardware.pulseaudio = { #hardware.pulseaudio = {
#enable = true; #enable = true;
@ -101,6 +95,9 @@
#}; #};
hardware.bluetooth.enable = false; hardware.bluetooth.enable = false;
# Enable sound.
sound.enable = false;
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
users.users.jacob = { users.users.jacob = {
isNormalUser = true; isNormalUser = true;
@ -121,41 +118,36 @@
# enable = true; enableSSHSupport = true; # enable = true; enableSSHSupport = true;
# }; # };
programs.zsh.enable = true;
security.rtkit.enable = true; # recommended for pipewire security.rtkit.enable = true; # recommended for pipewire
# enable acme for certbot # enable acme for certbot
#security.acme = { security.acme = {
#acceptTerms = true; acceptTerms = true;
#defaults = { defaults = {
#email = "jacob.hinkle@gmail.com"; email = "jacob.hinkle@gmail.com";
#}; };
#}; };
virtualisation.oci-containers.containers = let virtualisation.oci-containers.containers = let
ips = { ips = {
# tailscale IP for IPV4 services serverIP = "192.168.88.21"; # v4 address
serverIP = "100.102.82.27"; # v4 address
# link-local IP = fe80:${suffix} # link-local IP = fe80:${suffix}
# external IP = ${externalprefix}:${suffix} # external IP = ${externalprefix}:${suffix}
#externalprefix = "2601:843:c200:20b"; #externalprefix = "2601:843:c200:20b";
#ipv6suffix = "223:24ff:fea9:a97"; #ipv6suffix = "223:24ff:fea9:a97";
# IPV6 external IP should not need to use tailscale
serverIP6 = "2601:843:c200:20b:223:24ff:fea9:a97"; # external IP serverIP6 = "2601:843:c200:20b:223:24ff:fea9:a97"; # external IP
#serverIP6 = "fe80::223:24ff:fea9:a97"; # link-local IP #serverIP6 = "fe80::223:24ff:fea9:a97"; # link-local IP
}; };
in { in {
home-assistant = import ./home-assistant.nix ips; home-assistant = import ./home-assistant.nix ips;
open-webui = import ./open-webui.nix ips;
pihole = import ./pihole.nix ips; pihole = import ./pihole.nix ips;
unifi = import ./unifi.nix ips;
vaultwarden = import ./vaultwarden.nix ips;
}; };
# List services that you want to enable: # List services that you want to enable:
services = { services = {
chrony.enable = true;
fail2ban = { fail2ban = {
enable = true; enable = true;
maxretry = 5; maxretry = 5;
@ -163,7 +155,6 @@
"127.0.0.0/8" # localhost "127.0.0.0/8" # localhost
"192.168.0.0/16" # LAN "192.168.0.0/16" # LAN
"160.91.241.229" # lucky "160.91.241.229" # lucky
"100.64.0.0" # tailscale
]; ];
}; };
@ -174,23 +165,6 @@
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
openssh.enable = true; openssh.enable = true;
# This is an ollama frontend. Formerly called ollama-webui
open-webui = {
# We now use docker instead
enable = false;
environment = {
ANONYMIZED_TELEMETRY = "False";
DO_NOT_TRACK = "True";
SCARF_NO_ANALYTICS = "True";
OLLAMA_API_BASE_URL = "http://192.168.88.18:11434";
OLLAMA_BASE_URL = "http://192.168.88.18:11434";
DATA_DIR = "/serverdata/open-webui/data";
};
host = "cj.monster-squeaker.ts.net";
port = 8687;
stateDir = "/serverdata/open-webui/state";
};
pipewire = { pipewire = {
enable = true; enable = true;
alsa.enable = true; alsa.enable = true;
@ -204,37 +178,16 @@
#media-session.enable = true; #media-session.enable = true;
}; };
searx = {
enable = false;
redisCreateLocally = true;
settings.server = {
bind_address = "::1";
port = 6789;
secret_key = config.sops.secrets.searxng.key;
};
};
syncthing = import ./syncthing.nix; syncthing = import ./syncthing.nix;
tailscale = {
enable = true;
extraUpFlags = "--accept-dns=false";
openFirewall = true;
};
timesyncd.enable = true;
unifi = { unifi = {
# This was causing a full build of mongodb on every nixos-rebuild. enable = true;
# Instead, let's migrate to using the docker image
enable = false;
openFirewall = true; openFirewall = true;
unifiPackage = pkgs.unifiStable; unifiPackage = pkgs.unifiStable;
}; };
vaultwarden = { vaultwarden = {
# We use a docker container for vaultwarden now enable = true;
enable = false;
config = { # https://github.com/dani-garcia/vaultwarden/blob/1.25.2/.env.template config = { # https://github.com/dani-garcia/vaultwarden/blob/1.25.2/.env.template
DOMAIN = "https://vault.jhink.org"; DOMAIN = "https://vault.jhink.org";
ROCKET_ADDRESS = "0.0.0.0"; ROCKET_ADDRESS = "0.0.0.0";
@ -246,14 +199,20 @@
# Enable the X11 windowing system. # Enable the X11 windowing system.
xserver = { xserver = {
enable = true; enable = true;
dpi = 180;
displayManager = { displayManager = {
defaultSession = "none+i3";
autoLogin = {
enable = true;
user = "jacob";
};
lightdm = { lightdm = {
enable = true; enable = true;
greeter.enable = false; greeter.enable = false;
}; };
}; };
dpi = 180; layout = "us";
xkb.layout = "us"; libinput.enable = true;
windowManager.i3 = { windowManager.i3 = {
enable = true; enable = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
@ -265,15 +224,6 @@
}; };
}; };
libinput.enable = true;
displayManager = {
defaultSession = "none+i3";
autoLogin = {
enable = true;
user = "jacob";
};
};
# ZFS services # ZFS services
zfs = { zfs = {
trim.enable = true; trim.enable = true;
@ -289,20 +239,6 @@
}; };
}; };
power.ups = {
enable = false;
mode = "netserver";
ups."myups" = {
driver = "usbhid-ups";
description = "CJ UPS";
port = "auto";
};
};
#environment.etc."nut/upsd.conf".source = ./config/upsd.conf;
#environment.etc."nut/upsd.users".source = ./config/upsd.users;
#environment.etc."nut/upsmon.conf".source = ./config/upsmon.conf;
# Due to bug in home assistant, this workaround is suggested temporarily as of May 6, 2022 # Due to bug in home assistant, this workaround is suggested temporarily as of May 6, 2022
# https://github.com/nix-community/home-manager/issues/2942#issuecomment-1119760100 # https://github.com/nix-community/home-manager/issues/2942#issuecomment-1119760100
#nixpkgs.config.allowUnfree = true; #nixpkgs.config.allowUnfree = true;

View File

@ -4,13 +4,13 @@
8080 8443 6789 8880 8843 27117 # unifi controller: https://help.ui.com/hc/en-us/articles/218506997-UniFi-Network-Required-Ports-Reference 8080 8443 6789 8880 8843 27117 # unifi controller: https://help.ui.com/hc/en-us/articles/218506997-UniFi-Network-Required-Ports-Reference
8585 # pihole web 8585 # pihole web
53 # pihole 53 # pihole
8123 # home-assistant #8123 # home-assistant
3000 # gitea #3000 # gitea
8022 # vaultwarden 8081 # vaultwarden
80 443 # reverse proxy 80 443 # reverse proxy
]; ];
allowedUDPPorts = [ allowedUDPPorts = [
#22000 21027 # syncthing 22000 21027 # syncthing
3478 5514 10001 1900 123 # unifi 3478 5514 10001 1900 123 # unifi
53 # pihole 53 # pihole
80 443 # reverse proxy 80 443 # reverse proxy
@ -18,8 +18,4 @@
allowedUDPPortRanges = [ allowedUDPPortRanges = [
{ from = 5656; to = 5699; } # unifi { from = 5656; to = 5699; } # unifi
]; ];
# This should not really be necessary unless we use an exit node or subnet
# with tailscale I think.
checkReversePath = "loose";
} }

View File

@ -1,5 +1,9 @@
{ {
enable = true; enable = true;
domain = "git.jhink.org";
rootUrl = "https://git.jhink.org";
httpPort = 3000;
httpAddress = "127.0.0.1";
lfs = { lfs = {
enable = true; enable = true;
contentDir = "/serverdata/gitea/lfs_content"; contentDir = "/serverdata/gitea/lfs_content";
@ -9,13 +13,5 @@
repository = { repository = {
DEFAULT_BRANCH = "main"; DEFAULT_BRANCH = "main";
}; };
server = {
DOMAIN = "git.jhink.org";
ROOT_URL = "https://git.jhink.org";
HTTP_PORT = 3000;
HTTP_ADDR = "0.0.0.0";
START_SSH_SERVER = "true";
SSH_PORT = 22222;
};
}; };
} }

View File

@ -20,7 +20,7 @@
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# high-resolution display # high-resolution display
#hardware.video.hidpi.enable = lib.mkDefault true; hardware.video.hidpi.enable = lib.mkDefault true;
fileSystems."/" = { fileSystems."/" = {
device = "none"; device = "none";
@ -51,12 +51,6 @@
neededForBoot = true; neededForBoot = true;
}; };
fileSystems."/tmp" =
{ device = "rpool/nixos/tmp";
fsType = "zfs";
neededForBoot = true;
};
fileSystems."/var/lib" = fileSystems."/var/lib" =
{ device = "rpool/nixos/var/lib"; { device = "rpool/nixos/var/lib";
fsType = "zfs"; fsType = "zfs";
@ -86,11 +80,6 @@
fsType = "zfs"; fsType = "zfs";
neededForBoot = true; neededForBoot = true;
}; };
fileSystems."/serverdata/open-webui" =
{ device = "rpool/serverdata/open-webui";
fsType = "zfs";
neededForBoot = true;
};
fileSystems."/serverdata/pihole" = fileSystems."/serverdata/pihole" =
{ device = "rpool/serverdata/pihole"; { device = "rpool/serverdata/pihole";
fsType = "zfs"; fsType = "zfs";
@ -101,16 +90,6 @@
fsType = "zfs"; fsType = "zfs";
neededForBoot = true; neededForBoot = true;
}; };
fileSystems."/serverdata/unifi" =
{ device = "rpool/serverdata/unifi";
fsType = "zfs";
neededForBoot = true;
};
fileSystems."/serverdata/vaultwarden" =
{ device = "rpool/serverdata/vaultwarden";
fsType = "zfs";
neededForBoot = true;
};
fileSystems."/home" = fileSystems."/home" =
{ device = "rpool/userdata/home"; { device = "rpool/userdata/home";
@ -130,18 +109,6 @@
neededForBoot = true; neededForBoot = true;
}; };
fileSystems."/nfs/homes" =
{ device = "192.168.88.88:/volume1/homes";
fsType = "nfs";
neededForBoot = false;
};
fileSystems."/nfs/shared_photos" =
{ device = "192.168.88.88:/volume1/photo";
fsType = "nfs";
neededForBoot = false;
};
swapDevices = [ swapDevices = [
{ {
device = "/dev/disk/by-partuuid/6bf463d0-107f-489e-be29-704442ea3150"; device = "/dev/disk/by-partuuid/6bf463d0-107f-489e-be29-704442ea3150";

View File

@ -1,6 +1,6 @@
serverIP : serverIP :
{ {
image = "ghcr.io/home-assistant/home-assistant:2024.11.0"; image = "ghcr.io/home-assistant/home-assistant:2023.6.3";
#ports = [ #ports = [
#"8123:8123" #"8123:8123"
#]; #];

View File

@ -1,10 +1,10 @@
{ {
enable = false; enable = true;
recommendedProxySettings = true; recommendedProxySettings = true;
virtualHosts = let virtualHosts = let
simpleProxy = ip: { simpleProxy = ip: {
forceSSL = false; forceSSL = true;
enableACME = false; enableACME = true;
extraConfig = '' extraConfig = ''
proxy_buffering off; proxy_buffering off;
''; '';

View File

@ -1,19 +0,0 @@
{ serverIP, serverIP6 } : {
image = "ghcr.io/open-webui/open-webui:0.6.26";
ports = [
"8687:8080"
];
environment = {
TZ = "America/New_York";
WEBUI_URL = "http://cj.monster-squeaker.ts.net:8687";
ANONYMIZED_TELEMETRY = "False";
DO_NOT_TRACK = "True";
SCARF_NO_ANALYTICS = "True";
USE_OLLAMA = "False";
OLLAMA_BASE_URL = "http://192.168.88.18:11434";
};
volumes = [
"/serverdata/open-webui/data:/app/backend/data"
];
}

View File

@ -1,9 +1,9 @@
{ serverIP, serverIP6 } : { { serverIP, serverIP6 } : {
image = "pihole/pihole:2025.06.2"; image = "pihole/pihole:2023.05.2";
ports = [ ports = [
"53:53/tcp" "53:53/tcp"
"53:53/udp" "53:53/udp"
"8585:80" #"8088:80"
#"4438:443" #"4438:443"
]; ];
environment = { environment = {
@ -24,7 +24,7 @@
]; ];
extraOptions = [ extraOptions = [
#"--cap-add=NET_ADMIN" #"--cap-add=NET_ADMIN"
#"--network=host" "--network=host"
"--no-hosts" # do not populate internal /etc/hosts with container host's "--no-hosts" # do not populate internal /etc/hosts with container host's
]; ];
} }

View File

@ -1,5 +1,5 @@
{ {
enable = false; enable = true;
dataDir = "/serverdata/syncthing/"; dataDir = "/serverdata/syncthing/";
user = "jacob"; user = "jacob";
group = "users"; group = "users";

View File

@ -1,19 +0,0 @@
{ serverIP, serverIP6 } : {
image = "jacobalberty/unifi:v10.0";
ports = [
"8080:8080"
"8443:8443"
"3478:3478/udp"
];
environment = {
TZ = "America/New_York";
};
volumes = [
"/serverdata/unifi:/unifi"
];
extraOptions = [
"--cap-add=NET_ADMIN"
"--network=host"
#"--no-hosts" # do not populate internal /etc/hosts with container host's
];
}

View File

@ -1,18 +0,0 @@
{ serverIP, serverIP6 } : {
image = "vaultwarden/server:1.32.6";
ports = [
"8022:80"
];
environment = {
TZ = "America/New_York";
};
volumes = [
"/serverdata/vaultwarden:/data"
];
extraOptions = [
#"--cap-add=NET_ADMIN"
#"--network=host"
#"--no-hosts" # do not populate internal /etc/hosts with container host's
];
}

View File

@ -8,8 +8,6 @@ email:
password: ENC[AES256_GCM,data:db0Wll4B8eXYc70dsIuYbw==,iv:2g4fE2GQyKxiVMkOQqOCPjAISdlXElvWYt0XKPEOWv0=,tag:73ymkTNGUlVccJFXjT40EA==,type:str] password: ENC[AES256_GCM,data:db0Wll4B8eXYc70dsIuYbw==,iv:2g4fE2GQyKxiVMkOQqOCPjAISdlXElvWYt0XKPEOWv0=,tag:73ymkTNGUlVccJFXjT40EA==,type:str]
pihole: pihole:
webpassword: ENC[AES256_GCM,data:bqBbGE5M4LUukMh7vQA=,iv:YhKaO2WQq5Ar9aKitgRTbDU2Ld2Cdc0wmrcQZ92lztY=,tag:UGnerGhtQBjO+n4LobdSyg==,type:str] webpassword: ENC[AES256_GCM,data:bqBbGE5M4LUukMh7vQA=,iv:YhKaO2WQq5Ar9aKitgRTbDU2Ld2Cdc0wmrcQZ92lztY=,tag:UGnerGhtQBjO+n4LobdSyg==,type:str]
searxng:
key: ENC[AES256_GCM,data:RayEL/8Pi7+j3T6fWRV142uw0P7Vlm15FWB14Lcfg/5xz+TpB6W4d8ivAM9ZTNG3CZGUwziAoP8qApYjxOeTqA==,iv:IecQ9nHuUaXa8B2y9Y/FryIbdq/oi5EbEuaZ4XaR4wg=,tag:cDJr1AVqG4tgtvPe6ujtxQ==,type:str]
spotify: spotify:
username: ENC[AES256_GCM,data:EXLRJXrHsP+k,iv:5pvHLVnrtG+oZEPZsBY/4/+b9QQEBTT7jiPvmkBHAWY=,tag:gcCJqgBd7b2+e2k0oIVY8w==,type:str] username: ENC[AES256_GCM,data:EXLRJXrHsP+k,iv:5pvHLVnrtG+oZEPZsBY/4/+b9QQEBTT7jiPvmkBHAWY=,tag:gcCJqgBd7b2+e2k0oIVY8w==,type:str]
password: ENC[AES256_GCM,data:DHj06DfPU98C,iv:wxinj4sLt8rQ6hW4NtxIHQPnAJ3acXRXQHRsRaoiGR8=,tag:b7ota0m1gpwSZYSDY1Uj+A==,type:str] password: ENC[AES256_GCM,data:DHj06DfPU98C,iv:wxinj4sLt8rQ6hW4NtxIHQPnAJ3acXRXQHRsRaoiGR8=,tag:b7ota0m1gpwSZYSDY1Uj+A==,type:str]
@ -21,6 +19,10 @@ wifi:
PSKRAW_HOME=base64 output from wpa_passphrase PSKRAW_HOME=base64 output from wpa_passphrase
env: ENC[AES256_GCM,data:a2m3FI0SmpbM2hhNbEdNhWWxgNyhXRDN9/LFiRMyFEr9Nf3NvkteZCdf/CCc81GAl/aKqqqCt49HQEiSRwzw2wc3XKmbQPxw6tmK4mCd4pP7YmPpg6tacLd8CzjtCG9J248W0qqTYUIU3+kuDcY6Tdp97KxJDINVbA==,iv:kXltdSsKkXwhIaWywFYMUGJCmMgaxv8FqhdBbjuyVSU=,tag:GvkevELXFKU31mmRGsFjDw==,type:str] env: ENC[AES256_GCM,data:a2m3FI0SmpbM2hhNbEdNhWWxgNyhXRDN9/LFiRMyFEr9Nf3NvkteZCdf/CCc81GAl/aKqqqCt49HQEiSRwzw2wc3XKmbQPxw6tmK4mCd4pP7YmPpg6tacLd8CzjtCG9J248W0qqTYUIU3+kuDcY6Tdp97KxJDINVbA==,iv:kXltdSsKkXwhIaWywFYMUGJCmMgaxv8FqhdBbjuyVSU=,tag:GvkevELXFKU31mmRGsFjDw==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age16k5tturaeszpxugxawmfsxkrce2cfvp06s00eaxcee243anu4qysnjfr70 - recipient: age16k5tturaeszpxugxawmfsxkrce2cfvp06s00eaxcee243anu4qysnjfr70
enc: | enc: |
@ -58,7 +60,8 @@ sops:
WVUwaEIwWTFFTExyT3hLSC9wODhJdGcKWsNIUsT06qYA9vUVeFHQrCdcn2MkHt+w WVUwaEIwWTFFTExyT3hLSC9wODhJdGcKWsNIUsT06qYA9vUVeFHQrCdcn2MkHt+w
Rr7W+4uaNb8Qxo/NUp9kodE9m/fg9XVd8wM7HUP4wJC0rE4GSnFvGg== Rr7W+4uaNb8Qxo/NUp9kodE9m/fg9XVd8wM7HUP4wJC0rE4GSnFvGg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-09-03T12:29:15Z" lastmodified: "2022-09-27T13:16:21Z"
mac: ENC[AES256_GCM,data:K7Q4h102XDk6s0jy6X3sRzIESbFnu8Z1I8u82yC2Xbfh8gHvQ+rqTjEC9sh+tmUpB9P8sQHA08FwPsQkiScY7CNVxXXeCzALJVS/qhLlOEC4PEOqUH2PZZHsDVslQtZT6JmB9mixCl69Ihx+CKt2+ddesXdGxuTGaH9cldORNQQ=,iv:RheBWo3bG9z+JAq2kg79ifaMRgRDNGyxHnCmMi7v/+U=,tag:CJUHJC68Cfi+whhy4McBqA==,type:str] mac: ENC[AES256_GCM,data:UkvaiVtsbMKNeMKlf6N6N0dxQWAUxT2VMQrhMJFqwdyRoFvTQ+4a27sXHIQgr+G+BAnsFBeWFjA3SS+YhHcDYCx1boXMhdoFeNjVZ2TUURX/KazcIwJNGmrt4qMK7BkfUu1mLa58pxie+XSY1MBRwByg7rnLaSJzNiWgqgLRGy0=,iv:7kBE0EKhvesWToa6+At0yWt1IzTWipv0fSvopA2PUXg=,tag:0e+5Gu5Ajw7r3AgeJLg+EQ==,type:str]
pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.7.3