chore: refactor user modules

This commit is contained in:
Lucien Cartier-Tilet 2025-07-27 22:50:25 +02:00
parent 15a39660eb
commit f396b3a8fb
94 changed files with 832 additions and 665 deletions

View File

@ -88,10 +88,9 @@
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
home-conf = "minimal";
};
modules = [
./users/phundrak/alys.nix
./users/phundrak/host/alys.nix
inputs.sops-nix.homeManagerModules.sops
];
};
@ -99,10 +98,9 @@
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
home-conf = "fullHome";
};
modules = [
./users/phundrak/marpa.nix
./users/phundrak/host/marpa.nix
inputs.sops-nix.homeManagerModules.sops
];
};
@ -110,10 +108,9 @@
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
home-conf = "fullHome";
};
modules = [
./users/phundrak/gampo.nix
./users/phundrak/host/gampo.nix
inputs.sops-nix.homeManagerModules.sops
];
};
@ -121,10 +118,9 @@
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
home-conf = "minimal";
};
modules = [
./users/phundrak/tilo.nix
./users/phundrak/host/tilo.nix
inputs.sops-nix.homeManagerModules.sops
];
};

View File

@ -23,7 +23,7 @@ in {
description = "Lucien Cartier-Tilet";
extraGroups = ["networkmanager" "wheel" "docker" "dialout" "podman"];
shell = pkgs.zsh;
openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ./keys;
openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ../../keys;
};
};
programs.zsh.enable = true;

