feat: added other user themes

This commit is contained in:
Nick 2025-01-31 01:49:36 -06:00
parent 6cdbfedc93
commit 1635b0c845
40 changed files with 593 additions and 210 deletions

View file

@ -93,7 +93,7 @@ let
themesSubmodule = lib.types.submodule {
options = {
currentThemes = genOptions stringType "theme";
currentTheme = genOptions stringType "theme";
fonts = {
names = genOptions stringType "name";
sizes = {

View file

@ -0,0 +1,19 @@
{ devicesFunctions }:
let
inherit (devicesFunctions)
ownerExclusiveReadWriteMask
;
in
{
label = "Bartholomew";
name = "bartholomew";
sync = {
address0 = "";
};
ip = {
address0 = "192.168.50.42";
};
boot = {
options = ownerExclusiveReadWriteMask;
};
}

View file

@ -1,6 +1,7 @@
let
currentTheme0 = catppuccin-mocha;
currentTheme1 = catppuccin-macchiato;
currentTheme0 = catppuccin-mocha; # User0 Theme
currentTheme1 = catppuccin-mocha; # User1 Theme
currentTheme2 = catppuccin-mocha; # User2 Theme
brogrammer = "brogrammer";
catppuccin-frappe = "catppuccin-frappe";
@ -23,8 +24,10 @@ let
in
{
themes = {
currentThemes = {
theme0 = currentTheme0;
currentTheme = {
theme0 = currentTheme0; # User0 Theme
theme1 = currentTheme1; # User1 Theme
theme2 = currentTheme2; # User2 Theme
};
cursor = {
name = "";

60
flake.lock generated
View file

@ -20,11 +20,11 @@
]
},
"locked": {
"lastModified": 1737636397,
"narHash": "sha256-F5MbBj3QVorycVSFE9qjuOTLtIQBqt2VWbXa0uwzm98=",
"lastModified": 1738183445,
"narHash": "sha256-C1He3N1SA8D2u+TSlldbA9wiYwDvXI4GxX3zKaeD7qU=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "7fe006981fae53e931f513026fc754e322f13145",
"rev": "48a000cf35dd10bfeb231152735aebbe875f4b74",
"type": "github"
},
"original": {
@ -410,11 +410,11 @@
"zig": "zig"
},
"locked": {
"lastModified": 1738076396,
"narHash": "sha256-EHGwh2do2JEcYHxaXBq1H7z/S2FkbHEpnNWhvgAmpJ8=",
"lastModified": 1738275804,
"narHash": "sha256-n9cSCLlWjc8Bc5QyZYLo5+c6MfTZjgDpUGx/FGxBiY8=",
"owner": "ghostty-org",
"repo": "ghostty",
"rev": "603639ad44e82afbcd8cdb01d7050abf7c538e9b",
"rev": "c5508e7d1922842ecd3160ea73b97da1282168b3",
"type": "github"
},
"original": {
@ -520,11 +520,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1738073973,
"narHash": "sha256-+Bjgq2LuCrFQ8RA/25dWSAguFLH53TxoQZWuX7fb4gc=",
"lastModified": 1738284694,
"narHash": "sha256-vLDweuBMu8fOyo9YMiV/1p9gxH5/OVm8zKRkGpbcuUA=",
"owner": "helix-editor",
"repo": "helix",
"rev": "6049f2035be3e218da327b51d8e4bfd36242dd43",
"rev": "025719c1d82fd32a82d8d8a4a138842ed92480c1",
"type": "github"
},
"original": {
@ -567,11 +567,11 @@
]
},
"locked": {
"lastModified": 1737968762,
"narHash": "sha256-xiPARGKwocaMtv+U/rgi+h2g56CZZEmrcl7ldRaslq8=",
"lastModified": 1738275749,
"narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e1ae908bcc30af792b0bb0a52e53b03d2577255e",
"rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9",
"type": "github"
},
"original": {
@ -596,11 +596,11 @@
]
},
"locked": {
"lastModified": 1737634937,
"narHash": "sha256-Ffw4ujFpi++6pPHe+gCBOfDgAoNlzVPZN6MReC1beu8=",
"lastModified": 1738178255,
"narHash": "sha256-+D6Nu2ewXbMTFzx/Q4jDOo+LAOUPr0cxQJg5k33daIE=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "9c5dd1f7c825ee47f72727ad0a4e16ca46a2688e",
"rev": "dcadd3398abe146d60c67e0d9ee6e27b301cae82",
"type": "github"
},
"original": {
@ -625,11 +625,11 @@
]
},
"locked": {
"lastModified": 1737985436,
"narHash": "sha256-zx8FdI4zr2GhNyD1YGAqa2ymodAObTSAdwuWwVucewo=",
"lastModified": 1738018829,
"narHash": "sha256-5Ol5iahMlELx3lWuChyZsqqLk6sP6aqaJCJFw92OZGo=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "23783b96036f5506fdaf8b2250a1ef849d57f0d3",
"rev": "12cd7034e441a5ebfdef1a090c0788413b4a635b",
"type": "github"
},
"original": {
@ -681,11 +681,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1738107811,
"narHash": "sha256-+57jB0fv53OmAQ8QpK3eiRXfypBfKJtfdepRusNX+DM=",
"lastModified": 1738273002,
"narHash": "sha256-R1CWBSEHZhykHo3/H3M4U7zLv1QaS87JCTHas38TNiU=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "3d1dd6b5c7b90e513e86c1ad27c6c01a5c69e4f8",
"rev": "ef03f6911694413b1b06aba727ad9ab089a511f7",
"type": "github"
},
"original": {
@ -1096,11 +1096,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1737885589,
"narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=",
"lastModified": 1738142207,
"narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8",
"rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
"type": "github"
},
"original": {
@ -1135,11 +1135,11 @@
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1738121352,
"narHash": "sha256-/zTcxOuUlorG5xuVqZM74AEqyoUuvAGFgf7ZRsY0fB0=",
"lastModified": 1738282823,
"narHash": "sha256-F9Npwxwy6xoTLKYcWFeTsk7MTVKxK9IeT1lsSSCjExg=",
"owner": "nix-community",
"repo": "NUR",
"rev": "1c718529e3d4d262ad378d25faa009019d9f4a1a",
"rev": "6afe9691509edbfdcd9b2f4a703c6ed5c588255e",
"type": "github"
},
"original": {
@ -1704,11 +1704,11 @@
"rust-overlay": "rust-overlay_3"
},
"locked": {
"lastModified": 1738010151,
"narHash": "sha256-9kcGpfbl98SUrQT9Dj0TSj334LXSviGP1SI4P76QFYo=",
"lastModified": 1738174915,
"narHash": "sha256-oN18XGFcTwk58F8REqx3DTeCD+z3LAanWVznZ0P3ESc=",
"owner": "sxyazi",
"repo": "yazi",
"rev": "c061397a09bb08e293317f5b93dc870d453af9ef",
"rev": "b6cb1fa8d3fb3fafea7a190f23acaeb44333cfe9",
"type": "github"
},
"original": {

View file

@ -79,10 +79,11 @@
./systems/desktop
./profiles/user0
./profiles/user1
config.nixosModules.personal
config.nixosModules.desktop
config.nixosModules.hyprland
config.nixosModules.personal
config.nixosModules.shared
config.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
inputs.lix-module.nixosModules.default
inputs.nur.modules.nixos.default
@ -91,9 +92,11 @@
fallaryn = inputs.self.lib.mkLinuxSystem [
./systems/fallaryn
./profiles/user2
config.nixosModules.personal
config.nixosModules.fallaryn
config.nixosModules.personal
config.nixosModules.plasma
config.nixosModules.shared
config.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
inputs.lix-module.nixosModules.default
inputs.sops-nix.nixosModules.sops
@ -104,16 +107,27 @@
./profiles/user1
config.nixosModules.personal
config.nixosModules.shared
config.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
inputs.lix-module.nixosModules.default
inputs.nur.modules.nixos.default
inputs.sops-nix.nixosModules.sops
];
bartholomew = inputs.self.lib.mkLinuxSystem [
./systems/bartholomew
./profiles/user1
config.nixosModules.gnome
config.nixosModules.personal
config.nixosModules.shared
inputs.home-manager.nixosModules.home-manager
inputs.lix-module.nixosModules.default
];
server = inputs.self.lib.mkLinuxSystem [
./systems/server
./profiles/user0
config.nixosModules.server
config.nixosModules.shared
config.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
inputs.lix-module.nixosModules.default
inputs.ngipkgs.nixosModules."services.peertube"

View file

@ -27,6 +27,7 @@ in
flake.homeModules =
let
inherit (config.machines.devices)
bartholomew
desktop
fallaryn
laptop
@ -142,6 +143,30 @@ in
;
};
};
"${bartholomew.name}-${user1}" = {
imports = builtins.attrValues {
inherit (modules)
cli
catppuccin
gtk
brave
ghostty
zed
gaming
spotify
docs
mpv
jellyfin
kolourPaint
discord
signal
scrcpy
bitwarden
emote
desktop
;
};
};
"${server.name}-${user0}" = {
imports = builtins.attrValues {
inherit (modules)

View file

@ -1,15 +1,27 @@
{
flake,
config,
lib,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
palettes
;
inherit (flake.config.aesthetics.themes) currentTheme palettes;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
makeColor = c: "#" + c;
makeStyle = bg: fg: "bg:" + bg + " fg:" + fg + " bold";

View file

@ -1,16 +1,12 @@
{
flake,
config,
lib,
...
}:
let
configPath = ./config;
settingsPath = import (configPath + /settings.nix) {
inherit
flake
lib
;
};
settingsPath = import (configPath + /settings.nix) { inherit config flake lib; };
in
{
programs.starship = {

View file

@ -1,11 +1,29 @@
{ flake, ... }:
{
flake,
config,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
currentTheme
palettes
;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
in
{
colors = {

View file

@ -1,13 +1,13 @@
{ flake, ... }:
{
flake,
config,
...
}:
{
programs.bottom =
let
configPath = ./config;
settingsPath = import (configPath + /settings.nix) {
inherit
flake
;
};
settingsPath = import (configPath + /settings.nix) { inherit config flake; };
in
{
enable = true;

View file

@ -1,11 +1,26 @@
{ flake, ... }:
{
config,
flake,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
palettes
;
inherit (flake.config.aesthetics.themes) currentTheme palettes;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
in
{
accents = [

View file

@ -1,5 +1,6 @@
{
flake,
config,
lib,
pkgs,
...
@ -11,7 +12,7 @@ let
languagesPath = import (configPath + /languages);
lspPath = import (configPath + /lsp);
terminalPath = import (configPath + /terminal) { inherit flake; };
experimentalPath = import (configPath + /theme) { inherit flake; };
experimentalPath = import (configPath + /theme) { inherit config flake; };
gitPath = import (configPath + /git);
miscPath = import (configPath + /misc) { inherit lib pkgs; };
in

View file

@ -1,4 +1,5 @@
{
config,
flake,
lib,
pkgs,
@ -8,7 +9,14 @@ let
configPath = ./config;
extensionsPath = import (configPath + /extensions);
userKeymapsPath = import (configPath + /userKeymaps);
userSettingsPath = import (configPath + /userSettings) { inherit flake lib pkgs; };
userSettingsPath = import (configPath + /userSettings) {
inherit
config
flake
lib
pkgs
;
};
extraPackagesPath = import (configPath + /extraPackages) { inherit pkgs; };
in
{

View file

@ -1,11 +1,26 @@
{ flake, ... }:
{
flake,
config,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
palettes
;
inherit (flake.config.aesthetics.themes) currentTheme palettes;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
in
{
theme = {

View file

@ -1,21 +1,13 @@
{
config,
flake,
pkgs,
...
}:
let
configPath = ./config;
settingsPath = import (configPath + /settings.nix) {
inherit
flake
pkgs
;
};
themesPath = import (configPath + /themes.nix) {
inherit
flake
;
};
settingsPath = import (configPath + /settings.nix) { inherit flake pkgs; };
themesPath = import (configPath + /themes.nix) { inherit config flake; };
in
{
programs.ghostty = {

View file

@ -1,13 +1,31 @@
{ flake, ... }:
{
flake,
config,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
currentTheme
palettes
fonts
;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
makeColor = c: "#" + c;
in

View file

@ -1,11 +1,11 @@
{ flake, ... }:
{
config,
flake,
...
}:
let
configPath = ./config;
settingsPath = import (configPath + /settings.nix) {
inherit
flake
;
};
settingsPath = import (configPath + /settings.nix) { inherit config flake; };
in
{
services.dunst = {

View file

@ -1,12 +1,27 @@
{ flake, ... }:
{
config,
flake,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
palettes
;
inherit (flake.config.aesthetics.themes) currentTheme palettes;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
in
{
gaps_in = 5;

View file

@ -20,7 +20,7 @@ let
decoration = import (configPath + /decoration.nix);
dwindle = import (configPath + /dwindle.nix);
exec-once = import (configPath + /exec-once.nix) { inherit flake; };
general = import (configPath + /general.nix) { inherit flake; };
general = import (configPath + /general.nix) { inherit config flake; };
input = import (configPath + /input.nix);
misc = import (configPath + /misc.nix);
windowrulev2 = import (configPath + /windowrulev2.nix);

View file

@ -1,12 +1,30 @@
{ flake, ... }:
{
config,
flake,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
currentTheme
palettes
fonts
;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
in
{
font = fonts.names.name0;

View file

@ -1,11 +1,11 @@
{ flake, ... }:
{
config,
flake,
...
}:
let
configPath = ./config;
settingsPath = import (configPath + /settings.nix) {
inherit
flake
;
};
settingsPath = import (configPath + /settings.nix) { inherit config flake; };
in
{
programs.swaylock = {

View file

@ -1,12 +1,26 @@
{ flake, ... }:
{
config,
flake,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
palettes
fonts
;
inherit (flake.config.aesthetics.themes) currentTheme palettes fonts;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
in
{
font-size = fonts.sizes.desktop.size0;

View file

@ -1,12 +1,12 @@
{
pkgs,
config,
flake,
...
}:
let
configPath = ./config;
settingsPath = import (configPath + /settings.nix) { inherit flake; };
settingsPath = import (configPath + /settings.nix) { inherit config flake; };
in
{
programs.tofi = {

View file

@ -1,13 +1,27 @@
{ flake, ... }:
{
config,
flake,
...
}:
let
inherit (flake.config.aesthetics.themes)
currentThemes
palettes
fonts
;
inherit (flake.config.aesthetics.themes) currentTheme palettes fonts;
el = palettes.${currentThemes.theme0}.colours;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
custom = {
font = fonts.names.name0;

View file

@ -1,4 +1,5 @@
{
config,
flake,
pkgs,
...
@ -6,11 +7,7 @@
let
configPath = ./config;
settingsPath = import (configPath + /settings.nix) { inherit flake; };
stylePath = import (configPath + /style.nix) {
inherit
flake
;
};
stylePath = import (configPath + /style.nix) { inherit config flake; };
in
{
programs.waybar = {

View file

@ -68,12 +68,27 @@ in
imports = builtins.attrValues {
inherit (modules)
tablet
;
};
};
plasma = {
imports = builtins.attrValues {
inherit (modules)
plasma
sddm
;
};
};
gnome = {
imports = builtins.attrValues {
inherit (modules)
gnome
;
};
};
hyprland = {
imports = builtins.attrValues {
inherit (modules)
@ -90,6 +105,14 @@ in
};
};
sops = {
imports = builtins.attrValues {
inherit (modules)
sops
;
};
};
shared = {
imports = builtins.attrValues {
inherit (modules)
@ -102,7 +125,6 @@ in
nh
nix
rsyncd
sops
ssh
system
xserver

View file

@ -2,6 +2,7 @@
let
inherit (flake.config.people)
user0
user1
user2
;
inherit (flake.config.machines)
@ -11,6 +12,7 @@ let
desktop = devices.desktop.name;
server = devices.server.name;
fallaryn = devices.fallaryn.name;
bartholomew = devices.bartholomew.name;
in
{
security = {
@ -26,6 +28,8 @@ in
user0
else if hostname == server then
user0
else if hostname == bartholomew then
user1
else if hostname == fallaryn then
user2
else

View file

@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
services = {
xserver = {
enable = true;
@ -15,8 +16,7 @@
gnome-online-accounts.enable = true;
};
udev.packages = builtins.attrValues {
inherit
(pkgs.gnome)
inherit (pkgs)
gnome-settings-daemon
;
};
@ -27,8 +27,7 @@
# WEBKIT_DISABLE_COMPOSITING_MODE = "1";
};
gnome.excludePackages = builtins.attrValues {
inherit
(pkgs)
inherit (pkgs)
gnome-photos
gnome-tour
epiphany # web browser
@ -38,19 +37,16 @@
totem # video player
yelp # help viewer
gnome-calendar
;
inherit
(pkgs.gnome)
gnome-music
tali # poker game
iagno # go game
hitori # sudoku game
atomix # puzzle game
gnome-clocks
gnome-weather
gnome-maps
gnome-contacts
gnome-characters
gnome-music
tali # poker game
iagno # go game
hitori # sudoku game
;
};
};

View file

@ -11,6 +11,7 @@ let
desktop = devices.desktop.name;
server = devices.server.name;
fallaryn = devices.fallaryn.name;
bartholomew = devices.bartholomew.name;
userLogic =
if hostname == desktop then
@ -30,23 +31,27 @@ in
keyFile = "/var/lib/sops-nix/key.txt";
generateKey = false;
};
secrets = {
"ssh/private" = {
path = "/home/${userLogic}/.ssh/id_ed25519";
owner = userLogic;
};
"ssh/public" = {
path = "/home/${userLogic}/.ssh/id_ed25519.pub";
owner = userLogic;
};
"ssh/hosts" = {
path = "/home/${userLogic}/.ssh/known_hosts";
owner = userLogic;
};
# "claude-api-key" = {
# path = "/home/${user0}/.config/zed/claude-api-key";
# owner = user0;
# };
};
secrets =
if hostname == bartholomew then
{ }
else
{
"ssh/private" = {
path = "/home/${userLogic}/.ssh/id_ed25519";
owner = userLogic;
};
"ssh/public" = {
path = "/home/${userLogic}/.ssh/id_ed25519.pub";
owner = userLogic;
};
"ssh/hosts" = {
path = "/home/${userLogic}/.ssh/known_hosts";
owner = userLogic;
};
# "claude-api-key" = {
# path = "/home/${user0}/.config/zed/claude-api-key";
# owner = user0;
# };
};
};
}

View file

@ -6,6 +6,7 @@
let
inherit (flake.config.people)
user0
user1
user2
;
inherit (flake.config.people.users.${userLogic})
@ -18,6 +19,7 @@ let
desktop = devices.desktop.name;
server = devices.server.name;
fallaryn = devices.fallaryn.name;
bartholomew = devices.bartholomew.name;
userLogic =
if hostname == desktop then
@ -30,7 +32,13 @@ let
"";
in
{
users.users.${userLogic} = {
openssh.authorizedKeys.keys = sshKeys;
};
users.users =
if hostname == bartholomew then
{ }
else
{
${userLogic} = {
openssh.authorizedKeys.keys = sshKeys;
};
};
}

View file

@ -16,6 +16,7 @@ in
users = {
users.${user0} = {
description = name;
name = user0;
isNormalUser = true;
shell = pkgs.nushell;
extraGroups = [

View file

@ -15,6 +15,7 @@ in
users = {
users.${user1} = {
description = name;
name = user1;
isNormalUser = true;
shell = pkgs.nushell;
extraGroups = [

View file

@ -16,6 +16,7 @@ in
users = {
users.${user2} = {
description = name;
name = user2;
isNormalUser = true;
shell = pkgs.nushell;
extraGroups = [

View file

@ -0,0 +1,44 @@
{
pkgs,
config,
...
}:
{
boot = {
extraModulePackages = [
config.boot.kernelPackages.v4l2loopback.out
];
supportedFilesystems = [
"ntfs"
];
initrd = {
network.openvpn.enable = true;
availableKernelModules = [
"nvme"
"ahci"
"xhci_pci"
"usb_storage"
"usbhid"
"sd_mod"
];
kernelModules = [
];
};
kernelModules = [
"kvm-amd"
"vfio-pci"
"v4l2loopback"
];
kernelPackages = pkgs.linuxPackages_latest;
loader = {
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot";
};
systemd-boot.enable = true;
};
};
}

View file

@ -0,0 +1,30 @@
{
flake,
config,
...
}:
let
inherit (flake.config.people) user1;
inherit (flake.config.machines.devices) bartholomew;
in
{
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/0457d426-f166-4f35-b77b-93321dca2581";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/1703-D452";
fsType = "vfat";
options = bartholomew.boot.options;
};
};
swapDevices = [
{ device = "/dev/disk/by-uuid/bedf4922-fa86-403a-846c-7d900dfb9086"; }
];
systemd.tmpfiles.rules = [
"Z ${config.home-manager.users.${user1}.home.homeDirectory} 0755 ${user1} users -"
];
}

View file

@ -0,0 +1,12 @@
{
hardware = {
graphics = {
enable = true;
extraPackages = [ ];
extraPackages32 = [ ];
};
};
boot.initrd.kernelModules = [
];
services.xserver.videoDrivers = [ "modesetting" ];
}

View file

@ -0,0 +1,17 @@
{
config,
lib,
pkgs,
...
}:
{
hardware = {
firmware = builtins.attrValues {
inherit (pkgs)
rtl8761b-firmware
;
};
enableAllFirmware = true;
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
}

View file

@ -0,0 +1,35 @@
{
lib,
flake,
...
}:
let
inherit (flake.config.machines.devices)
bartholomew
;
in
{
networking = {
hostName = bartholomew.name;
networkmanager.enable = true;
nftables.enable = true;
useDHCP = lib.mkDefault true;
firewall = {
enable = true;
allowedTCPPorts = [
];
};
};
services = {
avahi = {
enable = true;
openFirewall = true;
nssmdns4 = true;
};
sshd.enable = true;
openssh = {
enable = true;
settings.PasswordAuthentication = false;
};
};
}

17
systems/bartholomew/default.nix Executable file
View file

@ -0,0 +1,17 @@
{ lib, ... }:
let
configPath = ./config;
desktopImports =
let
files = builtins.attrNames (builtins.readDir configPath);
in
map (name: configPath + "/${name}") (
builtins.filter (name: builtins.match ".*\\.nix$" name != null) files
);
in
{
imports = desktopImports;
nixpkgs.hostPlatform = lib.mkForce "x86_64-linux";
system.stateVersion = lib.mkForce "24.05";
}

View file

@ -2,77 +2,73 @@
flake,
config,
...
}: let
inherit
(flake.config.people)
}:
let
inherit (flake.config.people)
user0
user1
;
inherit
(flake.config.machines.devices)
inherit (flake.config.machines.devices)
desktop
server
synology
;
inherit
(flake.config.services.instances)
inherit (flake.config.services.instances)
samba
;
synologySecrets = config.sops.secrets."network/synology".path;
serverSecrets = config.sops.secrets."network/server".path;
in {
fileSystems = let
synologyDrives = [
"folder0"
"folder1"
"folder2"
];
in
{
fileSystems =
let
synologyDrives = [
"folder0"
"folder1"
"folder2"
];
storageDrives = [
"storage0"
"storage1"
];
storageDrives = [
"storage0"
"storage1"
];
sambaDrives = [
"samba0"
];
sambaDrives = [
"samba0"
];
synologyMounts = synologyDrive: {
name = "${synology.${synologyDrive}.mount}";
value = {
device = synology.${synologyDrive}.device;
fsType = "cifs";
options =
synology.${synologyDrive}.options
++ [
synologyMounts = synologyDrive: {
name = "${synology.${synologyDrive}.mount}";
value = {
device = synology.${synologyDrive}.device;
fsType = "cifs";
options = synology.${synologyDrive}.options ++ [
"credentials=${synologySecrets}"
];
};
};
};
storageMounts = storageDrive: {
name = "${desktop.${storageDrive}.mount}";
value = {
device = desktop.${storageDrive}.device;
fsType = "ext4";
options = desktop.${storageDrive}.options;
storageMounts = storageDrive: {
name = "${desktop.${storageDrive}.mount}";
value = {
device = desktop.${storageDrive}.device;
fsType = "ext4";
options = desktop.${storageDrive}.options;
};
};
};
sambaMounts = sambaDrive: {
name = "${server.${sambaDrive}.mount}/${samba.paths.path1}";
value = {
device = "${server.${sambaDrive}.device}/${samba.paths.path1}";
fsType = "cifs";
options =
server.${sambaDrive}.options
++ [
sambaMounts = sambaDrive: {
name = "${server.${sambaDrive}.mount}/${samba.paths.path1}";
value = {
device = "${server.${sambaDrive}.device}/${samba.paths.path1}";
fsType = "cifs";
options = server.${sambaDrive}.options ++ [
"credentials=${serverSecrets}"
];
};
};
};
in
in
{
"/" = {
device = "/dev/disk/by-uuid/f63ce470-874a-4d2f-9494-31a15ca39f7f";
@ -89,7 +85,7 @@ in {
// (builtins.listToAttrs (map sambaMounts sambaDrives));
swapDevices = [
{device = "/dev/disk/by-uuid/e3724d5e-9aba-4a32-9d89-c2117b1ed044";}
{ device = "/dev/disk/by-uuid/e3724d5e-9aba-4a32-9d89-c2117b1ed044"; }
];
systemd.tmpfiles.rules = [