feat(nix): Functional system-manager

This commit is contained in:
Ahmad Ansori Palembani 2024-10-18 13:20:27 +07:00
parent 21429963ef
commit 0e80eb3083
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
8 changed files with 69 additions and 103 deletions

View file

@ -39,6 +39,14 @@ darwin-rebuild switch --flake .
Nix in non-NixOS Linux is handled by [system-manager](https://github.com/numtide/system-manager). Nix in non-NixOS Linux is handled by [system-manager](https://github.com/numtide/system-manager).
#### Rebuild
Unfortunately, root access is required in order to use system-manager.
```sh
sudo -i nix run 'github:numtide/system-manager' --extra-experimental-features "nix-command flakes" -- switch --flake $PWD
```
### Home ### Home
This is for per-user setup. Instead of managing the entire system, you're This is for per-user setup. Instead of managing the entire system, you're

View file

@ -15,8 +15,7 @@
} }
); );
# FIXME: Not yet functional systemConfigs = ( # sudo is required, sadly
systemConfigs = (
import ./systems/nix { import ./systems/nix {
inherit (nixpkgs) lib; inherit (nixpkgs) lib;
inherit inputs nixpkgs system-manager home-manager vars; inherit inputs nixpkgs system-manager home-manager vars;

View file

@ -1,6 +1,15 @@
{ pkgs, ... }: { pkgs, ... }:
{ let
custom = {
python = (pkgs.python312Full.withPackages (py: [
py.pip
py.tkinter
py.dnspython
]));
};
in {
inherit custom;
packages = [ packages = [
pkgs.zsh pkgs.zsh
pkgs.home-manager pkgs.home-manager

View file

@ -8,43 +8,36 @@
# NOTE: List packages installed in system profile. To search by name, run: # NOTE: List packages installed in system profile. To search by name, run:
# `nix-env -qaP | grep wget` # `nix-env -qaP | grep wget`
environment.systemPackages = environment.systemPackages =
let common.packages ++ [
python = (pkgs.python312Full.withPackages (py: [ pkgs.git
py.pip pkgs.vim
py.tkinter pkgs.neovim
py.dnspython pkgs.pass
])); pkgs.passExtensions.pass-otp
in pkgs.gnupg
common.packages ++ [ pkgs.htop-vim
pkgs.git common.custom.python
pkgs.vim (pkgs.inkscape.override { python3 = common.custom.python; })
pkgs.neovim #(pkgs.poetry.override { python3 = common.custom.python; })
pkgs.pass pkgs.fastfetch
pkgs.passExtensions.pass-otp pkgs.eza
pkgs.gnupg pkgs.lf
pkgs.htop-vim pkgs.wimlib
python pkgs.google-cloud-sdk
(pkgs.inkscape.override { python3 = python; }) pkgs.nmap
#(pkgs.poetry.override { python3 = python; }) pkgs.cargo
pkgs.fastfetch pkgs.android-tools
pkgs.eza pkgs.coreutils-full
pkgs.lf pkgs.rclone
pkgs.wimlib (pkgs.yt-dlp.override { withAlias = true; })
pkgs.google-cloud-sdk pkgs.zoxide
pkgs.nmap # >> For macOS only
pkgs.cargo ] ++ pkgs.lib.optionals (pkgs.stdenv.isDarwin) [
pkgs.android-tools pkgs.duti
pkgs.coreutils-full pkgs.pinentry_mac
pkgs.rclone pkgs.iina
(pkgs.yt-dlp.override { withAlias = true; }) ];
pkgs.zoxide # << For macOS only
# >> For macOS only
] ++ pkgs.lib.optionals (pkgs.stdenv.isDarwin) [
pkgs.duti
pkgs.pinentry_mac
pkgs.iina
];
# << For macOS only
# Auto upgrade nix package and the daemon service. # Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true; services.nix-daemon.enable = true;

View file

@ -1,59 +0,0 @@
{ pkgs, config, vars, common, ... }:
{
# NOTE: List packages installed in system profile. To search by name, run:
# `nix-env -qaP | grep wget`
environment.systemPackages =
let
python = (pkgs.python312Full.withPackages (py: [
py.pip
py.tkinter
py.dnspython
]));
in
common.packages ++ [
pkgs.zsh
pkgs.git
pkgs.vim
pkgs.neovim
pkgs.pass
pkgs.passExtensions.pass-otp
pkgs.gnupg
pkgs.htop-vim
python
(pkgs.inkscape.override { python3 = python; })
#(pkgs.poetry.override { python3 = python; })
pkgs.fastfetch
pkgs.eza
pkgs.lf
pkgs.wimlib
pkgs.google-cloud-sdk
pkgs.nmap
pkgs.cargo
pkgs.android-tools
pkgs.coreutils-full
pkgs.rclone
(pkgs.yt-dlp.override { withAlias = true; })
pkgs.zoxide
];
# Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true;
#nix.package = pkgs.nix;
# Necessary for using flakes on this system.
nix.settings.experimental-features = "nix-command flakes";
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true; # default shell on catalina
#programs.fish.enable = true;
# Set Git commit hash for darwin-version.
system.configurationRevision = vars.rev or null;
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system = {
stateVersion = 4;
};
}

View file

@ -11,10 +11,9 @@ in
common = (mkCommon pkgs); common = (mkCommon pkgs);
in in
system-manager.lib.makeSystemConfig { system-manager.lib.makeSystemConfig {
inherit system; extraSpecialArgs = { inherit inputs pkgs vars common; };
specialArgs = { inherit inputs pkgs vars common; };
modules = [ modules = [
./configuration.nix ./potato
]; ];
}; };
} }

View file

@ -0,0 +1,16 @@
{ pkgs, config, vars, common, ... }:
{
config = {
system-manager.allowAnyDistro = true;
# NOTE: List packages installed in system profile. To search by name, run:
# `nix-env -qaP | grep wget`
environment.systemPackages =
common.packages ++ [
pkgs.zoxide
];
nixpkgs.hostPlatform = pkgs.system;
};
}

View file

@ -78,12 +78,13 @@ fi
# -- Path # -- Path
export BUN_INSTALL="$HOME/.bun" export BUN_INSTALL="$HOME/.bun"
if [ $ZI_IS_DARWIN ]; then if [ $ZI_IS_DARWIN = 1 ]; then
export PYTHONPATH="$HOME/Library/Python/3.10/lib:$PYTHONPATH" export PYTHONPATH="$HOME/Library/Python/3.10/lib:$PYTHONPATH"
LOCAL_PATH=$(du -d1 "$ZI_BINARY_HOME" | cut -f2 > /tmp/ENV_PATH && paste -sd ':' /tmp/ENV_PATH) LOCAL_PATH=$(du -d1 "$ZI_BINARY_HOME" | cut -f2 > /tmp/ENV_PATH && paste -sd ':' /tmp/ENV_PATH)
LOCAL_PATH="/run/current-system/sw/bin:/usr/local/bin:$HOME/.rd/bin:$HOME/Library/Python/3.10/bin:$LOCAL_PATH" LOCAL_PATH="/run/current-system/sw/bin:/usr/local/bin:$HOME/.rd/bin:$HOME/Library/Python/3.10/bin:$LOCAL_PATH"
else else
LOCAL_PATH=$(du "$ZI_BINARY_HOME" -d 1 | cut -f2 | paste -sd ':') LOCAL_PATH=$(du "$ZI_BINARY_HOME" -d 1 | cut -f2 | paste -sd ':')
LOCAL_PATH="/run/system-manager/sw/bin:$LOCAL_PATH"
fi fi
PATH="$BUN_INSTALL/bin:$HOME/.pub-cache/bin:$HOME/.local/share/go/bin:$ANDROID_AVD_HOME:$HOME/.local/share/npm/bin:$HOME/.local/share/cargo/bin:$ZI_SCRIPTS_HOME/bin:$LOCAL_PATH${PATH:+:${PATH}}" PATH="$BUN_INSTALL/bin:$HOME/.pub-cache/bin:$HOME/.local/share/go/bin:$ANDROID_AVD_HOME:$HOME/.local/share/npm/bin:$HOME/.local/share/cargo/bin:$ZI_SCRIPTS_HOME/bin:$LOCAL_PATH${PATH:+:${PATH}}"
# export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/library # export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/library