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 { themesSubmodule = lib.types.submodule {
options = { options = {
currentThemes = genOptions stringType "theme"; currentTheme = genOptions stringType "theme";
fonts = { fonts = {
names = genOptions stringType "name"; names = genOptions stringType "name";
sizes = { 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 let
currentTheme0 = catppuccin-mocha; currentTheme0 = catppuccin-mocha; # User0 Theme
currentTheme1 = catppuccin-macchiato; currentTheme1 = catppuccin-mocha; # User1 Theme
currentTheme2 = catppuccin-mocha; # User2 Theme
brogrammer = "brogrammer"; brogrammer = "brogrammer";
catppuccin-frappe = "catppuccin-frappe"; catppuccin-frappe = "catppuccin-frappe";
@ -23,8 +24,10 @@ let
in in
{ {
themes = { themes = {
currentThemes = { currentTheme = {
theme0 = currentTheme0; theme0 = currentTheme0; # User0 Theme
theme1 = currentTheme1; # User1 Theme
theme2 = currentTheme2; # User2 Theme
}; };
cursor = { cursor = {
name = ""; name = "";

60
flake.lock generated
View file

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

View file

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

View file

@ -27,6 +27,7 @@ in
flake.homeModules = flake.homeModules =
let let
inherit (config.machines.devices) inherit (config.machines.devices)
bartholomew
desktop desktop
fallaryn fallaryn
laptop 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}" = { "${server.name}-${user0}" = {
imports = builtins.attrValues { imports = builtins.attrValues {
inherit (modules) inherit (modules)

View file

@ -1,15 +1,27 @@
{ {
flake, flake,
config,
lib, lib,
... ...
}: }:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes) currentTheme palettes;
currentThemes
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; makeColor = c: "#" + c;
makeStyle = bg: fg: "bg:" + bg + " fg:" + fg + " bold"; makeStyle = bg: fg: "bg:" + bg + " fg:" + fg + " bold";

View file

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

View file

@ -1,11 +1,29 @@
{ flake, ... }: {
flake,
config,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes)
currentThemes currentTheme
palettes 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 in
{ {
colors = { colors = {

View file

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

View file

@ -1,11 +1,26 @@
{ flake, ... }: {
config,
flake,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes) currentTheme palettes;
currentThemes
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 in
{ {
accents = [ accents = [

View file

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

View file

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

View file

@ -1,11 +1,26 @@
{ flake, ... }: {
flake,
config,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes) currentTheme palettes;
currentThemes
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 in
{ {
theme = { theme = {

View file

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

View file

@ -1,13 +1,31 @@
{ flake, ... }: {
flake,
config,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes)
currentThemes currentTheme
palettes palettes
fonts 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; makeColor = c: "#" + c;
in in

View file

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

View file

@ -1,12 +1,27 @@
{ flake, ... }: {
config,
flake,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes) currentTheme palettes;
currentThemes
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 in
{ {
gaps_in = 5; gaps_in = 5;

View file

@ -20,7 +20,7 @@ let
decoration = import (configPath + /decoration.nix); decoration = import (configPath + /decoration.nix);
dwindle = import (configPath + /dwindle.nix); dwindle = import (configPath + /dwindle.nix);
exec-once = import (configPath + /exec-once.nix) { inherit flake; }; 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); input = import (configPath + /input.nix);
misc = import (configPath + /misc.nix); misc = import (configPath + /misc.nix);
windowrulev2 = import (configPath + /windowrulev2.nix); windowrulev2 = import (configPath + /windowrulev2.nix);

View file

@ -1,12 +1,30 @@
{ flake, ... }: {
config,
flake,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes)
currentThemes currentTheme
palettes palettes
fonts 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 in
{ {
font = fonts.names.name0; font = fonts.names.name0;

View file

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

View file

@ -1,12 +1,26 @@
{ flake, ... }: {
config,
flake,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes) currentTheme palettes fonts;
currentThemes
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 in
{ {
font-size = fonts.sizes.desktop.size0; font-size = fonts.sizes.desktop.size0;

View file

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

View file

@ -1,13 +1,27 @@
{ flake, ... }: {
config,
flake,
...
}:
let let
inherit (flake.config.aesthetics.themes) inherit (flake.config.aesthetics.themes) currentTheme palettes fonts;
currentThemes
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 = { custom = {
font = fonts.names.name0; font = fonts.names.name0;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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