mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
125 lines
3.4 KiB
Nix
125 lines
3.4 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
{
|
|
users.users.applicative = {
|
|
name = "applicative";
|
|
description = "<*>";
|
|
hashedPasswordFile = config.age.secrets.kfm-password.path;
|
|
isNormalUser = true;
|
|
extraGroups = [
|
|
"pipewire"
|
|
"audio"
|
|
];
|
|
};
|
|
|
|
# to run nspawn in nix sandbox
|
|
nix.settings = {
|
|
auto-allocate-uids = true;
|
|
system-features = [ "uid-range" ];
|
|
experimental-features = [
|
|
"auto-allocate-uids"
|
|
"cgroups"
|
|
];
|
|
extra-sandbox-paths = [ "/dev/net" ]; # needed for tests of VPNs
|
|
};
|
|
|
|
services.restic.backups.niveum = {
|
|
extraBackupArgs = [
|
|
"--exclude=${config.users.users.applicative.home}/src/nixpkgs/.git"
|
|
];
|
|
paths = [
|
|
config.users.users.applicative.home
|
|
];
|
|
};
|
|
|
|
security.sudo.extraRules = [
|
|
{
|
|
# still required for systemd-nspawn
|
|
users = [ config.users.users.applicative.name ];
|
|
commands = [ "ALL" ];
|
|
}
|
|
];
|
|
|
|
home-manager.users.applicative =
|
|
let
|
|
mainGitConfig = (import ./git.nix {
|
|
inherit pkgs lib config;
|
|
}).home-manager.users.me.programs.git;
|
|
mainAlacrittyConfig = (import ./alacritty.nix {
|
|
inherit pkgs lib config;
|
|
}).home-manager.users.me.programs.alacritty;
|
|
in
|
|
lib.recursiveUpdate
|
|
(import ./graphical/home-manager.nix {
|
|
inherit lib pkgs config;
|
|
})
|
|
{
|
|
xdg.enable = true;
|
|
home.stateVersion = "25.11";
|
|
|
|
programs.git = {
|
|
enable = true;
|
|
settings = {
|
|
inherit (mainGitConfig.settings) alias;
|
|
};
|
|
};
|
|
|
|
programs.alacritty = mainAlacrittyConfig;
|
|
|
|
services.hyprpaper =
|
|
let
|
|
# asgWallpaper = pkgs.fetchurl {
|
|
# url = "http://c.krebsco.de/asg-wallpaper.png";
|
|
# hash = "sha256-XLp8XcUgFgDKW5Qae0//0Xw9lhribcevQTVSQvClEB4=";
|
|
# };
|
|
|
|
backgroundColor = config.lib.stylix.colors.withHashtag.base06;
|
|
foregroundColor = config.lib.stylix.colors.withHashtag.base01;
|
|
width = 1920;
|
|
height = 1080;
|
|
|
|
svgUrl = "https://applicative.systems/_astro/logo-full.D8zRvqBZ.svg";
|
|
logoSvg = pkgs.fetchurl {
|
|
url = svgUrl;
|
|
hash = "sha256-qXDIEZsAPn4eUJ3kb5U6L3PMUCtWGYqhqyIaBt7FntE=";
|
|
};
|
|
|
|
asgWallpaper =
|
|
pkgs.runCommand "applicative-wallpaper.png"
|
|
{
|
|
nativeBuildInputs = [ pkgs.imagemagick ];
|
|
}
|
|
''
|
|
# 1. We use -background to set the canvas color
|
|
# 2. We use -fuzz and -opaque to replace the logo's internal colors
|
|
# 3. We use -gravity and -extent to center it on a wallpaper-sized canvas
|
|
|
|
convert \
|
|
-background none \
|
|
-density 300 \
|
|
"${logoSvg}" \
|
|
-fuzz 100% -fill "${foregroundColor}" -opaque black \
|
|
-resize 800x800 \
|
|
-gravity center \
|
|
-background "${backgroundColor}" \
|
|
-extent ${toString width}x${toString height} \
|
|
$out
|
|
'';
|
|
in
|
|
{
|
|
enable = true;
|
|
settings = {
|
|
ipc = false;
|
|
splash = true;
|
|
preload = [ "${asgWallpaper}" ];
|
|
wallpaper = [ ",${asgWallpaper}" ];
|
|
};
|
|
};
|
|
|
|
};
|
|
}
|