Compare commits

...

39 Commits

Author SHA1 Message Date
fd94cff63e
rpi4: add some options for authelia (wip) 2024-07-14 00:25:16 -04:00
e486b9dfc5
move authelia into separate file 2024-07-13 21:54:40 -04:00
ad2496f4c7
minor remove test thing (squash later) 2024-07-13 21:54:40 -04:00
258285163e
rpi4: submodule extension test 2024-07-13 21:54:40 -04:00
fb6d940214
system: install gpg + all agents into system path 2024-07-13 21:52:36 -04:00
e65ea558c5
nullbox: update notlite 2024-07-13 17:20:10 -04:00
7731df0380
nullbox: Update notlite modpack 2024-07-13 15:22:28 -04:00
ac31e525cf
rpi4: separate htpasswd for octoprint camera proxy 2024-07-12 14:52:47 -04:00
fb802d50f8
secrets: htpasswd-age 2024-07-12 11:31:16 -04:00
b4485c3d25
system: remove android-tools backport stuff
android-tools is up-to-date on all branches, so it is no longer needed.
2024-07-10 17:02:55 -04:00
dbe6810560
flake.nix: update stable branch to 24.05 2024-07-10 16:59:24 -04:00
6b857af20b
home: (temp fix) remove broken package picard 2024-07-10 13:29:27 -04:00
b55e2a3371
Update flake.lock, migrate config 2024-07-10 13:16:03 -04:00
ba093e234b
oops i killed my btrfs partition :3
- see big scary warning at:
https://www.kernel.org/doc/Documentation/power/swsusp.txt
(don't hibernate your system and then mount the drive like i did because
i am fucking stupid)

the arch wiki never told me this
2024-07-09 00:49:31 -04:00
d1cb32f7ed
nullbox: add staging minecraft server config 2024-07-08 01:31:04 -04:00
868550d800
flake.nix: add custom nix-minecraft overlay
This overlay combines the upstream flake overlay with the overlay of my
custom fork. All server packages except Quilt will use the upstream
package definition, while Quilt server packages will use my fork.
2024-07-07 21:29:07 -04:00
e6ebd42de7
flake.nix: switch nix-minecraft to quilt fix 2024-07-07 18:46:22 -04:00
be58be3573
nullbox: add timesync ts to impermanence 2024-07-06 03:50:10 -04:00
f615228e86
slab: change kernel loglevel 2024-07-06 03:31:16 -04:00
2feb91b728
system: add utils arg passthrough 2024-07-05 21:33:40 -04:00
1e6fe4a8ef
system: set rescue password in systemd initrd 2024-07-05 18:34:31 -04:00
f5fd9b7187
slab: enable systemd initrd and plymouth 2024-07-05 02:21:19 -04:00
08c9e0d17a
slab: separate XBOOTLDR partition 2024-07-05 01:26:28 -04:00
f325a1ec51
flake.nix: add generic iso build 2024-07-05 00:09:34 -04:00
485d6464f4
nullbox: refactor volatile root 2024-07-04 03:23:52 -04:00
933916abdf
Update flake.lock 2024-07-03 20:45:03 -04:00
b61e2acb4f
system: only set initialPassword if mutable users 2024-07-03 18:57:10 -04:00
8f7e6a72c1
rpi4: wait for dns before starting wireguard 2024-07-02 21:37:45 -04:00
b768644314
Update flake.lock 2024-07-01 20:09:55 -04:00
1106b5ef6e
system: update nvidia driver to stable 2024-07-01 19:11:57 -04:00
4bb13580fd
rpi4: set timezone 2024-07-01 14:20:17 -04:00
5f8740c206
rpi4: fix searxng issues
rpi4: fix searxng redirect

rpi4: fix searxng auth
2024-06-29 18:52:21 -04:00
765547b9f7
secrets: update htpasswd 2024-06-29 17:18:57 -04:00
4cfde30c74
rpi4: reverse proxy basic auth services 2024-06-29 17:10:48 -04:00
51b0e7c21b
rpi4: add htpasswd secret 2024-06-29 16:55:55 -04:00
22bb5eb564
slab: use shutdown for hibernate 2024-06-29 00:26:12 -04:00
9fc2a0198c
home/hyprland: enable waybar 2024-06-28 23:54:37 -04:00
147af92a85
system: install font-awesome 2024-06-28 23:36:23 -04:00
426d72e0f6
stylix: disable waybar styling
scaling looks weird, also too monotone right now
2024-06-28 23:35:15 -04:00
24 changed files with 505 additions and 205 deletions

207
flake.lock generated
View File

