summaryrefslogtreecommitdiff
path: root/nix/modules/home
diff options
context:
space:
mode:
authorPreston Pan <ret2pop@nullring.xyz>2026-03-01 23:51:02 -0800
committerPreston Pan <ret2pop@nullring.xyz>2026-03-01 23:51:02 -0800
commita05e0614c1bb75f77717a943dc4ac75a0cca4652 (patch)
treed52ddee9db6d6eabbafc73f04aa83f6bbcd7f0c5 /nix/modules/home
parent75439737613d86975856c4bff0a1257f58fd1b1f (diff)
add everything; add CI
Diffstat (limited to 'nix/modules/home')
-rw-r--r--nix/modules/home/default.nix334
-rw-r--r--nix/modules/home/gtk.nix38
-rw-r--r--nix/modules/home/pantalaimon.nix2
-rw-r--r--nix/modules/home/secrets.nix45
-rw-r--r--nix/modules/home/user.nix183
5 files changed, 329 insertions, 273 deletions
diff --git a/nix/modules/home/default.nix b/nix/modules/home/default.nix
index 6e92c86..80b28ee 100644
--- a/nix/modules/home/default.nix
+++ b/nix/modules/home/default.nix
@@ -22,178 +22,198 @@
./user.nix
./gtk.nix
./secrets.nix
+ ./pantalaimon.nix
];
options = {
monorepo.profiles = {
- enable = lib.mkEnableOption "Enables home manager desktop configuration";
- # Programs
+ enable = lib.mkEnableOption "Enables home manager desktop configuration";
+ # Programs
graphics.enable = lib.mkEnableOption "Enables graphical programs for user";
- lang-c.enable = lib.mkEnableOption "Enables C language support";
- lang-sh.enable = lib.mkEnableOption "Enables sh language support";
- lang-rust.enable = lib.mkEnableOption "Enables Rust language support";
- lang-python.enable = lib.mkEnableOption "Enables python language support";
- lang-sol.enable = lib.mkEnableOption "Enables solidity language support";
- lang-openscad.enable = lib.mkEnableOption "Enables openscad language support";
- lang-js.enable = lib.mkEnableOption "Enables javascript language support";
- lang-nix.enable = lib.mkEnableOption "Enables nix language support";
- lang-idris.enable = lib.mkEnableOption "Enables idris language support";
- lang-agda.enable = lib.mkEnableOption "Enables agda language support";
- lang-coq.enable = lib.mkEnableOption "Enables coq language support";
+ lang-c.enable = lib.mkEnableOption "Enables C language support";
+ lang-sh.enable = lib.mkEnableOption "Enables sh language support";
+ lang-rust.enable = lib.mkEnableOption "Enables Rust language support";
+ lang-python.enable = lib.mkEnableOption "Enables python language support";
+ lang-sol.enable = lib.mkEnableOption "Enables solidity language support";
+ lang-openscad.enable = lib.mkEnableOption "Enables openscad language support";
+ lang-js.enable = lib.mkEnableOption "Enables javascript language support";
+ lang-nix.enable = lib.mkEnableOption "Enables nix language support";
+ lang-idris.enable = lib.mkEnableOption "Enables idris language support";
+ lang-agda.enable = lib.mkEnableOption "Enables agda language support";
+ lang-coq.enable = lib.mkEnableOption "Enables coq language support";
lang-lean.enable = lib.mkEnableOption "Enables lean language support";
- lang-haskell.enable = lib.mkEnableOption "Enables haskell language support";
- crypto.enable = lib.mkEnableOption "Enables various cryptocurrency wallets";
- art.enable = lib.mkEnableOption "Enables various art programs";
- music.enable = lib.mkEnableOption "Enables mpd";
- workstation.enable = lib.mkEnableOption "Enables workstation packages (music production and others)";
- cuda.enable = lib.mkEnableOption "Enables CUDA user package builds";
- hyprland.enable = lib.mkEnableOption "Enables hyprland";
- email.enable = lib.mkEnableOption "Enables email";
+ lang-haskell.enable = lib.mkEnableOption "Enables haskell language support";
+ crypto.enable = lib.mkEnableOption "Enables various cryptocurrency wallets";
+ art.enable = lib.mkEnableOption "Enables various art programs";
+ music.enable = lib.mkEnableOption "Enables mpd";
+ workstation.enable = lib.mkEnableOption "Enables workstation packages (music production and others)";
+ cuda.enable = lib.mkEnableOption "Enables CUDA user package builds";
+ hyprland.enable = lib.mkEnableOption "Enables hyprland";
+ email.enable = lib.mkEnableOption "Enables email";
};
};
config = {
- home.packages = (if config.monorepo.profiles.email.enable then [ pkgs.mu ] else [])
- ++
- (if config.monorepo.profiles.lang-c.enable then (with pkgs; [
- autobuild
- clang
- gdb
- gnumake
- bear
- clang-tools
- autotools-language-server
- ]) else [])
- ++
- (if config.monorepo.profiles.workstation.enable then (with pkgs; [
- mumble
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-js.enable then (with pkgs; [
- nodejs
- bun
- yarn
- typescript
- typescript-language-server
- vscode-langservers-extracted
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-rust.enable then (with pkgs; [
- cargo
- rust-analyzer
- rustfmt
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-python.enable then (with pkgs; [
- poetry
- python3
- python314Packages.python-lsp-server
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-sol.enable then (with pkgs; [
- solc
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-openscad.enable then (with pkgs; [
- openscad
- openscad-lsp
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-sh.enable then (with pkgs; [
- bash-language-server
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-haskell.enable then (with pkgs; [
- haskell-language-server
- haskellPackages.hlint
- ghc
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-coq.enable then (with pkgs; [
- coq
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-lean.enable then (with pkgs; [
- lean4
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-agda.enable then (with pkgs; [
- agda
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-idris.enable then (with pkgs; [
- idris
- idris2Packages.idris2Lsp
- ]) else [])
- ++
- (if config.monorepo.profiles.lang-nix.enable then (with pkgs; [
- nil
- nixd
- nixfmt
- nix-prefetch-scripts
- ]) else [])
- ++
- (if config.monorepo.profiles.crypto.enable then (with pkgs; [
- bitcoin
- # electrum
- monero-cli
- monero-gui
- ]) else [])
- ++
- (if config.monorepo.profiles.art.enable then (with pkgs; [
- inkscape
- # krita
- ]) else [])
- ++
- (if config.monorepo.profiles.music.enable then (with pkgs; [
- mpc
- sox
- ]) else [])
- ++
- (if config.monorepo.profiles.workstation.enable then (with pkgs; [
- alsa-utils
- alsa-scarlett-gui
- ardour
- audacity
- # blender
- foxdot
- fluidsynth
- qjackctl
- qsynth
- qpwgraph
- imagemagick
- supercollider
- inkscape
- # kdePackages.kdenlive
- # kicad
- murmur
- ]) else []);
+ home.packages = (if config.monorepo.profiles.email.enable then [ pkgs.mu ] else [ ])
+ ++
+ (if config.monorepo.profiles.lang-c.enable then
+ (with pkgs; [
+ autobuild
+ clang
+ gdb
+ gnumake
+ bear
+ clang-tools
+ autotools-language-server
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.workstation.enable then
+ (with pkgs; [
+ mumble
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-js.enable then
+ (with pkgs; [
+ nodejs
+ bun
+ yarn
+ typescript
+ typescript-language-server
+ vscode-langservers-extracted
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-rust.enable then
+ (with pkgs; [
+ cargo
+ rust-analyzer
+ rustfmt
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-python.enable then
+ (with pkgs; [
+ poetry
+ python3
+ python314Packages.python-lsp-server
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-sol.enable then
+ (with pkgs; [
+ solc
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-openscad.enable then
+ (with pkgs; [
+ openscad
+ openscad-lsp
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-sh.enable then
+ (with pkgs; [
+ bash-language-server
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-haskell.enable then
+ (with pkgs; [
+ haskell-language-server
+ haskellPackages.hlint
+ ghc
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-coq.enable then
+ (with pkgs; [
+ coq
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-lean.enable then
+ (with pkgs; [
+ lean4
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-agda.enable then
+ (with pkgs; [
+ agda
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-idris.enable then
+ (with pkgs; [
+ idris
+ idris2Packages.idris2Lsp
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.lang-nix.enable then
+ (with pkgs; [
+ nil
+ nixd
+ nixfmt
+ nix-prefetch-scripts
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.crypto.enable then
+ (with pkgs; [
+ bitcoin
+ # electrum
+ monero-cli
+ monero-gui
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.art.enable then
+ (with pkgs; [
+ inkscape
+ # krita
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.music.enable then
+ (with pkgs; [
+ mpc
+ sox
+ ]) else [ ])
+ ++
+ (if config.monorepo.profiles.workstation.enable then
+ (with pkgs; [
+ alsa-utils
+ alsa-scarlett-gui
+ ardour
+ audacity
+ # blender
+ foxdot
+ fluidsynth
+ qjackctl
+ qsynth
+ qpwgraph
+ imagemagick
+ supercollider
+ inkscape
+ # kdePackages.kdenlive
+ # kicad
+ murmur
+ ]) else [ ]);
monorepo.profiles = {
- enable = lib.mkDefault true;
- music.enable = lib.mkDefault config.monorepo.profiles.enable;
- hyprland.enable = lib.mkDefault config.monorepo.profiles.enable;
- email.enable = lib.mkDefault config.monorepo.profiles.enable;
+ enable = lib.mkDefault super.monorepo.profiles.home.enable;
+ music.enable = lib.mkDefault config.monorepo.profiles.enable;
+ email.enable = lib.mkDefault config.monorepo.profiles.enable;
+ cuda.enable = lib.mkDefault super.monorepo.profiles.cuda.enable;
- # Programming
+ # Programming
graphics.enable = lib.mkDefault (! super.monorepo.profiles.ttyonly.enable);
- lang-c.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-rust.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-python.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-sol.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-sh.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-openscad.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-js.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-nix.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-coq.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-lean.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-haskell.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-idris.enable = lib.mkDefault config.monorepo.profiles.enable;
- lang-agda.enable = lib.mkDefault config.monorepo.profiles.enable;
+ hyprland.enable = lib.mkDefault config.monorepo.profiles.graphics.enable;
+ lang-c.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-rust.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-python.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-sol.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-sh.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-openscad.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-js.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-nix.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-coq.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-lean.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-haskell.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-idris.enable = lib.mkDefault config.monorepo.profiles.enable;
+ lang-agda.enable = lib.mkDefault config.monorepo.profiles.enable;
- crypto.enable = lib.mkDefault config.monorepo.profiles.enable;
- art.enable = lib.mkDefault config.monorepo.profiles.enable;
- workstation.enable = lib.mkDefault config.monorepo.profiles.enable;
+ crypto.enable = lib.mkDefault config.monorepo.profiles.enable;
+ art.enable = lib.mkDefault config.monorepo.profiles.enable;
+ workstation.enable = lib.mkDefault super.monorepo.profiles.workstation.enable;
};
};
}
diff --git a/nix/modules/home/gtk.nix b/nix/modules/home/gtk.nix
index 902f993..6283581 100644
--- a/nix/modules/home/gtk.nix
+++ b/nix/modules/home/gtk.nix
@@ -1,25 +1,27 @@
{ lib, config, pkgs, ... }:
{
- gtk = {
- theme = {
- name = "catppuccin-mocha-pink-standard";
- package = pkgs.catppuccin-gtk.override {
- variant = "mocha";
- accents = [ "pink" ];
+ config = lib.mkIf config.monorepo.profiles.graphics.enable {
+ gtk = {
+ theme = {
+ name = "catppuccin-mocha-pink-standard";
+ package = pkgs.catppuccin-gtk.override {
+ variant = "mocha";
+ accents = [ "pink" ];
+ };
};
};
- };
- xdg.configFile = {
- "gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets";
- "gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css";
- "gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css";
+ xdg.configFile = {
+ "gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets";
+ "gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css";
+ "gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css";
- "gtk-3.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-3.0/gtk.css";
- "gtk-3.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-3.0/gtk-dark.css";
- "gtk-3.0/settings.ini".text = ''
- [Settings]
- gtk-theme-name=${config.gtk.theme.name}
- gtk-application-prefer-dark-theme=1
- '';
+ "gtk-3.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-3.0/gtk.css";
+ "gtk-3.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-3.0/gtk-dark.css";
+ "gtk-3.0/settings.ini".text = ''
+ [Settings]
+ gtk-theme-name=${config.gtk.theme.name}
+ gtk-application-prefer-dark-theme=1
+ '';
+ };
};
}
diff --git a/nix/modules/home/pantalaimon.nix b/nix/modules/home/pantalaimon.nix
index b3a4d42..35e72c3 100644
--- a/nix/modules/home/pantalaimon.nix
+++ b/nix/modules/home/pantalaimon.nix
@@ -1,7 +1,7 @@
{ lib, config, ... }:
{
services.pantalaimon = {
- enable = lib.mkDefault config.monorepo.profiles.enable;
+ enable = lib.mkDefault false;
settings = {
Default = {
LogLevel = "Debug";
diff --git a/nix/modules/home/secrets.nix b/nix/modules/home/secrets.nix
index 8de0f59..00be79b 100644
--- a/nix/modules/home/secrets.nix
+++ b/nix/modules/home/secrets.nix
@@ -1,33 +1,34 @@
{ config, super, ... }:
{
sops = {
- defaultSopsFile = if config.monorepo.profiles.graphics.enable
- then ../../secrets/secrets.yaml
- else ../../secrets/vps_secrets.yaml;
+ defaultSopsFile =
+ if config.monorepo.profiles.graphics.enable
+ then ../../secrets/secrets.yaml
+ else ../../secrets/vps_secrets.yaml;
age = {
keyFile = "/home/${super.monorepo.vars.userName}/.config/sops/age/keys.txt";
};
- secrets = if config.monorepo.profiles.graphics.enable then {
- mail = {
- format = "yaml";
- path = "${config.sops.defaultSymlinkPath}/mail";
- };
- cloudflare-dns = {
- format = "yaml";
- path = "${config.sops.defaultSymlinkPath}/cloudflare-dns";
- };
- digikey = {
- format = "yaml";
- path = "${config.sops.defaultSymlinkPath}/digikey";
- };
- dn42 = {
- format = "yaml";
- path = "${config.sops.defaultSymlinkPath}/dn42";
- };
- } else {
- };
+ secrets =
+ if super.monorepo.profiles.desktop.enable then {
+ mail = {
+ format = "yaml";
+ path = "${config.sops.defaultSymlinkPath}/mail";
+ };
+ cloudflare-dns = {
+ format = "yaml";
+ path = "${config.sops.defaultSymlinkPath}/cloudflare-dns";
+ };
+ digikey = {
+ format = "yaml";
+ path = "${config.sops.defaultSymlinkPath}/digikey";
+ };
+ dn42 = {
+ format = "yaml";
+ path = "${config.sops.defaultSymlinkPath}/dn42";
+ };
+ } else { };
defaultSymlinkPath = "/run/user/1000/secrets";
defaultSecretsMountPoint = "/run/user/1000/secrets.d";
};
diff --git a/nix/modules/home/user.nix b/nix/modules/home/user.nix
index fc8c2ae..d378fb6 100644
--- a/nix/modules/home/user.nix
+++ b/nix/modules/home/user.nix
@@ -2,24 +2,24 @@
{
home = {
activation.startup-files = lib.hm.dag.entryAfter [ "installPackages" ] ''
- if [ ! -d "/home/${config.monorepo.vars.userName}/email/${config.monorepo.vars.internetName}/" ]; then
- mkdir -p /home/${config.monorepo.vars.userName}/email/${config.monorepo.vars.internetName}/
- fi
+ if [ ! -d "/home/${config.monorepo.vars.userName}/email/${config.monorepo.vars.internetName}/" ]; then
+ mkdir -p /home/${config.monorepo.vars.userName}/email/${config.monorepo.vars.internetName}/
+ fi
- if [ ! -d "/home/${config.monorepo.vars.userName}/music" ]; then
- mkdir -p /home/${config.monorepo.vars.userName}/music
- fi
+ if [ ! -d "/home/${config.monorepo.vars.userName}/music" ]; then
+ mkdir -p /home/${config.monorepo.vars.userName}/music
+ fi
- if [ ! -d /home/${config.monorepo.vars.userName}/org ]; then
- mkdir -p /home/${config.monorepo.vars.userName}/org
- fi
+ if [ ! -d /home/${config.monorepo.vars.userName}/org ]; then
+ mkdir -p /home/${config.monorepo.vars.userName}/org
+ fi
- if [ ! -d /home/${config.monorepo.vars.userName}/src ]; then
- mkdir -p /home/${config.monorepo.vars.userName}/src
- fi
+ if [ ! -d /home/${config.monorepo.vars.userName}/src ]; then
+ mkdir -p /home/${config.monorepo.vars.userName}/src
+ fi
- touch /home/${config.monorepo.vars.userName}/org/agenda.org
- touch /home/${config.monorepo.vars.userName}/org/notes.org
+ touch /home/${config.monorepo.vars.userName}/org/agenda.org
+ touch /home/${config.monorepo.vars.userName}/org/notes.org
'';
enableNixpkgsReleaseCheck = false;
@@ -37,32 +37,61 @@
fzf
# passwords
- age sops
+ age
+ sops
# formatting
- ghostscript texliveFull pandoc
+ ghostscript
+ texliveFull
+ pandoc
# Emacs Deps
- graphviz jq
+ graphviz
+ jq
# Apps
# octaveFull
- grim swww vim kotatogram-desktop tg qwen-code element-desktop signal-desktop signal-cli thunderbird jami
+ grim
+ swww
+ vim
+ kotatogram-desktop
+ tg
+ qwen-code
+ element-desktop
+ signal-desktop
+ signal-cli
+ thunderbird
+ jami
# Sound/media
- pavucontrol alsa-utils imagemagick ffmpeg helvum
+ pavucontrol
+ alsa-utils
+ imagemagick
+ ffmpeg
+ helvum
# Net
- curl rsync gitFull iamb ungoogled-chromium
+ curl
+ rsync
+ gitFull
+ iamb
+ ungoogled-chromium
# Tor
- torsocks tor-browser
+ torsocks
+ tor-browser
# For transfering secrets onto new system
stow
# fonts
- nerd-fonts.iosevka noto-fonts noto-fonts-cjk-sans noto-fonts-color-emoji fira-code font-awesome_6 victor-mono
+ nerd-fonts.iosevka
+ noto-fonts
+ noto-fonts-cjk-sans
+ noto-fonts-color-emoji
+ fira-code
+ font-awesome_6
+ victor-mono
(aspellWithDicts
(dicts: with dicts; [ en en-computers en-science ]))
@@ -77,60 +106,64 @@
(pkgs.writeShellScriptBin "help"
''
-#!/usr/bin/env sh
-# Portable, colored, nicely aligned alias list
+ #!/usr/bin/env sh
+ # Portable, colored, nicely aligned alias list
-# Generate uncolored alias pairs
-aliases=$(cat <<'EOF'
-${let aliases = config.programs.zsh.shellAliases;
- in lib.concatStringsSep "\n" (lib.mapAttrsToList (name: value:
- "${name} -> ${value}"
- ) aliases)}
-EOF
- )
+ # Generate uncolored alias pairs
+ aliases=$(cat <<'EOF'
+ ${let aliases = config.programs.zsh.shellAliases;
+ in lib.concatStringsSep "\n" (lib.mapAttrsToList (name: value:
+ "${name} -> ${value}"
+ ) aliases)}
+ EOF
+ )
-# Align and color using awk
-echo "$aliases" | awk '
-BEGIN {
- GREEN="\033[0;32m";
- YELLOW="\033[0;33m";
- RESET="\033[0m";
- maxlen=0;
- }
-{
- # Split line on " -> "
- split($0, parts, / -> /);
- name[NR]=parts[1];
- cmd[NR]=parts[2];
- if(length(parts[1])>maxlen) maxlen=length(parts[1]);
-}
-END {
- for(i=1;i<=NR;i++) {
- # printf with fixed width for alias name
- printf "%s%-*s%s -> %s%s%s\n", GREEN, maxlen, name[i], RESET, YELLOW, cmd[i], RESET;
- }
-}'
-'')
+ # Align and color using awk
+ echo "$aliases" | awk '
+ BEGIN {
+ GREEN="\033[0;32m";
+ YELLOW="\033[0;33m";
+ RESET="\033[0m";
+ maxlen=0;
+ }
+ {
+ # Split line on " -> "
+ split($0, parts, / -> /);
+ name[NR]=parts[1];
+ cmd[NR]=parts[2];
+ if(length(parts[1])>maxlen) maxlen=length(parts[1]);
+ }
+ END {
+ for(i=1;i<=NR;i++) {
+ # printf with fixed width for alias name
+ printf "%s%-*s%s -> %s%s%s\n", GREEN, maxlen, name[i], RESET, YELLOW, cmd[i], RESET;
+ }
+ }'
+ '')
(writeShellScriptBin "remote-build"
''
-#!/bin/bash
-nixos-rebuild --sudo --ask-sudo-password --target-host "$1" switch --flake $HOME/monorepo/nix#spontaneity
-''
+ #!/bin/bash
+ nixos-rebuild --sudo --ask-sudo-password --target-host "$1" switch --flake $HOME/monorepo/nix#spontaneity
+ ''
)
(writeShellScriptBin "install-vps"
''
-#!/bin/bash
-nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config $HOME/monorepo/nix/systems/spontaneity/hardware-configuration.nix --flake $HOME/monorepo/nix#spontaneity --target-host "$1"
+ #!/bin/bash
+ nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config $HOME/monorepo/nix/systems/spontaneity/hardware-configuration.nix --flake $HOME/monorepo/nix#spontaneity --target-host "$1"
'')
(writeShellScriptBin "secrets"
''
-#!/bin/bash
-cd "$HOME/secrets"
-git pull # repo is over LAN
-stow */ # manage secrets with gnu stow
-cd "$HOME"
+ #!/bin/bash
+ cd "$HOME/secrets"
+ git pull # repo is over LAN
+ stow */ # manage secrets with gnu stow
+ cd "$HOME"
'')
+ (writeShellScriptBin "spontaneity-ci"
+ ''
+ #!/bin/bash
+ nixos-rebuild build-vm --flake $HOME/monorepo/nix#spontaneity && QEMU_OPTS="-serial stdio" ./result/bin/run-spontaneity-vm 2>&1 | tee vm-boot.log'')
] else [
pfetch
# net
@@ -145,22 +178,22 @@ cd "$HOME"
pinentry.package = pkgs.pinentry-emacs;
enable = true;
extraConfig = ''
- allow-emacs-pinentry
- allow-loopback-pinentry
- '';
+ allow-emacs-pinentry
+ allow-loopback-pinentry
+ '';
};
};
xdg.mimeApps = {
- enable = true;
+ enable = lib.mkDefault config.monorepo.profiles.graphics.enable;
defaultApplications = {
"x-scheme-handler/mailto" = "emacsclient-mail.desktop";
- "text/html" = "librewolf.desktop";
- "text/xml" = "librewolf.desktop";
- "application/xhtml+xml" = "librewolf.desktop";
- "x-scheme-handler/http" = "librewolf.desktop";
- "x-scheme-handler/https" = "librewolf.desktop";
- "x-scheme-handler/about" = "librewolf.desktop";
- "x-scheme-handler/unknown" = "librewolf.desktop";
+ "text/html" = "librewolf.desktop";
+ "text/xml" = "librewolf.desktop";
+ "application/xhtml+xml" = "librewolf.desktop";
+ "x-scheme-handler/http" = "librewolf.desktop";
+ "x-scheme-handler/https" = "librewolf.desktop";
+ "x-scheme-handler/about" = "librewolf.desktop";
+ "x-scheme-handler/unknown" = "librewolf.desktop";
};
};