diff options
-rw-r--r-- | modules/home/default.nix | 89 | ||||
-rw-r--r-- | modules/nix/default.nix | 7 | ||||
-rw-r--r-- | modules/shell/cargo/default.nix | 6 | ||||
-rw-r--r-- | modules/shell/direnv/default.nix | 6 | ||||
-rw-r--r-- | modules/shell/pass/default.nix | 6 | ||||
-rw-r--r-- | modules/shell/zsh/default.nix | 4 | ||||
-rw-r--r-- | modules/users/default.nix | 19 | ||||
-rw-r--r-- | modules/workstation/dino/default.nix | 6 | ||||
-rw-r--r-- | modules/workstation/emacs/default.nix | 6 | ||||
-rw-r--r-- | modules/workstation/gnupg/default.nix | 37 | ||||
-rw-r--r-- | modules/workstation/lorri/default.nix | 6 | ||||
-rw-r--r-- | modules/workstation/mail/default.nix | 7 | ||||
-rw-r--r-- | modules/workstation/mail/mutt/default.nix | 11 | ||||
-rw-r--r-- | modules/workstation/podman/default.nix | 8 | ||||
-rw-r--r-- | modules/workstation/weechat/default.nix | 13 | ||||
-rw-r--r-- | modules/workstation/windowing/firefox/default.nix | 19 | ||||
-rw-r--r-- | modules/workstation/windowing/gnome-mines/default.nix | 6 |
17 files changed, 102 insertions, 154 deletions
diff --git a/modules/home/default.nix b/modules/home/default.nix deleted file mode 100644 index de7bec7cfbcd..000000000000 --- a/modules/home/default.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ lib, config, ... }: - -let - inherit (lib) attrValues concatStringsSep mapAttrsToList mkOption - optionalString recursiveUpdate; - inherit (lib.types) attrsOf bool nullOr str submodule; - - dirOpts = { ... }: { - options = { - owner = mkOption { - default = null; - type = nullOr str; - }; - group = mkOption { - default = null; - type = nullOr str; - }; - permissions = mkOption { - default = "0700"; - type = str; - }; - activationScripts = mkOption { - default = {}; - type = attrsOf str; - }; - }; - }; - - applyDirConfig = user: dir: - let - owner = if dir.owner == null - then user - else config.users.users.${dir.owner}; - - group = if dir.group == null then owner.group else dir.group; - in - '' - chmod ${dir.permissions} . - chown ${owner.name}:${group} . - ${concatStringsSep "\n" (attrValues dir.activationScripts)} - ''; - -in - { - options = { - home = mkOption { - default = {}; - type = attrsOf (submodule (args: recursiveUpdate (dirOpts args) { - options = { - imperativeNix = mkOption { - default = false; - type = bool; - }; - dirs = mkOption { - default = {}; - type = attrsOf (submodule dirOpts); - }; - }; - })); - }; - }; - - config = { - system.activationScripts.home = { - deps = []; - text = concatStringsSep "\n" (mapAttrsToList - (key: home: - let - user = config.users.users.${key}; - - in '' - ${optionalString (!home.imperativeNix) '' - rm -rf ${user.home}/.nix-{defexpr,profile} - ''} - - pushd ${user.home} >/dev/null - ${applyDirConfig user home} - ${concatStringsSep "\n" (mapAttrsToList (name: dir: '' - mkdir -p ${name} - pushd ${name} >/dev/null - ${applyDirConfig user dir} - popd >/dev/null - '') home.dirs)} - popd >/dev/null - '' - ) config.home); - }; - }; - } diff --git a/modules/nix/default.nix b/modules/nix/default.nix index 9a50dd985eb3..b016ab7ba9d5 100644 --- a/modules/nix/default.nix +++ b/modules/nix/default.nix @@ -5,8 +5,6 @@ let isDarwin = options.environment ? "darwinConfig"; in { - home.qyliss.dirs."state/nix" = {}; - nix.nixPath = [ "nixos-config=/run/current-system/nixlib/sys/${config.networking.hostName}.nix" "/run/current-system/nixlib" @@ -30,4 +28,9 @@ in { services = lib.optionalAttrs isDarwin { nix-daemon.enable = true; }; + + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/nix 0700 qyliss qyliss" + ]; + } diff --git a/modules/shell/cargo/default.nix b/modules/shell/cargo/default.nix index 246571c33e60..db7a4306a663 100644 --- a/modules/shell/cargo/default.nix +++ b/modules/shell/cargo/default.nix @@ -1,9 +1,11 @@ -{ ... }: +{ config, ... }: { environment.extraInit = '' export CARGO_HOME="$HOME/state/cargo" ''; - home.qyliss.dirs."state/cargo" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/cargo 0700 qyliss qyliss" + ]; } diff --git a/modules/shell/direnv/default.nix b/modules/shell/direnv/default.nix index 951d79870b49..3ee1eeb2a012 100644 --- a/modules/shell/direnv/default.nix +++ b/modules/shell/direnv/default.nix @@ -1,7 +1,9 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { environment.systemPackages = with pkgs; [ direnv ]; - home.qyliss.dirs."state/direnv" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/direnv 0700 qyliss qyliss" + ]; } diff --git a/modules/shell/pass/default.nix b/modules/shell/pass/default.nix index 69312f2b9345..aa344ad7c384 100644 --- a/modules/shell/pass/default.nix +++ b/modules/shell/pass/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { environment.systemPackages = with pkgs; [ pass ]; @@ -7,5 +7,7 @@ export PASSWORD_STORE_DIR="$HOME/state/pass" ''; - home.qyliss.dirs."state/pass" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/pass 0700 qyliss qyliss" + ]; } diff --git a/modules/shell/zsh/default.nix b/modules/shell/zsh/default.nix index f784842b0ef7..880b6c995402 100644 --- a/modules/shell/zsh/default.nix +++ b/modules/shell/zsh/default.nix @@ -13,7 +13,9 @@ export ZDOTDIR="/etc/xdg/nixos/per-user/$USER/zsh" ''; - home.qyliss.dirs."state/zsh" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/zsh 0700 qyliss qyliss" + ]; users.users.qyliss.shell = pkgs.zsh; diff --git a/modules/users/default.nix b/modules/users/default.nix index 5f4cd6fe51d6..51d7e840ed95 100644 --- a/modules/users/default.nix +++ b/modules/users/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ config, lib, pkgs, ... }: let # These defaults should override the NixOS defaults, @@ -6,12 +6,10 @@ let mkDefault = lib.mkOverride ((lib.mkDefault null).priority - 1); in { - imports = [ ../home ]; - users.mutableUsers = false; users.groups.qyliss = {}; users.users.qyliss = { - createHome = true; + createHome = false; description = "Alyssa Ross"; home = mkDefault "/home"; uid = mkDefault 1000; @@ -22,12 +20,9 @@ in { shell = lib.mkDefault pkgs.bash; }; - home.qyliss = { - permissions = "0555"; - group = "qyliss"; - }; - home.qyliss.dirs.state = { - permissions = "0500"; - }; - home.qyliss.dirs."state/cache" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home} 0555 qyliss qyliss" + "d ${config.users.users.qyliss.home}/state 0500 qyliss qyliss" + "d ${config.users.users.qyliss.home}/state/cache 0700 qyliss qyliss" + ]; } diff --git a/modules/workstation/dino/default.nix b/modules/workstation/dino/default.nix index 1c483d4fc473..74b49b07f1d8 100644 --- a/modules/workstation/dino/default.nix +++ b/modules/workstation/dino/default.nix @@ -1,7 +1,9 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { environment.systemPackages = with pkgs; [ dino ]; - home.qyliss.dirs."state/dino" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/dino 0700 qyliss qyliss" + ]; } diff --git a/modules/workstation/emacs/default.nix b/modules/workstation/emacs/default.nix index 97f2f36b5f57..71523f2b0029 100644 --- a/modules/workstation/emacs/default.nix +++ b/modules/workstation/emacs/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { environment.systemPackages = with pkgs; [ @@ -27,7 +27,9 @@ ])) ]; - home.qyliss.dirs."state/emacs" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/emacs 0700 qyliss qyliss" + ]; users.users.qyliss.xdg.config.paths."emacs" = with pkgs; runCommandNoCC ".emacs.d" { diff --git a/modules/workstation/gnupg/default.nix b/modules/workstation/gnupg/default.nix index 2f47ddf77b29..eda898314258 100644 --- a/modules/workstation/gnupg/default.nix +++ b/modules/workstation/gnupg/default.nix @@ -1,21 +1,26 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: + +let + gnupgHome = "${config.users.users.qyliss.home}/state/gnupg"; + + pinentryProgram = + if pkgs.stdenv.isDarwin then + "/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac" + else + "${pkgs.pinentry.qt}/bin/pinentry"; + + gpg-agent-conf = pkgs.writeText "gpg-agent.conf" '' + pinentry-program ${pinentryProgram} + ''; +in { - home.qyliss.dirs."state/gnupg".activationScripts.config = - let - pinentry = if pkgs.stdenv.isDarwin then - "/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac" - else - "${pkgs.pinentry.qt}/bin/pinentry"; - - gpg-agent-conf = pkgs.writeText "gpg-agent.conf" '' - pinentry-program ${pinentry} - ''; - in '' - ln -sf ${./dirmngr.conf} dirmngr.conf - ln -sf ${./gpg.conf} gpg.conf - ln -sf ${gpg-agent-conf} gpg-agent.conf - ''; + systemd.tmpfiles.rules = [ + "d ${gnupgHome} 0700 qyliss qyliss" + "L+ ${gnupgHome}/dirmngr.conf - - - - ${./dirmngr.conf}" + "L+ ${gnupgHome}/gpg.conf - - - - ${./gpg.conf}" + "L+ ${gnupgHome}/gpg-agent.conf - - - - ${gpg-agent-conf}" + ]; environment.systemPackages = with pkgs; [ gnupg pinentry ]; diff --git a/modules/workstation/lorri/default.nix b/modules/workstation/lorri/default.nix index 4008934dab01..c740796bafbb 100644 --- a/modules/workstation/lorri/default.nix +++ b/modules/workstation/lorri/default.nix @@ -1,7 +1,9 @@ -{ ... }: +{ config, ... }: { - home.qyliss.dirs."state/lorri" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/lorri 0700 qyliss qyliss" + ]; services.lorri.enable = true; diff --git a/modules/workstation/mail/default.nix b/modules/workstation/mail/default.nix index 8132a88bcc4e..ff34fab8b98e 100644 --- a/modules/workstation/mail/default.nix +++ b/modules/workstation/mail/default.nix @@ -5,8 +5,7 @@ environment.systemPackages = with pkgs; [ isync ]; - home.qyliss.dirs.mail = { - group = "qyliss"; - permissions = "0770"; - }; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/mail 0770 qyliss qyliss" + ]; } diff --git a/modules/workstation/mail/mutt/default.nix b/modules/workstation/mail/mutt/default.nix index 00ca6e86f4fc..96c0e6867545 100644 --- a/modules/workstation/mail/mutt/default.nix +++ b/modules/workstation/mail/mutt/default.nix @@ -1,9 +1,16 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: + +let + stateDir = "${config.users.users.qyliss.home}/state/mutt"; +in { environment.systemPackages = with pkgs; [ neomutt ]; users.users.qyliss.xdg.config.paths."mutt/muttrc" = pkgs.copyPathToStore ./muttrc; - home.qyliss.dirs."state/mutt/header_cache" = {}; + systemd.tmpfiles.rules = [ + "d ${stateDir} 0700 qyliss qyliss" + "d ${stateDir}/header_cache 0700 qyliss qyliss" + ]; } diff --git a/modules/workstation/podman/default.nix b/modules/workstation/podman/default.nix index 67c475d45233..9e64fcb4807c 100644 --- a/modules/workstation/podman/default.nix +++ b/modules/workstation/podman/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { environment.etc."containers/libpod.conf".text = '' @@ -39,6 +39,8 @@ graphroot = "/home/state/podman/containers/storage" ''; - home.qyliss.dirs."state/containers" = {}; - home.qyliss.dirs."state/podman" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/containers 0700 qyliss qyliss" + "d ${config.users.users.qyliss.home}/state/podman 0700 qyliss qyliss" + ]; } diff --git a/modules/workstation/weechat/default.nix b/modules/workstation/weechat/default.nix index 03219a772cce..135442b6b2ec 100644 --- a/modules/workstation/weechat/default.nix +++ b/modules/workstation/weechat/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ config, pkgs, lib, ... }: with lib; @@ -91,6 +91,8 @@ let -r /exit ''; + weechatHome = "${config.users.users.qyliss.home}/state/weechat"; + in { @@ -107,12 +109,15 @@ in }) ]; - home.qyliss.dirs."state/weechat".activationScripts.config = '' + systemd.tmpfiles.packages = [ (pkgs.runCommandNoCC "weechat-tmpfiles" {} '' + conf=$out/lib/tmpfiles.d/weechat.conf + mkdir -p $(dirname $conf) + echo "d ${weechatHome} 0700 qyliss qyliss" > $conf for file in ${cfg}/*.conf do if [ "$file" != ${cfg}/sec.conf ] - then ln -sf $file $(basename $file) + then echo "L+ ${weechatHome}/$(basename "$file") - - - - $file" >> $conf fi done - ''; + '') ]; } diff --git a/modules/workstation/windowing/firefox/default.nix b/modules/workstation/windowing/firefox/default.nix index 0b2bc0560ae5..42f29c778965 100644 --- a/modules/workstation/windowing/firefox/default.nix +++ b/modules/workstation/windowing/firefox/default.nix @@ -1,12 +1,17 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: + +let + stateDir = "${config.users.users.qyliss.home}/state/mozilla"; +in { - home.qyliss.dirs.state.activationScripts.profile = '' - install -m 0700 -o qyliss -g $(id -gn qyliss) \ - -d mozilla{,/firefox{,/default}} - ln -sf ${./profiles.ini} mozilla/firefox/profiles.ini - ln -sf ${./user.js} mozilla/firefox/default/user.js - ''; + systemd.tmpfiles.rules = [ + "d ${stateDir} 0700 qyliss qyliss" + "d ${stateDir}/firefox 0700 qyliss qyliss" + "d ${stateDir}/firefox/default 0700 qyliss qyliss" + "L+ ${stateDir}/firefox/profiles.ini - - - - ${./profiles.ini}" + "L+ ${stateDir}/firefox/user.js - - - - ${./user.js}" + ]; environment.systemPackages = with pkgs; [ firefox-wayland ]; diff --git a/modules/workstation/windowing/gnome-mines/default.nix b/modules/workstation/windowing/gnome-mines/default.nix index a2376676d007..d9800142bc29 100644 --- a/modules/workstation/windowing/gnome-mines/default.nix +++ b/modules/workstation/windowing/gnome-mines/default.nix @@ -1,7 +1,9 @@ -{ pkgs, ... }: +{ config, pkgs, ... }: { environment.systemPackages = with pkgs; [ gnome3.gnome-mines ]; - home.qyliss.dirs."state/gnome-mines" = {}; + systemd.tmpfiles.rules = [ + "d ${config.users.users.qyliss.home}/state/gnome-mines 0700 qyliss qyliss" + ]; } |