@ -10,11 +10,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1718371084,
"narHash": "sha256-abpBi61mg0g+lFFU0zY4C6oP6fBwPzbHPKBGw676xsA=",
"lastModified": 1720546205,
"narHash": "sha256-boCXsjYVxDviyzoEyAk624600f3ZBo/DKtUdvMTpbGY=",
"owner": "ryantm",
"repo": "agenix",
"rev": "3a56735779db467538fb2e577eda28a9daacaca6",
"rev": "de96bd907d5fbc3b14fc33ad37d1b9a3cb15edc6",
"type": "github"
},
"original": {
@ -176,6 +176,22 @@
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
@ -191,7 +207,7 @@
"type": "github"
}
},
"flake-compat_3": {
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1673956053,
@ -229,6 +245,24 @@
"inputs": {
"systems": "systems_6"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_7"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
@ -304,11 +338,11 @@
]
},
"locked": {
"lastModified": 1719180626,
"narHash": "sha256-vZAzm5KQpR6RGple1dzmSJw5kPivES2heCFM+ZWkt0I=",
"lastModified": 1720470846,
"narHash": "sha256-7ftA4Bv5KfH4QdTRxqe8/Hz2YTKo+7IQ9n7vbNWgv28=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "6b1f90a8ff92e81638ae6eb48cd62349c3e387bb",
"rev": "2fb5c1e0a17bc6059fa09dc411a43d75f35bb192",
"type": "github"
},
"original": {
@ -324,11 +358,11 @@
]
},
"locked": {
"lastModified": 1717476296,
"narHash": "sha256-ScHe38Tr+TxGURC17kby4mIIxOG3aJvZWXzPM79UnEk=",
"lastModified": 1719827415,
"narHash": "sha256-pvh+1hStXXAZf0sZ1xIJbWGx4u+OGBC1rVx6Wsw0fBw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "095ef64aa3b2ab4a4f1bf07f29997e21e3a5576a",
"rev": "f2e3c19867262dbe84fdfab42467fc8dd83a2005",
"type": "github"
},
"original": {
@ -354,11 +388,11 @@
]
},
"locked": {
"lastModified": 1718450675,
"narHash": "sha256-jpsns6buS4bK+1sF8sL8AaixAiCRjA+nldTKvcwmvUs=",
"lastModified": 1720108799,
"narHash": "sha256-AxRkTJlbB8r7aG6gvc7IaLhc2T9TO4/8uqanKRxukBQ=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "66d5b46ff94efbfa6fa3d1d1b66735f1779c34a6",
"rev": "a5c0d57325c5f0814c39110a70ca19c070ae9486",
"type": "github"
},
"original": {
@ -400,11 +434,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1719348396,
"narHash": "sha256-mkicHoAPk4VWXdPVD54K66/kWmAZJgO+v+b9TcS17B4=",
"lastModified": 1720453602,
"narHash": "sha256-7+PjJZn/jpqNkVKJ3AGVT9G601rVj/R8KkT+WWjhwyk=",
"ref": "refs/heads/main",
"rev": "c338acbb7dc64a735dadd0ae54f3b17d85a2a467",
"revCount": 4890,
"rev": "b03f41efec14273cf25c42d4cef326acc36cb319",
"revCount": 4913,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@ -429,11 +463,11 @@
]
},
"locked": {
"lastModified": 1714869498,
"narHash": "sha256-vbLVOWvQqo4n1yvkg/Q70VTlPbMmTiCQfNTgcWDCfJM=",
"lastModified": 1718746314,
"narHash": "sha256-HUklK5u86w2Yh9dOkk4FdsL8eehcOZ95jPhLixGDRQY=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "e06482e0e611130cd1929f75e8c1cf679e57d161",
"rev": "1b61f0093afff20ab44d88ad707aed8bf2215290",
"type": "github"
},
"original": {
@ -480,11 +514,11 @@
]
},
"locked": {
"lastModified": 1717881852,
"narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=",
"lastModified": 1720381373,
"narHash": "sha256-lyC/EZdHULsaAKVryK11lgHY9u6pXr7qR4irnxNWC7k=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "ec6938c66253429192274d612912649a0cfe4d28",
"rev": "5df0174fd09de4ac5475233d65ffc703e89b82eb",
"type": "github"
},
"original": {
@ -505,11 +539,11 @@
]
},
"locked": {
"lastModified": 1719316102,
"narHash": "sha256-dmRz128j/lJmMuTYeCYPfSBRHHQO3VeH4PbmoyAhHzw=",
"lastModified": 1720203444,
"narHash": "sha256-lq2dPPPcwMHTLsFrQ2pRp4c2LwDZWoqzSyjuPdeJCP4=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "1f6bbec5954f623ff8d68e567bddcce97cd2f085",
"rev": "a8c3a135701a7b64db0a88ec353a392f402d2a87",
"type": "github"
},
"original": {
@ -530,11 +564,11 @@
]
},
"locked": {
"lastModified": 1719067853,
"narHash": "sha256-mAnZG/eQy72Fp1ImGtqCgUrDumnR1rMZv2E/zgP4U74=",
"lastModified": 1720215857,
"narHash": "sha256-JPdL+Qul+jEueAn8CARfcWP83eJgwkhMejQYfDvrgvU=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "914f083741e694092ee60a39d31f693d0a6dc734",
"rev": "d5fa094ca27e0039be5e94c0a80ae433145af8bb",
"type": "github"
},
"original": {
@ -585,11 +619,11 @@
]
},
"locked": {
"lastModified": 1719111455,
"narHash": "sha256-rnIxHx+fLpydjMQsbpZ21kblUr/lMqSaAtMA4+qMMEE=",
"lastModified": 1720334033,
"narHash": "sha256-X9pEvvHTVWJphhbUYqXvlLedOndNqGB7rvhSvL2CIgU=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "4293f532d0107dfb7e6f8b34a0421dc8111320e6",
"rev": "685e40e1348007d2cf76747a201bab43d86b38cb",
"type": "github"
},
"original": {
@ -607,34 +641,56 @@
]
},
"locked": {
"lastModified": 1716948931,
"narHash": "sha256-wP2A/wbxE7h8u5iwlogkEevsIvx/dJmZlyoyy/2x3rE=",
"lastModified": 1720572381,
"narHash": "sha256-y3sXBK51k3LIqGvH48ObjVgzFa+GMOHRdr+2KABU12g=",
"owner": "Silveere",
"repo": "nix-minecraft",
"rev": "ffd41af3e7035bb033c30ef9758a4d41466d0de9",
"type": "github"
},
"original": {
"owner": "Silveere",
"ref": "quilt-revert",
"repo": "nix-minecraft",
"type": "github"
}
},
"nix-minecraft-upstream": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1720574857,
"narHash": "sha256-d54eAlQJ+8qJIeiBxjGT63qNgOhhx8G8h4UzmUUWXTU=",
"owner": "infinidoge",
"repo": "nix-minecraft",
"rev": "ab4790259bf8ed20f4417de5a0e5ee592094c7c3",
"rev": "94356ef03990fb5b8a3015a13df397ceb612ddc4",
"type": "github"
},
"original": {
"owner": "infinidoge",
"repo": "nix-minecraft",
"rev": "ab4790259bf8ed20f4417de5a0e5ee592094c7c3",
"type": "github"
}
},
"nix-wsl": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_2",
"flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_3",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1719220171,
"narHash": "sha256-xywM6JoGT8AwfoOFJBTv8GRlvNu8LYqqqMS/OQ6uCgE=",
"lastModified": 1720428387,
"narHash": "sha256-0vHxVNWTql555MZLb2kngrcjfNtsJKoYdyUivTibgnc=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "269411cfed6aab694e46f719277c972de96177bb",
"rev": "30ebd0beb2ed26e09bcd245d757504029f807cce",
"type": "github"
},
"original": {
@ -668,11 +724,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1719075281,
"narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=",
"lastModified": 1720031269,
"narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af",
"rev": "9f4128e00b0ae8ec65918efeba59db998750ead6",
"type": "github"
},
"original": {
@ -684,11 +740,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1719285171,
"narHash": "sha256-kOUKtKfYEh8h8goL/P6lKF4Jb0sXnEkFyEganzdTGvo=",
"lastModified": 1720571246,
"narHash": "sha256-nkUXwunTck+hNMt2wZuYRN+jf2ySRjKTzI0fo5TDH78=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "cfb89a95f19bea461fc37228dc4d07b22fe617c2",
"rev": "16e401f01842c5bb2499e78c1fe227f939c0c474",
"type": "github"
},
"original": {
@ -716,36 +772,20 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1719122173,
"narHash": "sha256-aEMsNUtqSPwn6l+LIZ/rX++nCgun3E9M3uSZs6Rwb7w=",
"lastModified": 1720553833,
"narHash": "sha256-IXMiHQMtdShDXcBW95ctA+m5Oq2kLxnBt7WlMxvDQXA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "906320ae02f769d13a646eb3605a9821df0d6ea2",
"rev": "249fbde2a178a2ea2638b65b9ecebd531b338cf9",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.11",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"pkg-android-tools": {
"locked": {
"lastModified": 1676239704,
"narHash": "sha256-eKJDKTzI/uHNmfOX1Ln7Y1cjyA9XAkf5vyWdz03EXAA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "55070e598e0e03d1d116c49b9eff322ef07c6ac6",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "55070e598e0e03d1d116c49b9eff322ef07c6ac6",
"type": "github"
}
},
"root": {
"inputs": {
"agenix": "agenix",
@ -757,15 +797,15 @@
"impermanence": "impermanence",
"nix-index-database": "nix-index-database",
"nix-minecraft": "nix-minecraft",
"nix-minecraft-upstream": "nix-minecraft-upstream",
"nix-wsl": "nix-wsl",
"nixfiles-assets": "nixfiles-assets",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",
"nixpkgs-yt-dlp-2024": "nixpkgs-yt-dlp-2024",
"pkg-android-tools": "pkg-android-tools",
"rust-overlay": "rust-overlay",
"stylix": "stylix",
"systems": "systems_7"
"systems": "systems_8"
}
},
"rust-overlay": {
@ -775,11 +815,11 @@
]
},
"locked": {
"lastModified": 1719281921,
"narHash": "sha256-LIBMfhM9pMOlEvBI757GOK5l0R58SRi6YpwfYMbf4yc=",
"lastModified": 1720577957,
"narHash": "sha256-RZuzLdB/8FaXaSzEoWLg3au/mtbuH7MGn2LmXUKT62g=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "b6032d3a404d8a52ecfc8571ff0c26dfbe221d07",
"rev": "a434177dfcc53bf8f1f348a3c39bfb336d760286",
"type": "github"
},
"original": {
@ -797,7 +837,7 @@
"base16-kitty": "base16-kitty",
"base16-tmux": "base16-tmux",
"base16-vim": "base16-vim",
"flake-compat": "flake-compat_3",
"flake-compat": "flake-compat_4",
"gnome-shell": "gnome-shell",
"home-manager": [
"home-manager"
@ -926,6 +966,21 @@
"type": "github"
}
},
"systems_8": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
@ -943,11 +998,11 @@
]
},
"locked": {
"lastModified": 1718619174,
"narHash": "sha256-FWW68AVYmB91ZDQnhLMBNCUUTCjb1ZpO2k2KIytHtkA=",
"lastModified": 1720194466,
"narHash": "sha256-Rizg9efi6ue95zOp0MeIV2ZedNo+5U9G2l6yirgBUnA=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "c7894aa54f9a7dbd16df5cd24d420c8af22d5623",
"rev": "b9b97e5ba23fe7bd5fa4df54696102e8aa863cf6",
"type": "github"
},
"original": {

View File

@ -2,7 +2,7 @@
description = "NixOS Configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
# ^^^^^^^^^^^^^ this part is optional
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
@ -21,12 +21,13 @@
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
# 33.0.3p2 as suggested by https://xdaforums.com/t/guide-january-3-2024-root-pixel-7-pro-unlock-bootloader-pass-safetynet-both-slots-bootable-more.4505353/
# android tools versions [ 34.0.0, 34.0.5 ) causes bootloops somehow and 34.0.5 isn't in nixpkgs yet
pkg-android-tools.url = "github:NixOS/nixpkgs/55070e598e0e03d1d116c49b9eff322ef07c6ac6";
nix-minecraft = {
url = "github:infinidoge/nix-minecraft/ab4790259bf8ed20f4417de5a0e5ee592094c7c3";
url = "github:Silveere/nix-minecraft/quilt-revert";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
nix-minecraft-upstream = {
url = "github:infinidoge/nix-minecraft";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
@ -89,11 +90,19 @@
lib = nixpkgs.lib;
systems = [ "x86_64-linux" "aarch64-linux" ];
overlays = [
/* android-tools 33.0.3p2 */ (final: prev: {
inherit (inputs.pkg-android-tools.legacyPackages.${final.system})
android-tools android-udev-rules;
})
overlays = let
nix-minecraft-patched-overlay = let
normal = inputs.nix-minecraft-upstream.overlays.default;
quilt = inputs.nix-minecraft.overlays.default;
in lib.composeExtensions
normal
(final: prev: let
x=quilt final prev;
in {
inherit (x) quiltServers quilt-server;
minecraftServers = prev.minecraftServers // x.quiltServers;
});
in [
(final: prev: let
packages = import ./pkgs { inherit (prev) pkgs; };
in {
@ -110,7 +119,7 @@
inputs.hyprwm-contrib.overlays.default
inputs.rust-overlay.overlays.default
inputs.nixfiles-assets.overlays.default
inputs.nix-minecraft.overlays.default
nix-minecraft-patched-overlay
# inputs.hypridle.overlays.default
(final: prev: { inherit (inputs.hypridle.packages.${prev.system}) hypridle; })
];
@ -121,10 +130,11 @@
# My current timezone for any mobile devices (i.e., my laptop)
mobileTimeZone = "America/New_York";
# TODO this was something for android-tools. overlays are a better way to
# define packages anyway, probably remove this.
#
# define extra packages here
mkExtraPkgs = system: {
# android-tools = inputs.pkg-android-tools.legacyPackages.${system}.android-tools;
inherit (inputs.pkg-android-tools.legacyPackages.${system}) android-tools android-udev-rules;
};
# Variables to be passed to NixOS modules in the vars attrset
@ -255,6 +265,20 @@
in
mkSystem (args // override);
mkISOSystem = system: inputs.nixpkgs-unstable.lib.nixosSystem {
inherit system;
modules = [
"${inputs.nixpkgs-unstable}/nixos/modules/installer/cd-dvd/installation-cd-minimal-new-kernel-no-zfs.nix"
({ config, pkgs, lib, ... }:
{
environment.systemPackages = with pkgs; [
neovim
gparted
];
})
];
};
# values to be passed to nixosModules and homeManagerModules wrappers
moduleInputs = {
inherit mkExtraPkgs;
@ -322,13 +346,20 @@
nixosModules = (import ./modules/nixos) moduleInputs;
homeManagerModules = (import ./modules/home-manager) moduleInputs;
packages = eachSystem (system: let pkgs = import nixpkgs { inherit system; };
in import ./pkgs { inherit pkgs; });
in (
import ./pkgs { inherit pkgs; }) // {
iso = let
isoSystem = mkISOSystem system;
in isoSystem.config.system.build.isoImage;
}
);
apps = eachSystem (system: import ./pkgs/apps.nix
{ inherit (self.outputs) packages; inherit system; });
overlays = import ./overlays self;
nixosConfigurations = {
iso = mkISOSystem "x86_64-linux";
slab = mkSystem {
nixpkgs = inputs.nixpkgs-unstable;
home-manager = inputs.home-manager-unstable;

View File

@ -58,6 +58,9 @@ in
];
programs = {
waybar = {
enable = true;
};
swaylock = {
enable = true;

View File

@ -1,4 +1,4 @@
{ config, lib, pkgs, osConfig ? { }, ...}:
{ config, lib, pkgs, inputs, osConfig ? { }, ...}:
let
cfg = config.nixfiles.packageSets.multimedia;
inherit (lib) optionals mkEnableOption mkIf;
@ -16,6 +16,8 @@ in
};
config = mkIf cfg.enable {
assertions = [ { assertion = inputs.nixpkgs-unstable.sourceInfo.lastModified <= 1720571246; message = "re-add picard and remove this assertion"; } ];
home.packages = with pkgs; optionals config.nixfiles.meta.graphical [
mpv
gimp
@ -24,7 +26,7 @@ in
obs-studio
nomacs
audacity
picard
# picard
spicetify-cli
] ++ [
yt-dlp

View File

@ -61,6 +61,7 @@ let
${pkgs.systemd}/bin/systemctl --user restart xdg-desktop-portal.service
'';
bar-cmd = "${pkgs.waybar}/bin/waybar";
# Hyprland workspace configuration
mainWorkspaces = builtins.genList (x: x+1) (9 ++ [0]);
workspaceName = key: let
@ -152,6 +153,7 @@ in
polkit-agent
idle-cmd
xdpg-workaround
bar-cmd
];
# Source a file (multi-file configs)

View File

@ -9,6 +9,7 @@
targets.fzf.enable = lib.mkDefault false;
# the ring is styled light so it's light on light which looks worse than the default theme
targets.swaylock.enable = lib.mkDefault false;
targets.waybar.enable = lib.mkDefault false;
}
# only if styix is standalone
(lib.mkIf (!(args ? osConfig && args.osConfig ? stylix)) {

View File

@ -1,39 +1,30 @@
{ pkgs, config, lib, ... }:
let
mkBtrfsInit = { prefix ? "",
volume }:
inherit (lib) escapeShellArg;
# (wip) more configurable than old one, will be used by volatile btrfs module
mkBtrfsInit = { volatileRoot ? "/volatile",
oldRoots ? "/old_roots",
volume }:
''
mkdir /btrfs_tmp
mount ${volume} /btrfs_tmp -o subvol=/
mkdir -p /btrfs_tmp
mount ${escapeShellArg volume} /btrfs_tmp -o subvol=/
# unix is fine with multiple consecutive slashes if prefix is empty or
# contains a leading or trailing slash
mkdir -p "/btrfs_tmp/${prefix}/"
# ensure subvol parent directory exists
mkdir -p $(dirname /btrfs_tmp/${escapeShellArg volatileRoot})
if [[ -e "/btrfs_tmp/${prefix}/volatile" ]] ; then
mkdir -p "/btrfs_tmp/${prefix}/old_roots"
timestamp=$(date --date="@$(stat -c %Y "/btrfs_tmp/${prefix}/volatile")" "+%Y-%m-%-d_%H:%M:%S")
mv "/btrfs_tmp/${prefix}/volatile" "/btrfs_tmp/${prefix}/old_roots/$timestamp"
if [[ -e /btrfs_tmp/${escapeShellArg volatileRoot} ]] ; then
mkdir -p /btrfs_tmp/${escapeShellArg oldRoots}
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/${escapeShellArg volatileRoot})" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/${escapeShellArg volatileRoot} /btrfs_tmp/${escapeShellArg oldRoots}/"$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
# btrfs subvolume delete "$1"
echo would run: btrfs subvolume delete "$1"
echo remove this echo once you see this message
}
for i in $(find /btrfs_tmp/${prefix}/old_roots/ -maxdepth 1 -mtime +30); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/${prefix}/volatile
btrfs subvolume create /btrfs_tmp/${escapeShellArg volatileRoot}
umount /btrfs_tmp
# TODO implement deletion once system is booted. the old implementation did
# it here, which is not safe until system time is at least monotonic.
# systemd tmpfiles is good enough, just mount it to somewhere in /run
'';
root_vol = "/dev/archdesktop/root";
@ -46,7 +37,13 @@ in {
options = [ "subvol=/nixos/@persist" ];
};
boot.initrd.postDeviceCommands = lib.mkAfter (mkBtrfsInit { prefix = "nixos"; volume = root_vol; });
# TODO volatile btrfs module
boot.initrd.postDeviceCommands = lib.mkAfter (mkBtrfsInit {
volume = root_vol;
volatileRoot = "/nixos/volatile";
oldRoots = "/nixos/old_roots";
});
fileSystems."/" = lib.mkForce {
device = root_vol;
fsType = "btrfs";
@ -91,6 +88,7 @@ in {
"/var/lib/NetworkManager"
"/var/lib/power-profiles-daemon"
"/var/lib/systemd/rfkill"
"/var/lib/systemd/timesync"
{ directory = "/var/lib/tailscale"; mode = "0700"; }
"/var/lib/unbound"
"/var/db/sudo/lectured"
@ -107,7 +105,6 @@ in {
users.mutableUsers = false;
users.users.nullbite.hashedPasswordFile = "/persist/passfile/nullbite";
users.users.nullbite.initialPassword = null;
users.users.root.hashedPasswordFile = "/persist/passfile/root";
};
}

View File

@ -22,12 +22,12 @@ in
SUBVOLUME = "/srv/mcserver";
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_MIN_AGE = "1800";
TIMELINE_LIMIT_HOURLY = "36";
TIMELINE_LIMIT_DAILY = "14";
TIMELINE_LIMIT_WEEKLY = "4";
TIMELINE_LIMIT_MONTHLY = "12";
TIMELINE_LIMIT_YEARLY = "10000";
TIMELINE_MIN_AGE = 1800;
TIMELINE_LIMIT_HOURLY = 36;
TIMELINE_LIMIT_DAILY = 14;
TIMELINE_LIMIT_WEEKLY = 4;
TIMELINE_LIMIT_MONTHLY = 12;
TIMELINE_LIMIT_YEARLY = 10000;
};
};
@ -37,10 +37,10 @@ in
dataDir = "/srv/mcserver";
servers = let
notlite-modpack = let
commit = "9e96ad3";
commit = "7697c3a";
in pkgs.fetchPackwizModpack {
url = "https://gitea.protogen.io/nullbite/notlite/raw/commit/${commit}/pack.toml";
packHash = "sha256-N3Pdlqte8OYz6wz3O/TSG75FMAV+XWAipqoXsYbcYDQ=";
packHash = "sha256-/IA/NP1w9RcWg+71lxUN+Q3hz12GhN/e4lkSnaYyAb4=";
};
# hack to make quilt work. requires manual installation.
@ -48,7 +48,25 @@ in
shimPackage = pkgs.writeShellScriptBin "minecraft-server" ''
exec ${pkgs.jre_headless}/bin/java $@ -jar ./quilt-server-launch.jar nogui
'';
nulllite-staging = let
commit = "b8c639a";
packHash = "sha256-HTDVIkcBf0DyLbSCuU08/HnEQuesi3cmXXhB4y4lyko=";
in pkgs.fetchPackwizModpack {
url = "https://gitea.protogen.io/nullbite/nulllite/raw/commit/${commit}/pack.toml";
inherit packHash;
};
in {
nulllite-staging = {
useRecommendedDefaults = true;
enable = true;
autoStart = false;
modpack = nulllite-staging;
modpackSymlinks = [ "mods" ];
modpackFiles = [ "config/" ];
serverProperties.server-port = 25574;
serverProperties.motd = "staging server";
};
notlite = {
useRecommendedDefaults = true;
enable = true;

89
hosts/rpi4/authelia.nix Normal file
View File

@ -0,0 +1,89 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) types;
inherit (builtins) isNull;
getUpstreamFromInstance = instance: let
inherit (config.services.authelia.instances.${instance}.settings) server;
inherit (server) port;
host = if server.host == "0.0.0.0" then "127.0.0.1"
else if lib.hasInfix ":" server.host then
throw "TODO IPv6 not supported in Authelia server address (hard to parse, can't tell if it is [::])."
else server.host;
in "http://${host}:${port}";
in
{
# authelia
options.services.nginx = let
mkAttrsOfSubmoduleOpt = module: lib.mkOption { type = with types; attrsOf (submodule module); };
# make system config accessible from submodules
systemConfig = config;
# submodule definitions
vhostModule = { name, config, ... }@attrs: {
options = {
locations = mkAttrsOfSubmoduleOpt (locationModule' attrs);
authelia = {
endpoint = {
instance = lib.mkOption {
description = ''
Local Authelia instance to act as the authentication endpoint.
This virtualHost will be configured to provide the
public-facing authentication service.
'';
type = with types; nullOr str;
default = null;
};
upstream = lib.mkOption {
description = ''
Internal URL of the Authelia endpoint to forward authentication
requests to.
'';
type = with types; nullOr str;
default = null;
};
};
instance = lib.mkOption {
description = ''
Local Authelia instance to use. Setting this option will
automatically configure Authelia on the specified virtualHost
with the given instance of Authelia.
'';
type = with types; nullOr str;
default = null;
};
upstream = lib.mkOption {
description = ''
Internal URL of the Authelia endpoint to forward authorization
requests to. This should not be the public-facing authentication
endpoint URL.
'';
};
};
};
config = {
authelia.upstream = lib.mkIf (!(isNull config.authelia.instance))
(getUpstreamFromInstance config.authelia.instance);
authelia.endpoint.upstream = lib.mkIf (!(isNull config.authelia.endpoint.instance))
(getUpstreamFromInstance config.authelia.endpoint.instance);
};
};
locationModule' = vhostAttrs: { name, config, ... }: let
vhostConfig = vhostAttrs.config;
in {
};
in {
virtualHosts = mkAttrsOfSubmoduleOpt vhostModule;
};
# TODO check if any vhosts have authelia configured
config = lib.mkIf false {
assertions = [
# TODO vhost cannot be both auth endpoint and regular reverse proxy
];
};
}

View File

@ -37,6 +37,10 @@
file = ../../secrets/wireguard-rpi4.age;
};
services.tailscale.enable = true;
systemd.services.wg-quick-wg0.serviceConfig.execStartPre = pkgs.writeShellScript "wait-dns" ''
until ${lib.getExe pkgs.getent} ahostsv4 example.com ; do echo sleep 1 ; done
'';
networking.wg-quick.interfaces.wg0 = {
configFile = config.age.secrets.wg0.path;
autostart = true;
@ -59,7 +63,7 @@
# networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
# time.timeZone = "Europe/Amsterdam";
time.timeZone = "America/New_York";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";

View File

@ -2,6 +2,7 @@
{
imports = [
./gitea.nix
./authelia.nix
];
config = {
@ -10,6 +11,17 @@
group = "secrets";
};
age.secrets.htpasswd-cam = {
file = ../../secrets/htpasswd-cam.age;
group = "nginx";
mode = "0750";
};
age.secrets.htpasswd = {
file = ../../secrets/htpasswd.age;
group = "nginx";
mode = "0750";
};
users.groups.secrets = {};
users.users.acme.extraGroups = [ "secrets" ];
@ -60,14 +72,35 @@
'';
virtualHosts = let
mkReverseProxy = port: {
useACMEHost = "protogen.io";
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${builtins.toString port}";
proxyWebsockets = true;
};
};
useACMEHost = "protogen.io";
mkProxy = args@{ upstream ? "http://127.0.0.1:${builtins.toString args.port}", auth ? false, extraConfig ? {}, ... }:
lib.mkMerge [
{
inherit useACMEHost;
forceSSL = true;
locations."/" = {
proxyPass = upstream;
proxyWebsockets = true;
};
}
(lib.mkIf auth {
basicAuthFile = config.age.secrets.htpasswd.path;
})
extraConfig
];
# mkReverseProxy = port: {
# inherit useACMEHost;
# forceSSL = true;
# locations."/" = {
# proxyPass = "http://127.0.0.1:${builtins.toString port}";
# proxyWebsockets = true;
# };
# };
mkAuthProxy = port: mkProxy { inherit port; auth = true; };
mkReverseProxy = port: mkProxy { inherit port; };
in {
# TODO change all these with a vim macro when i learn how to extend submodules
"changedetection.protogen.io" = mkReverseProxy 5000;
@ -78,15 +111,39 @@
"hass.protogen.io" = mkReverseProxy 8123;
"node.protogen.io" = mkReverseProxy 1880;
# z2m auth 8124
"z2m.protogen.io" = mkAuthProxy 8124;
"room.protogen.io" = mkReverseProxy 8096;
# deemix auth 8096
"deemix.protogen.io" = mkAuthProxy 6595;
# libreddit auth 8087
"libreddit.protogen.io" = mkAuthProxy 8087;
"rss.protogen.io" = mkReverseProxy 8082;
"blahaj.protogen.io" = mkReverseProxy 8086;
# octoprint (proxy_addr is 10.10.1.8)
"print.protogen.io" = lib.mkMerge [ (mkProxy { auth = true; upstream = "http://10.10.1.8:80"; })
{
locations."/webcam" = {
proxyPass = "http://10.10.1.8:80$request_uri";
proxyWebsockets = true;
basicAuthFile = config.age.secrets.htpasswd-cam.path;
};
}];
# searx auth 8088 (none for /favicon.ico, /autocompleter, /opensearch.xml)
"search.protogen.io".locations."/".return = "302 https://searx.protogen.io$request_uri";
"searx.protogen.io" = let
port = 8088;
in mkProxy { auth = true; inherit port; extraConfig = {
locations = lib.genAttrs [ "/favicon.ico" "/autocompleter" "/opensearch.xml" ] (attr: {
proxyPass = "http://localhost:${builtins.toString port}";
proxyWebsockets = true;
extraConfig = ''
auth_basic off;
'';
});
};};
# nbt.sh alias proot.link 8090
"nbt.sh" = mkProxy { port = 8090; extraConfig.serverAliases = [ "proot.link" ]; };
# admin.nbt.sh alias admin.proot.link 8091 auth
"admin.nbt.sh" = mkProxy { auth = true; port = 8091; extraConfig.serverAliases = [ "admin.proot.link" ]; };
# create track map todo later
"uptime.protogen.io" = mkReverseProxy 3001;
"kuma.protogen.io".locations."/".return = "301 https://uptime.protogen.io";

View File

@ -74,12 +74,20 @@
networking.hostName = "slab";
boot.initrd.systemd.enable = true;
boot.plymouth.enable = true;
boot.kernelParams = [ "quiet" ];
# annoying ACPI bug
boot.consoleLogLevel = 2;
# cryptsetup
boot.initrd.luks.devices = {
lvmroot = {
device="/dev/disk/by-uuid/2872c0f0-e544-45f0-9b6c-ea022af7805a";
allowDiscards = true;
fallbackToPassword = true;
fallbackToPassword = lib.mkIf (!config.boot.initrd.systemd.enable) true;
preLVM = true;
};
};
@ -88,7 +96,7 @@
boot.loader = {
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot";
efiSysMountPoint = "/efi";
};
# grub = {
# enable = true;
@ -97,10 +105,9 @@
# };
systemd-boot = {
enable = true;
xbootldrMountPoint = "/boot";
netbootxyz.enable = true;
memtest86.enable = true;
# grr oem efi partitions
configurationLimit = 4;
};
};
@ -110,6 +117,11 @@
unitConfig.DefaultDependencies = "no";
});
# might make hibernate better idk
systemd.sleep.extraConfig = ''
disk=shutdown
'';
services.logind = {
lidSwitch = "lock";
suspendKey = "hibernate";

View File

@ -14,42 +14,42 @@
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/5723dafa-81df-4bb4-a039-7f52b61cbb02";
{ device = "/dev/disk/by-uuid/9c2a06d8-bff5-4587-95a6-e25495e9c4ec";
fsType = "btrfs";
options = [ "subvol=nixos/@root" ];
options = [ "subvol=nixos/@" ];
};
# fileSystems."/boot" =
# { device = "/dev/disk/by-uuid/b9813c1d-5b6c-4026-9ee3-53ba80b90dc4";
# fsType = "ext4";
# };
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/5723dafa-81df-4bb4-a039-7f52b61cbb02";
{ device = "/dev/disk/by-uuid/9c2a06d8-bff5-4587-95a6-e25495e9c4ec";
fsType = "btrfs";
options = [ "subvol=nixos/@nix" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/4E1B-8BEE";
fsType = "vfat";
};
fileSystems."/.btrfsroot" =
{ device = "/dev/disk/by-uuid/5723dafa-81df-4bb4-a039-7f52b61cbb02";
fsType = "btrfs";
options = [ "subvol=/" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/5723dafa-81df-4bb4-a039-7f52b61cbb02";
{ device = "/dev/disk/by-uuid/9c2a06d8-bff5-4587-95a6-e25495e9c4ec";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/50D3-45F0";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
fileSystems."/efi" =
{ device = "/dev/disk/by-uuid/4E1B-8BEE";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/9360890a-4050-4326-bf5f-8fa2bdc6744a"; }
];
fileSystems."/.btrfsroot" =
{ device = "/dev/disk/by-uuid/9c2a06d8-bff5-4587-95a6-e25495e9c4ec";
fsType = "btrfs";
};
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's

View File

@ -1,34 +0,0 @@
{...}@moduleInputs:
{ config, lib, pkgs, ... }:
with lib;
let
extraPkgs = (moduleInputs.mkExtraPkgs pkgs.system);
in
{
meta.maintainers = [ maintainers.mic92 ];
disabledModules = [ "programs/adb.nix" ];
###### interface
options = {
programs.adb = {
enable = mkOption {
default = false;
type = types.bool;
description = lib.mdDoc ''
Whether to configure system to use Android Debug Bridge (adb).
To grant access to a user, it must be part of adbusers group:
`users.users.alice.extraGroups = ["adbusers"];`
'';
};
};
};
###### implementation
config = mkIf config.programs.adb.enable {
services.udev.packages = [ extraPkgs.android-udev-rules ];
environment.systemPackages = [ extraPkgs.android-tools ];
users.groups.adbusers = {};
};
}

View File

@ -1,4 +1,3 @@
{...}@moduleInputs:
{
adb = (import ./adb-old.nix) moduleInputs;
}

BIN
secrets/htpasswd-cam.age Normal file

Binary file not shown.

45
secrets/htpasswd.age Normal file
View File

@ -0,0 +1,45 @@
age-encryption.org/v1
-> ssh-ed25519 YUrFgQ yt/xvo+tCV4d9w15bYOImW5TLiBuj4HEk5x6iUAs9GA
8UwA9C3aM4e/L8Q6D2Q2WPtYvfb0pknxc4xZhl/yrf0
-> ssh-rsa I7EAZw
LQgq2oU/12z0cUSmCxyT4pSpE0OlPdeue33bdMpb41oMVpsEJPgg374HffHIGejm
6rvjHDYUhNcUobr0SFHhn4Rl29NCTKXNfbhcPrKkWoQPsIhlC/ZMNq0pVRG5vdsm
aj42JQG3xoytyaE0KfevmPtBFS7/e7kEojBOzPzs8pcw9EaYZFPVz56YPh3Z31K6
4OXhDrBLkiDc0bpjUlVfJGtlejBGWIlqtIoNGMmMVQJpXUUbJwm6RdGhGXUCvSHR
LdcU3RO5sJtiSUs9ur49GyFiiF6WjhE4vJpUhw94rvaKYmeS+JcgFPcl3+pp0K6/
JEv26WH5Ch0QNPY+MxnGVHCzGMiOEYOuiGYdxoNLZVZ31Btn4sA/2lS7wDrX9ptG
V0Iv58tD+7qkcH7ZJltwMcXAO28ELYANm+TaNnzmMqbNiBMt+BpflLCZNnyWu2ws
e8cvlPGhLKYRy3Cq0N3KrK0grje+eC2C9T1f48o1FjO8fGkSRL4IGeUbwK3c/rnF
-> ssh-rsa 0pGLuA
q6HsqeQLV4HXhcQDX0GT5CHKfEsK7N5BY5hHwCGZyPF0LPfrCjc8guhFxtpsHmKF
b8EjF+o4s+M37nrY8oW1Xq/MzX7EBbNCcr0qIN6WWr8ihDOM/ylSh0XDTiFU+ZOi
viVnIcy0GZ6pqNT8yd9rh4N3kQsNBsuJJQ9rs/IDdirnvYjzVRfFyUfRt1WgeA1d
0vLlucnYEwE83OnjrIh7pZm8yl/onl7kSUSvRkJU4NiT8V1zcwbzOYK4iyIPgbF4
AWiHqdQLouShVZYd0E1gOaMVhDlkiAz82GZvfVbc+OQDRHSP1dMrn88yYC+jxO/d
TwhAnz2NplggBxFofIq2dHsrgDlg8ZuwqXRtTA37f8Fz7HDrfkT430BA9Nkwo6f1
3ACHhWWE7CSAwJg/aUcq+emnoEstGUHKGPBvBKzTO4UCu+8exKnYqICMo52R5rOr
QFoNU+Xh6i/vnGE9vLB+ef+Qu8f62ZjzJDufkhUyJ9lH5mC78nb/Wev3HoeK04M0
-> ssh-rsa JoBDow
NpYBW5RnOkkUxV/D3fJof5NY5IENTk37GLtp7B9UHw+qDIKzwDUJsLW7siEeReni
anPtltPQVfdNCtCESlaN25VGMKmMEFxqI4jdeABgJ75zih6H1YDHEsFXco55q3SQ
NBJQrE4KzDd6lmYwVengPe4Dluq9ERqqtIKFifyQHAbC+JNa/j/TWRpYJ06OuM1W
uYyxBijVT1PAOs/pcD62gELikoBk0VnsmptZgvLxskO+9XPoZ7XAHUt31yT4Rdaa
gHHvpbUyPXcdQ9gcJ8hArfWwPAkenVHsV4xpdo7AOA86MP9bUtNg6sK7ERae1tPK
P7YChlRfqOPs9i42zuPElAhhkoEWc/2vLMQYw1mrPq3NVkxkyPLZAg+7VE8R5pIn
PR+GUmF7PAwNinQSnH+qO19hkC9CRAuRWJudyaZzz8g0zmTdK8QjEhmBdcVz6ld0
jSW58P63EQMtMG3+wk7FecySroA77tVqhGX7pnWH5SuVC+iFU6BZYUgYcTPume+V
-> ssh-rsa wzTCUg
Zm+akdwAssHoa/AaKna+aUbLxduwMkbeVNzVVqZSTUGLiW2x+XifLLytPQzO6tzd
0WS8QDwMzs0xVVP3ySBNgtxqdpUwPBrEPQlSBoC+k82oobvnPp3bQHi6rUmQxxfT
XLduTCQiQ5KB+2VrZmrk9HGzjOhtX+Up1+oRumNk5y5GUQcs0G10dkStR8oK8o5v
E2eDpdGY72xV3mf1gSdjpAzW3XDNUVcYXwfFqtDrE6kAGxzRGjyL3/UXQIsC2HVx
SQKCx1+hO8CCUAHgUk1cJDfOT1F8Nb6prBx/U0Z3Sh7z1cewLPYgXu2ikWmbWpPm
Lfe1UJ4L3SwVr7n+S6pAviaXoALgaUWXc77EEE6il2/3qEY6PsBbfQ2ARvJ9l4Ii
O/0mS4e7AUjANpjQxJmS7CMHIXC+TWIi+QYESQznd6fXbnskaxs3y0u01Oz/KalL
rVALt7UNhanhKVOqszR+lqdXVpsfbzknNJuUVleJQPbF8dEJ4VJ+kV/2oAs3vncc
--- V9+Pd5j6tALKKHeNBxdTYIu6mJZZcwAiBwvPxEQGGg4
H?ò¥R]¯Ä >¿fEåtW<19>PßÔxš'Ÿæ03H¤…[ ããGÂoÈfÃa<C383>{àMD¤; 1°u «ð5” €r…y{—ê:>_0ù™[iÊÝJ1<4A>ê×`¨SÛ¡ˆ¥“ÌcQ¾ô<C2BE> :¾7V`/áÚi^k.r·iždZjØóVšZ«hø*ó6Õl°5MýÁb—ÒãhÆ'Kjy1VêîO<C3AE>P+_1 =

View File

@ -14,5 +14,7 @@ in
{
"cloudflare-dns.age".publicKeys = [ rpi4 ] ++ all-user;
"wireguard-rpi4.age".publicKeys = [ rpi4 ] ++ all-user;
"htpasswd.age".publicKeys = [ rpi4 ] ++ all-user;
"htpasswd-cam.age".publicKeys = [ rpi4 ] ++ all-user;
}

View File

@ -13,7 +13,7 @@ in
# ];
options.nixfiles.common.desktop = {
enable = mkEnableOption "common desktop options";
enable = mkEnableOption "common desktop configuration";
};
config = mkIf cfg.enable {
@ -50,6 +50,7 @@ in
fonts.packages = with pkgs; [
(nerdfonts.override { fonts = [ "FiraCode" ]; })
font-awesome
noto-fonts-cjk
(google-fonts.override { fonts = [ "NovaSquare" ];})
];

View File

@ -16,8 +16,12 @@ in
packages = with pkgs; [
keychain
];
initialPassword = lib.mkDefault "changeme";
shell = pkgs.zsh;
# this should only be configured if mutableUsers is enabled, otherwise it
# behaves the same as `password` and takes precedence over
# `hashedPasswordFile`, which is undesirable.
initialPassword = lib.mkIf config.users.mutableUsers (lib.mkDefault "changeme");
};
users.groups.nullbite.gid = 1000;

View File

@ -1,4 +1,4 @@
{ pkgs, config, lib, options, nixpkgs, home-manager, inputs, ... }@args:
{ pkgs, config, lib, options, nixpkgs, home-manager, inputs, utils, ... }@args:
let
cfg = config.nixfiles;
flakeType = cfg.lib.types.flake;
@ -30,6 +30,12 @@ in
type = lib.types.bool;
};
utils = lib.mkOption {
description = "nixpkgs `utils` argument passthrough";
default = utils;
readOnly = true;
};
workarounds.nvidiaPrimary = lib.mkOption {
description = "Whether to enable workarounds for NVIDIA as the primary GPU";
default = false;

View File

@ -68,7 +68,7 @@ in
nvidiaSettings = lib.mkDefault true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = lib.mkDefault nvidia_555;
package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.stable;
};
};
}

View File

@ -111,6 +111,10 @@ in
# kitty compatibility on all systems
kitty.terminfo
# GPG
gnupg
pinentry # i want all of them
];
# Needed for Kvantum themes to be detected
@ -129,6 +133,10 @@ in
enableSSHSupport = lib.mkDefault false;
};
# initrd rescue password (can store plain hash since it is extremely
# unlikely to be brute forced)
boot.initrd.systemd.emergencyAccess = "$2b$15$jljA4yma8GrD2LmvhrlUkuXWBry/0jhMnXs1qB1y/byBGXKq74wMK";
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
# see:

View File

@ -3,8 +3,6 @@ let
cfg = config.nixfiles.programs.adb;
in
{
# imports = [ outputs.nixosModules.adb ];
options.nixfiles.programs.adb = {
enable = lib.mkEnableOption "adb configuration";
};