users: move users to another module

This commit is contained in:
2025-12-21 22:17:25 +02:00
parent 88bc5ec810
commit 17246b3ccb
9 changed files with 60 additions and 26 deletions
+37
View File
@@ -0,0 +1,37 @@
{
config,
inputs,
osConfig,
...
}: {
imports = with inputs; [
nix-index-database.hmModules.nix-index
self.homeModules.desktop
self.homeModules.programs
];
inherit (osConfig) desktop;
home = {
inherit (osConfig.system) stateVersion;
sessionPath = ["$HOME/.local/bin"];
};
xdg.userDirs = let
inherit (config.home) homeDirectory;
homeDir = f: "${homeDirectory}/${f}";
in {
enable = true;
createDirectories = true;
templates = homeDir "temps";
publicShare = homeDir "pub";
desktop = homeDir "desktop";
download = homeDir "downloads";
documents = homeDir "docs";
pictures = homeDir "pics";
videos = homeDir "vids";
music = homeDir "music";
};
dconf.settings."org/gnome/desktop/interface".enable-animations = false;
}
+153
View File
@@ -0,0 +1,153 @@
{
inputs,
pkgs,
...
}: {
imports = with inputs; [
nix-flatpak.homeManagerModules.nix-flatpak
];
home.packages = with pkgs; [flatpak];
services.flatpak = {
enable = true;
uninstallUnmanaged = true;
update.auto = {
enable = true;
onCalendar = "weekly";
};
remotes = [
{
name = "flathub";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}
];
packages =
[
# browsers
"app.zen_browser.zen"
# "com.vivaldi.Vivaldi"
"io.github.ungoogled_software.ungoogled_chromium"
"net.mullvad.MullvadBrowser"
"org.torproject.torbrowser-launcher"
]
++ [
# editing
"com.github.PintaProject.Pinta" # bootleg paint
"org.gimp.GIMP" # the holy gimp
"org.kde.kdenlive" # video editor
{
appId = "com.collabora.Office";
bundle = builtins.fetchurl {
url = "https://cdn.collaboraoffice.com/collaboraoffice-v25.04.7.2_final.flatpak";
name = "collaboraoffice-v25.04.7.2_final.flatpak";
sha256 = "RHEXrlymoWnNmdVEzVh85/icxQsWVpLpgkJubi7SpsY=";
};
}
]
++ [
# chatting
"im.riot.Riot" # matrix client
"io.github.kukuruzka165.materialgram" # telegram client
"org.equicord.equibop" # discord client
# "org.mozilla.Thunderbird" # mail client
"com.tutanota.Tutanota"
"org.signal.Signal"
# "org.telegram.desktop"
]
++ [
# media
# "ca.edestcroix.Recordbox" # music player
"com.github.neithern.g4music" # music player
# "io.bassi.Amberol" # music player
"app.grayjay.Grayjay" # youtube client
# "org.atheme.audacious" # music player
]
++ [
# gaming
"com.heroicgameslauncher.hgl" # gog/egs launcher
"com.valvesoftware.Steam"
"net.lutris.Lutris" # everything launcher
"org.prismlauncher.PrismLauncher" # minecraft launcher
"org.freedesktop.Platform.VulkanLayer.MangoHud//24.08"
"org.freedesktop.Platform.VulkanLayer.gamescope//24.08"
]
++ [
# misc
"app.drey.Warp" # share files using magic wormhole
"com.bitwarden.desktop"
"com.github.johnfactotum.Foliate" # book reader
"com.github.tchx84.Flatseal" # control flatpak permissions
"com.logseq.Logseq"
"com.obsproject.Studio"
"com.usebottles.bottles" # wine containers
"de.capypara.FieldMonitor" # libvirt
"org.qbittorrent.qBittorrent" # torrents
"io.github.amit9838.mousam" # weather
"io.github.finefindus.Hieroglyphic" # find latex symbols (in rust)
"io.github.lainsce.Khronos" # log time for tasks
"io.gitlab.news_flash.NewsFlash" # rss reader
"md.obsidian.Obsidian"
"me.iepure.devtoolbox" # some cool utils
"org.nicotine_plus.Nicotine" # soulseek
];
overrides = let
homeNoNetwork = {
Context.share = ["!network"];
Context.filesystems = ["home"];
};
game.sockets = ["x11" "wayland"];
game.folder = folder: ["/storage/games/${folder}" "~/games/${folder}"];
in {
"global" = {
Context = {
sockets = ["wayland" "!x11" "!fallback-x11"];
filesystems = [
"!home"
"!host"
"!~/.ssh"
"/nix/store:ro"
"xdg-config/gtk-3.0:ro"
"xdg-config/gtk-4.0:ro"
"xdg-config/Kvantum:ro"
"xdg-config/qt5ct:ro"
"xdg-config/qt6ct:ro"
"xdg-run/pipewire-0"
"~/.local/share/icons:ro"
];
};
Environment = {
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
};
};
"app.grayjay.Grayjay".Context.sockets = ["x11" "!wayland" "!fallback-x11"]; # because CEF
"ca.edestcroix.Recordbox".Context.filesystems = ["xdg-music"];
"md.obsidian.Obsidian".Context.filesystems = ["~/Obsidian" "~/.ssh"]; # .ssh for git plugin
"com.valvesoftware.Steam" = {
Context = {
inherit (game) sockets;
filesystems = game.folder "steam";
};
Environment.STEAM_FORCE_DESKTOPUI_SCALING = "1.3";
};
"net.lutris.Lutris".Context = {
inherit (game) sockets;
filesystems = game.folder "lutris";
};
"com.heroicgameslauncher.hgl".Context = {
inherit (game) sockets;
filesystems = game.folder "heroic";
};
"com.collabora.Office" = {inherit (homeNoNetwork) Context;};
"com.github.PintaProject.Pinta" = {inherit (homeNoNetwork) Context;};
"com.logseq.Logseq" = {inherit (homeNoNetwork) Context;};
"com.obsproject.Studio" = {inherit (homeNoNetwork) Context;};
"com.usebottles.Bottles".Context = {inherit (game) sockets;};
"io.bassi.Amberol" = {inherit (homeNoNetwork) Context;};
"io.freetubeapp.FreeTube" = {inherit (homeNoNetwork) Context;};
"org.atheme.audacious" = {inherit (homeNoNetwork) Context;};
"org.gimp.GIMP" = {inherit (homeNoNetwork) Context;};
"org.kde.kdenlive" = {inherit (homeNoNetwork) Context;};
"org.signal.Signal".Environment.SIGNAL_PASSWORD_STORE = "gnome-libsecret";
"org.qbittorrent.qBittorrent".Context.filesystems = ["host"]; # evil
};
};
}
+169
View File
@@ -0,0 +1,169 @@
{
config,
inputs,
lib,
osConfig,
perSystem,
pkgs,
...
}: let
inherit (lib) mkIf;
inherit (osConfig.virtualisation) libvirtd;
inherit (osConfig.hardware) bluetooth;
in {
imports = [
inputs.vicinae.homeManagerModules.default
];
services.vicinae.enable = true;
console.yazi.enable = true;
editor.helix.enable = true;
shell = {
fish.enable = true;
oh-my-posh.enable = true;
};
syncthing.enable = true;
terminal.wezterm.enable = true;
terminal.ghostty.enable = true;
systemd.user.settings.Manager.DefaultEnvironment = {
TERMINAL = "wezterm";
HISTFILE = ''"$XDG_STATE_HOME"/bash/history'';
CARGO_HOME = ''"$XDG_DATA_HOME"/cargo'';
DOTNET_CLI_HOME = ''"$XDG_DATA_HOME"/dotnet'';
GNUPGHOME = ''"$XDG_DATA_HOME"/gnupg'';
ICEAUTHORITY = ''"$XDG_CACHE_HOME"/ICEauthority'';
NUGET_PACKAGES = ''"$XDG_CACHE_HOME"/NuGetPackages'';
NPM_CONFIG_INIT_MODULE = ''"$XDG_CONFIG_HOME"/npm/config/npm-init.js'';
NPM_CONFIG_CACHE = ''"$XDG_CACHE_HOME"/npm'';
NPM_CONFIG_TMP = ''"$XDG_RUNTIME_DIR"/npm'';
};
services = {
# pueue.enable = true; # process queue in rust
ssh-agent.enable = true;
};
programs =
lib.attrsets.recursiveUpdate
{
bat.enable = true; # cat in rust
btop.enable = true;
# direnv.enable = true;
distrobox.enable = true;
difftastic.enable = true;
eza.enable = true; # ls in rust
fd.enable = true; # find in rust
fzf.enable = true; # fuzzy finder in rust
git.enable = true;
gitui.enable = true; # git ui in rust
jujutsu.enable = true; # vcs in rust
keychain.enable = true;
nix-index-database.comma.enable = true;
nix-index.enable = true;
nix-your-shell.enable = true;
pay-respects.enable = true; # thefuck in rust
ripgrep.enable = true; # grep in rust
zellij.enable = true;
zk.enable = true;
zoxide.enable = true; # fuzzy cd in rust
}
{
btop.settings.update_ms = 200;
difftastic.git.enable = true;
difftastic.git.diffToolMode = true;
git.signing.format = "ssh";
git.settings.alias.cl = "clone";
git.settings.alias.co = "checkout";
keychain.keys = ["id_ed25519"];
};
home.packages = with pkgs;
[
# development utils
alejandra # nix formatter in rust
# devenv # programming deps in rust
(mkIf config.programs.jujutsu.enable jj-fzf) # fuzzy finder jujutsu tui
just # make in rust
silicon # create code pics in rust
]
++ [
# console utils
# bluetuith # bluetooth tui in go
dua # disk space usage in rust
duf # better df in go
fend # calculator in rust
# mprocs # process runner in rust
ouch # archive manager in rust
# procs # ps in rust
rbw # bitwarden cli in rust
sd # sed in rust
systemctl-tui # systemctl tui in rust
trashy # trash cli in rust
up # ultimate plumber in go
]
++ [
(pkgs.writeShellApplication {
name = "rbw-ls";
runtimeInputs = with pkgs; [rbw jq csvlens];
text = ''
rbw ls --raw \
| jq -r '["name","user","folder","id"],
( .[] | [(.name // "none"), (.user // "none"), (.folder // "none"), .id])
| @csv' \
| csvlens
'';
})
(pkgs.writeShellApplication {
name = "rbw-get";
runtimeInputs = with pkgs; [rbw wl-clipboard];
text = ''rbw get --clipboard "$1" && sleep 5 && wl-copy -c'';
})
(pkgs.writeShellApplication {
name = "rbw-totp";
runtimeInputs = with pkgs; [rbw wl-clipboard];
text = ''rbw totp --clipboard "$1" && sleep 5 && wl-copy -c'';
})
]
++ [
# misc apps
adwaita-icon-theme
# vial # qmk keyboard configuring app
pinentry-qt # pinentry for rbw
(mkIf libvirtd.enable virt-manager) # libvirt gui
# waycheck # check wayland protocols
gpu-screen-recorder-gtk
]
++ [
# gui libadwaita apps
celluloid # mpv gui in libadwaita
# gnome-text-editor
helvum # pipewire patchbay in rust
# junction # app chooser
mission-center # task manager in rust (partly)
(mkIf bluetooth.enable overskride) # bluetooth gui in rust
pika-backup # borg gui in rust
pwvucontrol # pipewire gui in rust
perSystem.zmx.default
# sonusmix # pipewire routing tool in rust
];
xdg.configFile."vicinae/vicinae.json".enable = false;
# xdg.desktopEntries.uni = {
# actions."Copy".exec = "fish -c \"~/.local/bin/uni --copy\"";
# categories = ["Utility" "X-Launch" "Network"];
# comment = "Select and open or copy URLs from a list.";
# exec = "fish -c \"~/.local/bin/uni\"";
# icon = "web-browser";
# name = "Uni URL Handler";
# startupNotify = true;
# terminal = false;
# type = "Application";
# };
}