feat(users): customized deck user

This commit is contained in:
Malte Tammena 2023-08-16 23:11:56 +02:00
parent b623e95d97
commit 40ba108252
5 changed files with 72 additions and 26 deletions

View file

@ -25,7 +25,7 @@
lightdm.enable = true;
autoLogin = {
enable = true;
user = "malte";
user = "deck";
};
};
@ -40,8 +40,7 @@
users = {
mutableUsers = false;
defaultUserShell = pkgs.fish;
custom.malte.enable = true;
custom.malte.steamDeck = true;
custom.deck.enable = true;
};
environment.systemPackages = with pkgs; [
@ -50,7 +49,7 @@
security.sudo.extraRules = [
{
users = ["malte"];
users = ["deck"];
commands = [
{
command = "ALL";

View file

@ -20,6 +20,7 @@ in {
./hdparm.nix
./malte.nix
./marie.nix
./deck.nix
./radicale.nix
./restic.nix
./scanner.nix

49
modules/deck.nix Normal file
View file

@ -0,0 +1,49 @@
{
pkgs,
lib,
config,
inputs,
...
}: let
cfg = config.users.custom.deck;
in {
options.users.custom.deck = with lib; {
enable = mkEnableOption "user 'deck' on this machine";
};
config = lib.mkIf cfg.enable {
users.users.deck = {
description = "Deck Mc. Deckster";
hashedPassword = "$6$zqEC2iJJ98Ne$lRERO30msyjJm7oJCqRD/xj3NIm4De37gD.VUzfg7aceosE/6S6eNAaruIakgUtSC970MHRPoNlCEy1RoFuyh.";
isNormalUser = true;
extraGroups = [
"wheel"
"networkmanager"
"video"
"render"
"lp"
"kvm"
"libvirtd"
"corectrl"
"input"
config.users.groups.keys.name
];
# Yes, use the best, please
shell = pkgs.fish;
# Allow my yubikey everywhere
openssh.authorizedKeys.keyFiles = [../users/malte/yubikey.pub];
};
# home-manager.users.malte.imports = [../users/malte/home.nix inputs.nix-colors.homeManagerModule inputs.hyprland.homeManagerModules.default];
programs.fish.enable = true;
services.flatpak.enable = true;
# programs.hyprland = {
# enable = true;
# xwayland = {
# enable = true;
# };
# };
};
}

View file

@ -9,7 +9,6 @@
in {
options.users.custom.malte = with lib; {
enable = mkEnableOption "user 'malte' on this machine";
steamDeck = mkEnableOption "steam deck options";
};
config = lib.mkIf cfg.enable {
@ -40,15 +39,15 @@ in {
home-manager.users.malte.imports = [../users/malte/home.nix inputs.nix-colors.homeManagerModule inputs.hyprland.homeManagerModules.default];
programs.fish.enable = true;
services.darkman.enable = !cfg.steamDeck;
services.darkman.enable = true;
services.udev.packages = lib.optionals cfg.steamDeck [
services.udev.packages = [
pkgs.android-udev-rules
];
# TODO: Remove after switching occupation
services.clamav.daemon.enable = !cfg.steamDeck;
services.clamav.updater.enable = !cfg.steamDeck;
services.clamav.daemon.enable = true;
services.clamav.updater.enable = true;
services.flatpak.enable = true;

View file

@ -1,13 +1,10 @@
{
pkgs,
lib,
config,
nixosConfig,
nix-colors,
...
}: let
notDeck = !nixosConfig.users.custom.malte.steamDeck;
wrap = name: pkg: postBuild:
pkgs.symlinkJoin {
inherit name postBuild;
@ -63,9 +60,9 @@ in {
];
config = {
settings.hyprland.enable = notDeck;
settings.mail.enable = notDeck;
settings.taskwarrior.enable = notDeck;
settings.hyprland.enable = true;
settings.mail.enable = true;
settings.taskwarrior.enable = true;
# Define my color schemes
colorsLight = nix-colors.colorSchemes."gruvbox-light-medium";
@ -78,9 +75,10 @@ in {
pkgs.jq
pkgs.mosh
pkgs.wl-clipboard
pkgs.cataclysm-dda-git
lutrisWithLibs
]
++ (lib.optionals notDeck (with pkgs; [
++ (with pkgs; [
aseprite
darkman
alejandra
@ -130,9 +128,9 @@ in {
xournalpp
yt-dlp # youtube-dl alternative that doesn't suck
wev
]));
]);
sessionVariables = lib.mkIf notDeck {
sessionVariables = {
LEDGER_FILE = "/home/${config.home.username}/ledger/current.journal";
MOZ_USE_XINPUT2 = "1";
};
@ -161,7 +159,7 @@ in {
# Make sure firefox is my default browser
programs.firefox.enable = true;
programs.obs-studio = lib.mkIf notDeck {
programs.obs-studio = {
enable = true;
plugins = [
pkgs.obs-studio-plugins.wlrobs
@ -187,7 +185,7 @@ in {
};
# Configure calendar synchronization
services.synchronize-calendars = lib.mkIf notDeck {
services.synchronize-calendars = {
enable = true;
user = "malte";
passwordFile = nixosConfig.sops.secrets."radicale-password".path;
@ -195,7 +193,7 @@ in {
};
# TODO: Merge with Marie's part
systemd.user.mounts."home-malte-to\\x2dbe\\x2dprinted" = lib.mkIf notDeck {
systemd.user.mounts."home-malte-to\\x2dbe\\x2dprinted" = {
Unit = {
Description = "Directory that prints everything";
};
@ -210,14 +208,14 @@ in {
};
};
services.protonmailBridge.enable = notDeck;
services.protonmailBridge.enable = true;
services.darkman.enable = notDeck;
services.darkman.enable = true;
fonts.fontconfig.enable = notDeck;
fonts.fontconfig.enable = true;
services.mpris-proxy.enable = notDeck;
services.pasystray.enable = notDeck;
services.mpris-proxy.enable = true;
services.pasystray.enable = true;
home.file.".yubico/authorized_yubikeys".text = "malte:ccccccvblrrf";