View File

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.modules.bat;
cfg = config.home.cli.bat;
in {
options.modules.bat.extras = mkEnableOption "Enables extra packages for bat.";
options.home.cli.bat.extras = mkEnableOption "Enables extra packages for bat.";
config.programs.bat = {
enable = true;
config = {

View File

@ -0,0 +1,29 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.cli;
in {
imports = [
./bat.nix
./btop.nix
./direnv.nix
./eza.nix
./mu.nix
./nh.nix
./nix-index.nix
./scripts
./tealdeer.nix
./yt-dlp.nix
];
options.home.cli.fullDesktop = mkEnableOption "Enable all optional modules and options";
config.home.cli = {
bat.extras = mkDefault cfg.fullDesktop;
mu.enable = mkDefault cfg.fullDesktop;
scripts.enable = mkDefault cfg.fullDesktop;
yt-dlp.enable = mkDefault cfg.fullDesktop;
};
}

11
users/modules/cli/mu.nix Normal file
View File

@ -0,0 +1,11 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.cli.mu;
in {
options.home.cli.mu.enable = mkEnableOption "Enable mu";
config.programs.mu.enable = cfg.enable;
}

View File

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.modules.nh;
cfg = config.home.cli.nh;
in {
options.modules.nh.flake = mkOption {
options.home.cli.nh.flake = mkOption {
type = types.path;
default = "/home/phundrak/.dotfiles";
example = "/etc/nixos";

View File

@ -0,0 +1,10 @@
{inputs, ...}: {
imports = [
inputs.nix-index-database.homeModules.nix-index
];
programs = {
nix-index.enable = true;
nix-index-database.comma.enable = true;
};
}

View File

@ -0,0 +1,15 @@
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.home.cli.scripts;
files = filesystem.listFilesRecursive ./.;
scriptFiles = builtins.filter (path: baseNameOf path != "default.nix") files;
scripts = map (file: (import file {inherit pkgs config;})) scriptFiles;
in {
options.home.cli.scripts.enable = mkEnableOption "Add custom scripts to PATH";
config.home.packages = mkIf cfg.enable scripts;
}

View File

@ -1,10 +1,10 @@
{
pkgs,
emacsPackage,
config,
...
}:
pkgs.writeShellScriptBin "launch-with-emacsclient" ''
filename="$1"
line="$2"
column="$3"
${emacsPackage}/bin/emacsclient +$line:$column "$filename"''
${config.home.dev.editors.emacs.package}/bin/emacsclient +$line:$column "$filename"''

View File

@ -0,0 +1,18 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.cli.yt-dlp;
in {
options.home.cli.yt-dlp.enable = mkEnableOption "Enable yt-dlp";
config.programs.yt-dlp = mkIf cfg.enable {
inherit (cfg) enable;
settings = {
embed-thumbnail = true;
embed-subs = true;
sub-langs = "all";
};
};
}

View File

@ -1,17 +1,29 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home;
in {
imports = [
./basics.nix
./bat.nix
./btop.nix
./direnv.nix
./eza.nix
./gpg.nix
./mopidy.nix
./nh.nix
./nix-index.nix
./cli
./desktop
./dev
./media
./services
./security
./shell
./ssh.nix
./tealdeer.nix
./vcs
];
options.home.fullDesktop = mkEnableOption "Enable most modules";
config.home = {
cli.fullDesktop = mkDefault cfg.fullDesktop;
desktop.fullDesktop = mkDefault cfg.fullDesktop;
dev.fullDesktop = mkDefault cfg.fullDesktop;
media.fullDesktop = mkDefault cfg.fullDesktop;
security.fullDesktop = mkDefault cfg.fullDesktop;
services.fullDesktop = mkDefault cfg.fullDesktop;
};
}

View File

@ -0,0 +1,32 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.desktop;
in {
imports = [
./emoji.nix
./eww.nix
./hyprland.nix
./kdeconnect.nix
./kitty.nix
./obs.nix
./qt.nix
./swaync.nix
./waybar.nix
./wlsunset.nix
./wofi.nix
];
options.home.desktop.fullDesktop = mkEnableOption "Enable options for graphical environments";
config.home.desktop = {
eww.enable = mkDefault cfg.fullDesktop;
hyprland.enable = mkDefault cfg.fullDesktop;
kdeconnect.enable = mkDefault cfg.fullDesktop;
kitty.enable = mkDefault cfg.fullDesktop;
obs.enable = mkDefault cfg.fullDesktop;
qt.enable = mkDefault cfg.fullDesktop;
};
}

View File

@ -0,0 +1,14 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.desktop.eww;
in {
options.home.desktop.eww.enable = mkEnableOption "Enable eww support";
config.programs.eww = mkIf cfg.enable {
inherit (cfg) enable;
configDir = ./eww-config;
};
}

View File

@ -5,8 +5,9 @@
...
}:
with lib; let
cfg = config.modules.hyprland;
rofi-emoji = import ../scripts/rofi-emoji.nix {inherit pkgs;};
cfg = config.home.desktop.hyprland;
rofi-emoji = import ../cli/scripts/rofi-emoji.nix {inherit pkgs;};
laptops = ["gampo"];
in {
imports = [
./swaync.nix
@ -14,33 +15,34 @@ in {
./wlsunset.nix
];
options.modules.hyprland = {
options.home.desktop.hyprland = {
enable = mkEnableOption "Enables Hyprland";
swaync = mkEnableOption "Enables swaync";
emacsPkg = mkOption {
type = types.package;
default = pkgs.emacs;
default = config.home.dev.editors.emacs.package or pkgs.emacs;
# default = pkgs.emacs;
example = pkgs.emacs;
};
host = mkOption {
type = types.enum ["tilo" "gampo"];
default = "tilo";
type = types.enum ["gampo" "marpa"];
description = ''
Which host is Hyprland running on.
This helps determine the monitors layout.
This helps determine the monitors layout and enable battery support in waybar.
'';
};
waybar = {
enable = mkEnableOption "Enables waybar.";
battery = mkEnableOption "Enables battery support.";
style = mkOption {
type = types.path;
example = ./style.css;
};
};
};
config = mkIf cfg.enable {
home.desktop = {
swaync.enable = mkDefault true;
waybar = {
enable = mkDefault true;
battery = mkDefault (builtins.elem cfg.host laptops);
};
wlsunset.enable = mkDefault true;
wofi.enable = mkDefault true;
};
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
@ -58,7 +60,7 @@ in {
};
monitor =
{
"tilo" = [
"marpa" = [
"DP-1, 3440x1440@144, 1080x550, 1"
"DP-2, 2560x1080@60, 0x0, 1, transform, 1"
];
@ -286,12 +288,5 @@ in {
};
};
};
modules = {
swaync.enable = cfg.swaync;
waybar = mkIf cfg.waybar.enable {
inherit (cfg.waybar) enable battery style;
};
wlsunset.enable = true;
};
};
}

View File

@ -0,0 +1,14 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.desktop.kdeconnect;
in {
options.home.desktop.kdeconnect.enable = mkEnableOption "Enable KDE Connect";
config.services.kdeconnect = mkIf cfg.enable {
enable = true;
indicator = true;
};
}

View File

@ -1,6 +1,15 @@
{pkgs, ...}: {
programs.kitty = {
enable = true;
{
pkgs,
config,
lib,
...
}:
with lib; let
cfg = config.home.desktop.kitty;
in {
options.home.desktop.kitty.enable = mkEnableOption "Enable kitty terminal";
config.programs.kitty = mkIf cfg.enable {
inherit (cfg) enable;
themeFile = "Nord";
font = {
package = pkgs.cascadia-code;

View File

@ -0,0 +1,23 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.home.desktop.obs;
in {
options.home.desktop.obs.enable = mkEnableOption "Enables OBS Studio";
config.programs.obs-studio = mkIf cfg.enable {
inherit (cfg) enable;
plugins = with pkgs.obs-studio-plugins; [
input-overlay
obs-backgroundremoval
obs-mute-filter
obs-pipewire-audio-capture
obs-source-clone
obs-source-record
obs-tuna
];
};
}

View File

@ -0,0 +1,11 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.desktop.qt;
in {
options.home.desktop.qt.enable = mkEnableOption "Enable Qt support";
config.qt.enable = cfg.enable;
}

View File

@ -5,12 +5,9 @@
...
}:
with lib; let
cfg = config.modules.swaync;
cfg = config.home.desktop.swaync;
in {
options.modules.swaync = {
enable = mkEnableOption "Enables swaync";
};
options.home.desktop.swaync.enable = mkEnableOption "Enables swaync";
config = mkIf cfg.enable {
services.swaync.enable = true;
home.packages = [pkgs.swaynotificationcenter];

View File

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.modules.waybar;
cfg = config.home.desktop.waybar;
in {
options.modules.waybar = {
options.home.desktop.waybar = {
enable = mkEnableOption "Enables waybar.";
battery = mkEnableOption "Enables battery support.";
style = mkOption {

View File

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.modules.wlsunset;
cfg = config.home.desktop.wlsunset;
in {
options.modules.wlsunset = {
options.home.desktop.wlsunset = {
enable = mkEnableOption "Enables wlsunset";
latitude = mkOption {
type = with types; nullOr (oneOf [str ints.unsigned float]);

View File

@ -1,10 +1,18 @@
{
programs.wofi = {
enable = true;
lib,
config,
...
}:
with lib; let
cfg = config.home.desktop.wofi;
in {
options.home.desktop.wofi.enable = mkEnableOption "Enable wofi support";
config.programs.wofi = mkIf cfg.enable {
inherit (cfg) enable;
settings = {
modi = "ssh,drun,combi";
sidebar-mode = false;
width = 30;
width = 50;
line-margin = 10;
lines = 6;
columns = 2;

View File

@ -0,0 +1,20 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.dev;
in {
imports = [
./editors
./ollama.nix
./vcs
];
options.home.dev.fullDesktop = mkEnableOption "Enables everything except AI";
config.home.dev = {
vcs.fullDesktop = mkDefault cfg.fullDesktop;
editors.fullDesktop = mkDefault cfg.fullDesktop;
};
}

View File

@ -0,0 +1,20 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.dev.editors;
in {
imports = [
./emacs.nix
];
options.home.dev.editors.fullDesktop = mkEnableOption "Enable all editors";
config.home.dev.editors.emacs = {
enable = mkDefault cfg.fullDesktop;
service = mkDefault cfg.fullDesktop;
mu4eMime = mkDefault cfg.fullDesktop;
org-protocol = mkDefault cfg.fullDesktop;
};
}

View File

@ -11,9 +11,9 @@ with lib; let
epkgs.pdf-tools
]
));
cfg = config.modules.emacs;
cfg = config.home.dev.editors.emacs;
in {
options.modules.emacs = {
options.home.dev.editors.emacs = {
enable = mkEnableOption "enables Emacs";
package = mkOption {
type = types.package;
@ -25,6 +25,7 @@ in {
};
config = {
home.packages = [pkgs.emacs-all-the-icons-fonts];
programs.emacs = mkIf cfg.enable {
enable = true;
inherit (cfg) package;

View File

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.modules.ollama;
cfg = config.home.dev.ollama;
in {
options.modules.ollama = {
options.home.dev.ollama = {
enable = mkEnableOption "Enables Ollama";
gpu = mkOption {
type = types.nullOr types.enum ["none" "amd" "nvidia"];

View File

@ -0,0 +1,53 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.home.dev.vcs;
in {
imports = [./git.nix ./jujutsu.nix];
options.home.dev.vcs = {
fullDesktop = mkEnableOption "Enable all optional values";
name = mkOption {
type = types.str;
default = "Lucien Cartier-Tilet";
};
email = mkOption {
type = types.str;
default = "lucien@phundrak.com";
};
editor = mkOption {
type = types.str;
default = "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs";
};
publicKey = {
content = mkOption {
type = types.nullOr types.str;
example = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGj+J6N6SO+4P8dOZqfR1oiay2yxhhHnagH52avUqw5h";
default = null;
};
file = mkOption {
type = with types; nullOr path;
default = "/home/phundrak/.ssh/id_ed25519.pub";
};
};
};
config.home.dev.vcs = {
git = {
enable = mkDefault true;
inherit (cfg) name email editor;
publicKeyFile = cfg.publicKey.file;
cliff = mkDefault cfg.fullDesktop;
completeConfig = mkDefault cfg.fullDesktop;
};
jj = {
enable = mkDefault true;
inherit (cfg) name email editor;
signing.sshKey = mkDefault (cfg.publicKey.file or cfg.publicKey.content);
};
};
}

View File

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.modules.git;
cfg = config.home.dev.vcs.git;
in {
options.modules.git = {
options.home.dev.vcs.git = {
enable = mkEnableOption "enables git";
email = mkOption {
type = types.str;
@ -57,7 +57,11 @@ in {
};
completeConfig = mkEnableOption "Complete configuration for workstations";
emacs = {
integration = mkEnableOption "enables Emacs integration";
integration = mkOption {
description = "enables Emacs integration";
type = types.bool;
default = config.home.dev.editors.emacs.enable;
};
pkg = mkOption {
type = types.package;
default = pkgs.emacs;
@ -111,7 +115,7 @@ in {
};
commit.gpgsign = cfg.publicKeyFile != null;
gpg.format = "ssh";
gpg.ssh.allowedSignersFile = (mkIf (cfg.publicKeyFile != null)) "~/.ssh/allowed_signers";
gpg.ssh.allowedSignersFile = "${config.home.homeDirectory}/.ssh/allowed_signers";
init.defaultBranch = "main";
pull.rebase = true;
push = {

View File

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.modules.jj;
cfg = config.home.dev.vcs.jj;
in {
options.modules.jj = {
options.home.dev.vcs.jj = {
enable = mkEnableOption "enables jj";
name = mkOption {
type = types.str;
@ -19,7 +19,10 @@ in {
};
editor = mkOption {
type = types.str;
default = "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs";
default =
if config.home.dev.editors.emacs.enable
then "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs"
else "${pkgs.nano}/bin/nano";
};
signing = {
enable = mkEnableOption "enables signing jj commits";

View File

@ -1,6 +0,0 @@
{
programs.eww = {
enable = true;
configDir = ./eww-config;
};
}

View File

@ -1,3 +0,0 @@
{
services.flatpak.enable = true;
}

View File

@ -1,12 +0,0 @@
{pkgs, ...}: {
programs.gpg = {
enable = true;
mutableKeys = true;
mutableTrust = true;
};
services.gpg-agent = {
enable = true;
enableSshSupport = true;
pinentry.package = pkgs.pinentry-emacs;
};
}

View File

@ -1,6 +0,0 @@
{
services.kdeconnect = {
enable = true;
indicator = true;
};
}

View File

@ -0,0 +1,22 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.media;
in {
imports = [
./mopidy.nix
./mpd.nix
./mpd-mpris.nix
./mpv.nix
];
options.home.media.fullDesktop = mkEnableOption "Enables everything";
config.home.media = {
mopidy.enable = mkDefault cfg.fullDesktop;
mpd.enable = mkDefault (cfg.fullDesktop or cfg.mpd-mpris.enable);
mpv.enable = mkDefault cfg.fullDesktop;
};
}

View File

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.modules.mopidy;
cfg = config.home.media.mopidy;
in {
options.modules.mopidy = {
options.home.media.mopidy = {
enable = mkEnableOption "Enables Mopidy.";
};

View File

@ -0,0 +1,16 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.media.mpd-mpris;
cfgMpd = config.home.media.mpd;
in {
options.home.media.mpd-mpris.enable = mkOption {
type = types.bool;
default = cfgMpd.enable;
example = false;
};
config.services.mpd-mpris.enable = cfg.enable;
}

View File

@ -0,0 +1,30 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.media.mpd;
in {
options.home.media.mpd.enable = mkEnableOption "Enables MPD";
config.services.mpd = mkIf cfg.enable {
inherit (cfg) enable;
musicDirectory = "${config.home.homeDirectory}/Music";
playlistDirectory = "${config.home.homeDirectory}/Music/playlists";
network.startWhenNeeded = true;
extraConfig = ''
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
bind_to_address "localhost"
auto_update "yes"
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
'';
};
}

View File

@ -1,6 +1,15 @@
{pkgs, ...}: {
programs.mpv = {
enable = true;
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.home.media.mpv;
in {
options.home.media.mpv.enable = mkEnableOption "Enable MPV";
config.programs.mpv = mkIf cfg.enable {
inherit (cfg) enable;
config = {
force-window = "immediate";
force-seekable = true; # force streams to be seekable
@ -16,7 +25,7 @@
screenshot-format = "png";
screenshot-high-bit-depth = true;
screenshot-png-compression = 6;
screenshot-directory = "~/Pictures/Screenshots/mpv";
screenshot-directory = "${config.home.homeDirectory}/Pictures/Screenshots/mpv";
deband = true;
deband-iterations = 2;

View File

@ -1,21 +0,0 @@
{
services.mpd = {
enable = true;
musicDirectory = "/home/phundrak/Music";
playlistDirectory = "/home/phundrak/Music/playlists";
extraConfig = ''
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
bind_to_address "localhost"
auto_update "yes"
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
'';
};
}

View File

@ -1,8 +0,0 @@
{inputs, ...}: {
imports = [
inputs.nix-index-database.homeModules.nix-index
];
programs.nix-index.enable = true;
programs.nix-index-database.comma.enable = true;
}

View File

@ -1,3 +0,0 @@
{
qt.enable = true;
}

View File

@ -0,0 +1,18 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.security;
in {
imports = [
./gpg.nix
./ssh.nix
];
options.home.security.fullDesktop = mkEnableOption "Enable all modules";
config.home.security = {
gpg.enable = mkDefault cfg.fullDesktop;
ssh.enable = mkDefault cfg.fullDesktop;
};
}

View File

@ -0,0 +1,32 @@
{
pkgs,
lib,
config,
...
}:
with lib; let
cfg = config.home.security.gpg;
in {
options.home.security.gpg = {
enable = mkEnableOption "Enable GPG";
pinentry.package = mkOption {
type = types.package;
default =
if config.home.dev.editors.emacs.enable
then pkgs.pinentry-emacs
else pkgs.pinentry-gtk2;
};
};
config = mkIf cfg.enable {
programs.gpg = {
inherit (cfg) enable;
mutableKeys = true;
mutableTrust = true;
};
services.gpg-agent = {
enable = true;
enableSshSupport = true;
pinentry.package = cfg.pinentry.package;
};
};
}

View File

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.modules.ssh;
cfg = config.home.security.ssh;
in {
options.modules.ssh = {
options.home.security.ssh = {
enable = mkEnableOption "enables SSH";
hosts = mkOption {
type = types.nullOr types.path;
@ -17,7 +17,7 @@ in {
config = {
programs.ssh = mkIf cfg.enable {
enable = true;
includes = mkIf (cfg.hosts != null) [cfg.hosts];
includes = lists.optional (cfg.hosts != null) cfg.hosts;
};
};
}

View File

@ -0,0 +1,11 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.services.blanket;
in {
options.home.services.blanket.enable = mkEnableOption "Enable blanket";
config.services.blanket.enable = cfg.enable;
}

View File

@ -0,0 +1,22 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.services;
in {
imports = [
./blanket.nix
./mbsync.nix
./mpris-proxy.nix
./playerctld.nix
];
options.home.services.fullDesktop = mkEnableOption "Enable all modules";
config.home.services = {
blanket.enable = mkDefault cfg.fullDesktop;
mbsync.enable = mkDefault cfg.fullDesktop;
mpris-proxy.enable = mkDefault cfg.fullDesktop;
playerctld.enable = mkDefault cfg.fullDesktop;
};
}

View File

@ -4,26 +4,14 @@
...
}:
with lib; let
cfg = config.modules.mbsync;
cfg = config.home.services.mbsync;
in {
options.modules.mbsync = {
options.home.services.mbsync = {
enable = mkEnableOption "Enables mbsync";
passwordFile = mkOption {
type = types.str;
example = "/var/email/password";
};
service.enable = mkOption {
type = types.bool;
default = true;
};
host = mkOption {
type = types.str;
default = "mail.phundrak.com";
};
user = mkOption {
type = types.str;
default = "lucien@phundrak.com";
};
};
config = mkIf cfg.enable {

View File

@ -0,0 +1,11 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.services.mpris-proxy;
in {
options.home.services.mpris-proxy.enable = mkEnableOption "Enable MPRIS forwarding towards bluetooth and MIDI";
config.services.mpris-proxy.enable = cfg.enable;
}

View File

@ -0,0 +1,11 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.home.services.playerctld;
in {
options.home.services.playerctld.enable = mkEnableOption "Enable playerctld daemon";
config.services.playerctld.enable = cfg.enable;
}

View File

@ -4,9 +4,9 @@
...
}:
with lib; let
cfg = config.modules.bash;
cfg = config.home.shell.bash;
in {
options.modules.bash = {
options.home.shell.bash = {
enable = mkEnableOption "Enables bash";
aliases = mkOption {
type = types.attrsOf types.str;

View File

@ -61,7 +61,7 @@ with lib; let
please = "sudo -A";
wget = "wget --hsts-file=\"$XDG_DATA_HOME/wget-hsts\" -c";
};
cfg = config.modules.shell;
cfg = config.home.shell;
in {
imports = [
./bash.nix
@ -69,73 +69,22 @@ in {
./starship.nix
./tmux.nix
./zsh.nix
./zoxide.nix
];
options.modules.shell = {
eatIntegration = mkEnableOption "Enable Emacs Eat integration in Bash or Zsh";
enableBash = mkOption {
type = types.bool;
default = true;
description = "Enables bash";
options.home.shell.fullDesktop = mkEnableOption "Enable all shells";
config.home.shell = {
enableShellIntegration = cfg.bash.enable or cfg.zsh.enable or cfg.fish.enable;
bash = {
aliases = mkDefault aliases;
enable = mkDefault cfg.fullDesktop;
};
enableFish = mkOption {
type = types.bool;
default = true;
description = "Enables fish";
fish = {
abbrs = mkDefault aliases;
enable = mkDefault cfg.fullDesktop;
};
enableZsh = mkOption {
type = types.bool;
default = true;
description = "Enables zsh";
};
starship = {
enable = mkEnableOption "Enables the starship prompt.";
jjIntegration = mkEnableOption "Enables Jujutsu integration in starship.";
};
tmux.enable = mkEnableOption "Enables tmux";
zoxide = {
enable = mkOption {
type = types.bool;
default = true;
description = "enables zoxide";
};
replaceCd = mkOption {
type = types.bool;
default = true;
description = "makes zoxide replace cd";
};
};
};
config = {
home.shell = {
enableFishIntegration = mkDefault cfg.enableFish;
enableBashIntegration = mkDefault cfg.enableBash;
enableZshIntegration = mkDefault cfg.enableZsh;
};
modules = {
fish = {
enable = mkDefault cfg.enableFish;
abbrs = mkDefault aliases;
};
bash = {
enable = mkDefault cfg.enableBash;
aliases = mkDefault aliases;
};
zsh = {
enable = mkDefault cfg.enableZsh;
abbrs = mkDefault aliases;
};
tmux.enable = cfg.tmux.enable;
inherit (cfg) starship;
};
programs.zoxide = mkIf cfg.zoxide.enable {
enable = true;
options = mkIf cfg.zoxide.replaceCd [
"--cmd cd"
];
zsh = {
abbrs = mkDefault aliases;
enable = mkDefault cfg.fullDesktop;
};
};
}

View File

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.modules.fish;
cfg = config.home.shell.fish;
in {
options.modules.fish = {
options.home.shell.fish = {
enable = lib.mkEnableOption "enables fish";
abbrs = lib.mkOption {
type = types.attrsOf types.str;

View File

@ -4,17 +4,21 @@
...
}:
with lib; let
cfg = config.modules.starship;
cfg = config.home.shell.starship;
in {
options.modules.starship = {
options.home.shell.starship = {
enable = mkEnableOption "Enables the starship prompt.";
jjIntegration = mkEnableOption "Enables Jujutsu integration in starship.";
jjIntegration = mkOption {
description = "Enable Jujutsu integration in starship";
default = config.programs.jujutsu.enable;
type = types.bool;
};
};
config.programs.starship = mkIf cfg.enable {
inherit (cfg) enable;
enableTransience = true;
settings = {
settings = mkIf cfg.jjIntegration {
custom.jj = {
description = "The current jj status";
detect_folders = [".jj"];

View File

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.modules.tmux;
cfg = config.home.shell.tmux;
in {
options.modules.tmux.enable = mkEnableOption "Enable tmux";
options.home.shell.tmux.enable = mkEnableOption "Enable tmux";
config.programs.tmux = mkIf cfg.enable {
inherit (cfg) enable;
baseIndex = 1;

View File

@ -0,0 +1,19 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.home.shell.zoxide;
in {
options.home.shell.zoxide = {
enable = mkEnableOption "Enable zoxide";
replaceCd = mkEnableOption "Replace cd with zoxide";
};
config.programs.zoxide = mkIf cfg.enable {
inherit (cfg) enable;
options = mkIf cfg.replaceCd [
"--cmd cd"
];
};
}

View File

@ -5,9 +5,9 @@
...
}:
with lib; let
cfg = config.modules.zsh;
cfg = config.home.shell.zsh;
in {
options.modules.zsh = {
options.home.shell.zsh = {
enable = lib.mkEnableOption "Enables zsh";
abbrs = lib.mkOption {
type = types.attrsOf types.str;
@ -24,70 +24,73 @@ in {
};
};
config.programs.zsh = lib.mkIf cfg.enable {
enable = true;
autocd = true;
autosuggestion = {
config = lib.mkIf cfg.enable {
programs.zsh = {
enable = true;
strategy = ["match_prev_cmd" "completion"];
};
enableCompletion = true;
history = {
findNoDups = true;
ignoreAllDups = true;
ignoreDups = true;
ignoreSpace = true;
path = "${config.xdg.dataHome}/zsh/zsh_history";
saveNoDups = true;
};
historySubstringSearch.enable = true;
initContent = with lib;
concatLines [
''
bindkey -e
bindkey '^p' history-search-backward
bindkey '^n' history-search-forward
autocd = true;
autosuggestion = {
enable = true;
strategy = ["match_prev_cmd" "completion"];
};
enableCompletion = true;
enableVteIntegration = true;
history = {
findNoDups = true;
ignoreAllDups = true;
ignoreDups = true;
ignoreSpace = true;
path = "${config.xdg.dataHome}/zsh/zsh_history";
saveNoDups = true;
};
historySubstringSearch.enable = true;
initContent = with lib;
concatLines [
''
bindkey -e
bindkey '^p' history-search-backward
bindkey '^n' history-search-forward
# Completion styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' list-colors "''${(s.:.)LS_COLORS}"
zstyle ':completion:*' menu no
zstyle ':fzf-tab:complete:cd:*' fzf-preview '${pkgs.eza}/bin/eza $realpath'
''
(strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"'')
cfg.zshrcExtra
];
oh-my-zsh = {
enable = true;
# Completion styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' list-colors "''${(s.:.)LS_COLORS}"
zstyle ':completion:*' menu no
zstyle ':fzf-tab:complete:cd:*' fzf-preview '${pkgs.eza}/bin/eza $realpath'
''
(strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"'')
cfg.zshrcExtra
];
oh-my-zsh = {
enable = true;
plugins = [
"dirhistory"
"sudo"
];
};
plugins = [
"dirhistory"
"sudo"
{
name = "fzf-tab";
src = pkgs.fetchFromGitHub {
owner = "Aloxaf";
repo = "fzf-tab";
rev = "v1.2.0";
sha256 = "sha256-q26XVS/LcyZPRqDNwKKA9exgBByE0muyuNb0Bbar2lY=";
};
}
{
name = "zsh-autopair";
src = pkgs.fetchFromGitHub {
owner = "hlissner";
repo = "zsh-autopair";
rev = "449a7c3d095bc8f3d78cf37b9549f8bb4c383f3d";
sha256 = "sha256-3zvOgIi+q7+sTXrT+r/4v98qjeiEL4Wh64rxBYnwJvQ=";
};
}
];
};
plugins = [
{
name = "fzf-tab";
src = pkgs.fetchFromGitHub {
owner = "Aloxaf";
repo = "fzf-tab";
rev = "v1.2.0";
sha256 = "sha256-q26XVS/LcyZPRqDNwKKA9exgBByE0muyuNb0Bbar2lY=";
};
}
{
name = "zsh-autopair";
src = pkgs.fetchFromGitHub {
owner = "hlissner";
repo = "zsh-autopair";
rev = "449a7c3d095bc8f3d78cf37b9549f8bb4c383f3d";
sha256 = "sha256-3zvOgIi+q7+sTXrT+r/4v98qjeiEL4Wh64rxBYnwJvQ=";
};
}
];
syntaxHighlighting.enable = true;
zsh-abbr = {
enable = true;
abbreviations = cfg.abbrs;
syntaxHighlighting.enable = true;
zsh-abbr = {
enable = true;
abbreviations = cfg.abbrs;
};
};
};
}

View File

@ -1,113 +0,0 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.modules.vcs;
in {
imports = [./git.nix ./jujutsu.nix];
options.modules.vcs = {
git = {
enable = mkEnableOption "enables git";
cliff = mkEnableOption "enables git-cliff support";
sendmail = {
enable = mkOption {
type = types.bool;
default = true;
};
server = mkOption {
type = types.nullOr types.str;
default = "mail.phundrak.com";
};
user = mkOption {
type = types.nullOr types.str;
default = null;
};
encryption = mkOption {
type = types.enum ["tls" "ssl" "none"];
default = "none";
};
port = mkOption {
type = types.nullOr types.int;
default = 587;
};
passwordFile = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
Path to a file containing the password necessary for authenticating
against the mailserver.
This file should contain the password only, with no newline.
'';
};
};
browser = mkOption {
type = types.nullOr types.str;
example = "${pkgs.firefox}/bin/firefox";
default = null;
};
completeConfig = mkEnableOption "Complete configuration for workstations";
mergeTool = mkOption {
type = types.str;
default = "ediff";
};
emacs = {
integration = mkEnableOption "enables Emacs integration";
pkg = mkOption {
type = types.package;
default = pkgs.emacs;
};
};
};
jj.enable = mkEnableOption "enables jujutsu";
name = mkOption {
type = types.str;
default = "Lucien Cartier-Tilet";
};
email = mkOption {
type = types.str;
default = "lucien@phundrak.com";
};
editor = mkOption {
type = types.str;
default = "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs";
};
publicKey = {
content = mkOption {
type = types.nullOr types.str;
example = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGj+J6N6SO+4P8dOZqfR1oiay2yxhhHnagH52avUqw5h";
default = null;
};
file = mkOption {
type = with types; nullOr path;
default = "/home/phundrak/.ssh/id_ed25519.pub";
};
};
};
config = lib.mkIf (cfg.git.enable || cfg.jj.enable) {
home.file.".ssh/allowed_signers".text = mkIf (cfg.publicKey.content != null) (mkDefault ''
${cfg.email} namespaces="git" ${cfg.publicKey.content}
'');
modules = {
git = mkIf cfg.git.enable {
inherit (cfg.git) enable cliff sendmail browser completeConfig emacs mergeTool;
inherit (cfg) email name editor;
publicKeyFile = cfg.publicKey.file;
};
jj = mkIf cfg.jj.enable {
inherit (cfg.jj) enable;
inherit (cfg) name email editor;
signing.enable = cfg.publicKey.content != null;
signing.sshKey =
if (cfg.publicKey.file == null)
then cfg.publicKey.content
else cfg.publicKey.file;
};
};
};
}

View File

@ -1,10 +0,0 @@
{
programs.yt-dlp = {
enable = true;
settings = {
embed-thumbnail = true;
embed-subs = true;
sub-langs = "all";
};
};
}

View File

@ -1,8 +0,0 @@
{
imports = [./light-home.nix];
home.phundrak.sshKey = {
content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTv1lb6d99O84jeh6GdjPm8Gnt/HncSRhGhmoTq7BMK lucien@phundrak.com";
file = "/home/phundrak/.ssh/id_ed25519.pub";
};
modules.nh.flake = "/home/phundrak/.dotfiles";
}

View File

@ -7,7 +7,7 @@
Sent from GNU/Emacs
*** Sauvez un arbre, mangez un castor ***
*** Save a tree, eat a beaver ***
*** Save a tree, eat a beaver ***
'';
in {
home.file.".signature" = {

View File

@ -1,7 +0,0 @@
{
imports = [./home.nix];
home.phundrak.sshKey = {
content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBPhP4p9KGk6jSOxJzBu+RzJPHI6baT0o+xrgPeNRwfq lucien@phundrak.com";
file = "/home/phundrak/.ssh/id_ed25519.pub";
};
}

View File

@ -1,7 +1,6 @@
{
pkgs,
config,
inputs,
...
}: {
imports = [
@ -18,10 +17,9 @@
epkgs.pdf-tools
]
));
askpass = import ../scripts/askpass.nix {inherit pkgs;};
launchWithEmacsclient = import ../scripts/launch-with-emacsclient.nix {
inherit pkgs;
emacsPackage = emacsPkg;
askpass = import ../modules/cli/scripts/askpass.nix {inherit pkgs;};
launchWithEmacsclient = import ../modules/cli/scripts/launch-with-emacsclient.nix {
inherit pkgs config;
};
in {
sops.secrets = {
@ -30,83 +28,21 @@
"mopidy/spotify" = {};
};
home.sessionVariables = {
EDITOR = "${emacsPkg}/bin/emacsclient -c -a ${emacsPkg}/bin/emacs";
LAUNCH_EDITOR = "${launchWithEmacsclient}/bin/launch-with-emacsclient";
SUDO_ASKPASS = "${askpass}/bin/askpass";
LSP_USE_PLISTS = "true";
};
home = {
sessionVariables = {
EDITOR = "${emacsPkg}/bin/emacsclient -c -a ${emacsPkg}/bin/emacs";
LAUNCH_EDITOR = "${launchWithEmacsclient}/bin/launch-with-emacsclient";
SUDO_ASKPASS = "${askpass}/bin/askpass";
LSP_USE_PLISTS = "true";
};
modules = {
shell = {
eatIntegration = true;
starship.jjIntegration = true;
};
bat.extras = true;
packages.emacsPackage = emacsPkg;
mopidy.enable = true;
ollama.enable = true;
emacs = {
desktop.waybar.style = ./config/waybar/style.css;
dev.ollama = {
enable = true;
service = true;
package = emacsPkg;
mu4eMime = true;
org-protocol = true;
gpu = "amd";
};
hyprland = {
inherit emacsPkg;
enable = true;
swaync = true;
waybar = {
enable = true;
battery = true;
style = ./config/waybar/style.css;
};
};
mbsync = {
enable = true;
passwordFile = config.sops.secrets.emailPassword.path;
};
ssh = {
enable = true;
hosts = config.sops.secrets."ssh/hosts".path;
};
vcs.git = {
browser = "${inputs.zen-browser.packages.${pkgs.system}.default}/bin/zen";
emacs = {
integration = true;
pkg = emacsPkg;
};
cliff = true;
sendmail = {
enable = true;
passwordFile = config.sops.secrets.emailPassword.path;
};
};
};
programs = {
zsh.enableVteIntegration = true;
mu.enable = true;
obs-studio = {
enable = true;
plugins = with pkgs; [
obs-studio-plugins.input-overlay
obs-studio-plugins.obs-backgroundremoval
obs-studio-plugins.obs-mute-filter
obs-studio-plugins.obs-pipewire-audio-capture
obs-studio-plugins.obs-source-clone
obs-studio-plugins.obs-source-record
obs-studio-plugins.obs-tuna
];
};
};
services = {
blanket.enable = true;
mpris-proxy.enable = true;
playerctld.enable = true;
fullDesktop = true;
shell.fish.enable = true;
};
manual.html.enable = true;

View File

@ -0,0 +1,10 @@
{config, ...}: {
imports = [../light-home.nix];
home = {
cli.nh.flake = "${config.home.homeDirectory}/nixos";
phundrak.sshKey = {
content = builtins.readFile ../../../keys/id_alys.pub;
# file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
};
};
}

View File

@ -0,0 +1,11 @@
{config, ...}: {
imports = [../home.nix];
home = {
cli.nh.flake = "${config.home.homeDirectory}/nixos";
desktop.hyprland.host = "gampo";
phundrak.sshKey = {
content = builtins.readFile ../../../keys/id_gampo.pub;
# file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
};
};
}

View File

@ -0,0 +1,11 @@
{config, ...}: {
imports = [../home.nix];
home = {
cli.nh.flake = "${config.home.homeDirectory}/nixos";
desktop.hyprland.host = "marpa";
phundrak.sshKey = {
content = builtins.readFile ../../../keys/id_marpa.pub;
# file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
};
};
}

View File

@ -0,0 +1,10 @@
{config, ...}: {
imports = [../light-home.nix];
home = {
cli.nh.flake = "${config.home.homeDirectory}/nixos";
phundrak.sshKey = {
content = builtins.readFile ../../../keys/id_tilo.pub;
# file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
};
};
}

View File

@ -33,11 +33,10 @@ in {
age = {
# automatically import user SSH keys as age keys
sshKeyPaths = [
"/home/phundrak/.ssh/id_ed25519"
"${config.home.homeDirectory}/.ssh/id_ed25519"
];
# this will use an age key that is expected to already be in the filesystem
# keyFile = "/home/phundrak/.config/sops/age/keys.txt";
keyFile = "/home/phundrak/.local/sops-nix/key.txt";
keyFile = "${config.home.homeDirectory}/.local/sops-nix/key.txt";
# generate a new key if the key specified above does not exist
generateKey = true;
};
@ -47,23 +46,35 @@ in {
username = "phundrak";
homeDirectory = "/home/phundrak";
packages = [pkgs.tree pkgs.ncdu];
stateVersion = "24.11"; # Please read the comment before changing.
};
modules = {
shell = {
starship.enable = true;
tmux.enable = true;
};
vcs = {
git.enable = true;
phundrak.sshKey.file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
dev.vcs = {
jj.enable = true;
git.enable = true;
publicKey = cfg.sshKey;
};
ssh = {
security.ssh = {
enable = true;
hosts = config.sops.secrets."ssh/hosts".path;
};
shell = {
bash.enable = true;
zsh.enable = true;
starship = {
enable = true;
jjIntegration = true;
};
tmux.enable = true;
zoxide = {
enable = true;
replaceCd = true;
};
};
stateVersion = "24.11"; # Do not modify!
};
manual.manpages.enable = true;

View File

@ -1,7 +0,0 @@
{
imports = [./home.nix];
home.phundrak.sshKey = {
content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBPhP4p9KGk6jSOxJzBu+RzJPHI6baT0o+xrgPeNRwfq lucien@phundrak.com";
file = "/home/phundrak/.ssh/id_ed25519.pub";
};
}

View File

@ -2,109 +2,90 @@
pkgs,
inputs,
lib,
config,
...
}:
with lib; let
cfg = config.modules.packages;
in {
options.modules.packages.emacsPackage = mkOption {
type = types.package;
default = pkgs.emacs;
};
config.home.packages = with pkgs; let
scripts = import ../scripts {
inherit pkgs;
config.emacsPkg = cfg.emacsPackage;
};
in
[
flatpak
with lib; {
home.packages = with pkgs; [
# Terminal stuff
duf
ffmpeg
ripgrep-all
unzip
# LSP servers
bash-language-server
docker-language-server
kdePackages.qtdeclarative # For QML LSP
nil # Nix
python3 # for Emacs and LSP
yaml-language-server # Yaml (Docker, GitHub Actions, ...)
# Fonts
#nerdfonts
noto-fonts-cjk-sans
noto-fonts-cjk-serif
tibetan-machine
# Terminal stuff
duf
ffmpeg
ripgrep-all
unzip
# Browsers
amfora
# Fonts
#nerdfonts
noto-fonts-cjk-sans
noto-fonts-cjk-serif
tibetan-machine
# Media
ani-cli
audacity
plexamp
plex-desktop
spicetify-cli
spotify
pavucontrol # Volume control
# Browsers
amfora
# Social
vesktop # Discord alternative that works well with wayland
element-desktop
signal-desktop-bin
# Media
ani-cli
audacity
plexamp
plex-desktop
spicetify-cli
spotify
pavucontrol # Volume control
# Misc
bitwarden
gplates
libnotify
nextcloud-client
onlyoffice-bin
scrcpy
syncthing
watchmate
inputs.zen-browser.packages.${system}.default
inputs.pumo-system-info.packages.${system}.default
inputs.quickshell.packages.${system}.default
# Social
vesktop # Discord alternative that works well with wayland
element-desktop
signal-desktop-bin
# Games
atlauncher
heroic
modrinth-app
openmw
openttd-jgrpp
moonlight-qt
# Misc
bitwarden
gplates
libnotify
nextcloud-client
onlyoffice-bin
scrcpy
syncthing
watchmate
inputs.zen-browser.packages.${system}.default
inputs.pumo-system-info.packages.${system}.default
inputs.quickshell.packages.${system}.default
# Gnome stuff
gnome-tweaks
gnomeExtensions.docker
gnomeExtensions.syncthing-indicator
gnomeExtensions.tray-icons-reloaded
gthumb
# Games
atlauncher
heroic
modrinth-app
openmw
openttd-jgrpp
moonlight-qt
# Graphics
inkscape
gimp
gimpPlugins.fourier
gimpPlugins.farbfeld
# Emacs stuff
emacs-all-the-icons-fonts
# Dev
devenv
dive # A tool for exploring each layer in a docker image
grype # Vulnerability scanner for container images and filesystems
kicad # Working on my custom keyboard
podman-desktop
podman-compose
tectonic # better LaTeX engine
virt-manager
zeal
# Gnome stuff
gnome-tweaks
gnomeExtensions.docker
gnomeExtensions.syncthing-indicator
gnomeExtensions.tray-icons-reloaded
gthumb
# Graphics
inkscape
gimp
gimpPlugins.fourier
gimpPlugins.farbfeld
# Dev
devenv
dive # A tool for exploring each layer in a docker image
grype # Vulnerability scanner for container images and filesystems
kicad # Working on my custom keyboard
podman-desktop
podman-compose
tectonic # better LaTeX engine
virt-manager
zeal
]
++ scripts;
## LSP servers
bash-language-server
docker-language-server
kdePackages.qtdeclarative # For QML LSP
nil # Nix
python3 # for Emacs and LSP
yaml-language-server # Yaml (Docker, GitHub Actions, ...)
];
}

View File

@ -1,12 +0,0 @@
{
modules = {
emacs.enable = true;
kdeconnect.enable = true;
kitty.enable = true;
mbsync.enable = true;
mpd.enable = true;
mpv.enable = true;
wofi.enable = true;
yt-dlp.enable = true;
};
}

View File

@ -1,8 +0,0 @@
{
imports = [./light-home.nix];
home.phundrak.sshKey = {
content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILw9oiK8tZ5Vpz82RaRLpITU8qeJrT2hjvudGEDQu2QW lucien@phundrak.com";
file = "/home/phundrak/.ssh/id_ed25519.pub";
};
modules.nh.flake = "/tank/phundrak/nixos";
}

View File

@ -1,19 +0,0 @@
{
config,
pkgs,
...
}: let
askpass = import ./askpass.nix {inherit pkgs;};
in [
askpass
(import ./backup.nix {inherit pkgs;})
(import ./keygen.nix {inherit pkgs;})
(import ./launch-with-emacsclient.nix {
inherit pkgs;
emacsPackage = config.emacsPkg;
})
(import ./mp42webm.nix {inherit pkgs;})
(import ./plock.nix {inherit pkgs;})
(import ./screenshot.nix {inherit pkgs;})
(import ./sshbind.nix {inherit pkgs;})
]