bootstrap home manager and nix packages on login
This commit is contained in:
parent
9d5b4ddecd
commit
83e657e74b
6 changed files with 67 additions and 57 deletions
|
|
@ -0,0 +1 @@
|
|||
../randofin-nixpkgs-init.service
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
[Unit]
|
||||
Description=Install Nix Home Manager and packages on first login
|
||||
ConditionUser=!root
|
||||
ConditionPathExists=!%h/.local/state/randofin-os/nixpkgs-init.done
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/libexec/randofin-os/nixpkgs.sh
|
||||
ExecStartPost=/usr/bin/mkdir -p %h/.local/state/randofin-os
|
||||
ExecStartPost=/usr/bin/touch %h/.local/state/randofin-os/nixpkgs-init.done
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
23
files/system/usr/libexec/randofin-os/nixpkgs.sh
Executable file
23
files/system/usr/libexec/randofin-os/nixpkgs.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env bash
|
||||
set -oue pipefail
|
||||
nix run github:nix-community/home-manager/release-25.11 -- init --switch
|
||||
|
||||
pkgs='uv micro vscodium mc'
|
||||
f=~/.config/home-manager/home.nix
|
||||
tmp="$(mktemp)"
|
||||
{
|
||||
echo " home.packages = ["
|
||||
for p in $pkgs; do echo " pkgs.$p"; done
|
||||
echo " ];"
|
||||
} > "$tmp"
|
||||
|
||||
sed -i "/^[[:space:]]*home\.packages[[:space:]]*=[[:space:]]*\[/,/^[[:space:]]*];[[:space:]]*$/{
|
||||
/^[[:space:]]*home\.packages[[:space:]]*=/{
|
||||
r $tmp
|
||||
}
|
||||
d
|
||||
}" "$f"
|
||||
|
||||
rm -f "$tmp"
|
||||
|
||||
home-manager switch
|
||||
Loading…
Add table
Add a link
Reference in a new issue