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

View File

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

View File

@ -5,9 +5,9 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.modules.bat; cfg = config.home.cli.bat;
in { 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 = { config.programs.bat = {
enable = true; enable = true;
config = { 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 with lib; let
cfg = config.modules.nh; cfg = config.home.cli.nh;
in { in {
options.modules.nh.flake = mkOption { options.home.cli.nh.flake = mkOption {
type = types.path; type = types.path;
default = "/home/phundrak/.dotfiles"; default = "/home/phundrak/.dotfiles";
example = "/etc/nixos"; 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, pkgs,
emacsPackage, config,
... ...
}: }:
pkgs.writeShellScriptBin "launch-with-emacsclient" '' pkgs.writeShellScriptBin "launch-with-emacsclient" ''
filename="$1" filename="$1"
line="$2" line="$2"
column="$3" 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 = [ imports = [
./basics.nix ./basics.nix
./bat.nix ./cli
./btop.nix ./desktop
./direnv.nix ./dev
./eza.nix ./media
./gpg.nix ./services
./mopidy.nix ./security
./nh.nix
./nix-index.nix
./shell ./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 with lib; let
cfg = config.modules.hyprland; cfg = config.home.desktop.hyprland;
rofi-emoji = import ../scripts/rofi-emoji.nix {inherit pkgs;}; rofi-emoji = import ../cli/scripts/rofi-emoji.nix {inherit pkgs;};
laptops = ["gampo"];
in { in {
imports = [ imports = [
./swaync.nix ./swaync.nix
@ -14,33 +15,34 @@ in {
./wlsunset.nix ./wlsunset.nix
]; ];
options.modules.hyprland = { options.home.desktop.hyprland = {
enable = mkEnableOption "Enables Hyprland"; enable = mkEnableOption "Enables Hyprland";
swaync = mkEnableOption "Enables swaync";
emacsPkg = mkOption { emacsPkg = mkOption {
type = types.package; type = types.package;
default = pkgs.emacs; default = config.home.dev.editors.emacs.package or pkgs.emacs;
# default = pkgs.emacs;
example = pkgs.emacs;
}; };
host = mkOption { host = mkOption {
type = types.enum ["tilo" "gampo"]; type = types.enum ["gampo" "marpa"];
default = "tilo";
description = '' description = ''
Which host is Hyprland running on. 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 { 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 = { wayland.windowManager.hyprland = {
enable = true; enable = true;
xwayland.enable = true; xwayland.enable = true;
@ -58,7 +60,7 @@ in {
}; };
monitor = monitor =
{ {
"tilo" = [ "marpa" = [
"DP-1, 3440x1440@144, 1080x550, 1" "DP-1, 3440x1440@144, 1080x550, 1"
"DP-2, 2560x1080@60, 0x0, 1, transform, 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 = { pkgs,
enable = true; 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"; themeFile = "Nord";
font = { font = {
package = pkgs.cascadia-code; 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 with lib; let
cfg = config.modules.swaync; cfg = config.home.desktop.swaync;
in { in {
options.modules.swaync = { options.home.desktop.swaync.enable = mkEnableOption "Enables swaync";
enable = mkEnableOption "Enables swaync";
};
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.swaync.enable = true; services.swaync.enable = true;
home.packages = [pkgs.swaynotificationcenter]; home.packages = [pkgs.swaynotificationcenter];

View File

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

View File

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

View File

@ -1,10 +1,18 @@
{ {
programs.wofi = { lib,
enable = true; 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 = { settings = {
modi = "ssh,drun,combi"; modi = "ssh,drun,combi";
sidebar-mode = false; sidebar-mode = false;
width = 30; width = 50;
line-margin = 10; line-margin = 10;
lines = 6; lines = 6;
columns = 2; 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 epkgs.pdf-tools
] ]
)); ));
cfg = config.modules.emacs; cfg = config.home.dev.editors.emacs;
in { in {
options.modules.emacs = { options.home.dev.editors.emacs = {
enable = mkEnableOption "enables Emacs"; enable = mkEnableOption "enables Emacs";
package = mkOption { package = mkOption {
type = types.package; type = types.package;
@ -25,6 +25,7 @@ in {
}; };
config = { config = {
home.packages = [pkgs.emacs-all-the-icons-fonts];
programs.emacs = mkIf cfg.enable { programs.emacs = mkIf cfg.enable {
enable = true; enable = true;
inherit (cfg) package; inherit (cfg) package;

View File

@ -4,9 +4,9 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.modules.ollama; cfg = config.home.dev.ollama;
in { in {
options.modules.ollama = { options.home.dev.ollama = {
enable = mkEnableOption "Enables Ollama"; enable = mkEnableOption "Enables Ollama";
gpu = mkOption { gpu = mkOption {
type = types.nullOr types.enum ["none" "amd" "nvidia"]; 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 with lib; let
cfg = config.modules.git; cfg = config.home.dev.vcs.git;
in { in {
options.modules.git = { options.home.dev.vcs.git = {
enable = mkEnableOption "enables git"; enable = mkEnableOption "enables git";
email = mkOption { email = mkOption {
type = types.str; type = types.str;
@ -57,7 +57,11 @@ in {
}; };
completeConfig = mkEnableOption "Complete configuration for workstations"; completeConfig = mkEnableOption "Complete configuration for workstations";
emacs = { emacs = {
integration = mkEnableOption "enables Emacs integration"; integration = mkOption {
description = "enables Emacs integration";
type = types.bool;
default = config.home.dev.editors.emacs.enable;
};
pkg = mkOption { pkg = mkOption {
type = types.package; type = types.package;
default = pkgs.emacs; default = pkgs.emacs;
@ -111,7 +115,7 @@ in {
}; };
commit.gpgsign = cfg.publicKeyFile != null; commit.gpgsign = cfg.publicKeyFile != null;
gpg.format = "ssh"; 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"; init.defaultBranch = "main";
pull.rebase = true; pull.rebase = true;
push = { push = {

View File

@ -5,9 +5,9 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.modules.jj; cfg = config.home.dev.vcs.jj;
in { in {
options.modules.jj = { options.home.dev.vcs.jj = {
enable = mkEnableOption "enables jj"; enable = mkEnableOption "enables jj";
name = mkOption { name = mkOption {
type = types.str; type = types.str;
@ -19,7 +19,10 @@ in {
}; };
editor = mkOption { editor = mkOption {
type = types.str; 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 = { signing = {
enable = mkEnableOption "enables signing jj commits"; 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 with lib; let
cfg = config.modules.mopidy; cfg = config.home.media.mopidy;
in { in {
options.modules.mopidy = { options.home.media.mopidy = {
enable = mkEnableOption "Enables 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 = { pkgs,
enable = true; 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 = { config = {
force-window = "immediate"; force-window = "immediate";
force-seekable = true; # force streams to be seekable force-seekable = true; # force streams to be seekable
@ -16,7 +25,7 @@
screenshot-format = "png"; screenshot-format = "png";
screenshot-high-bit-depth = true; screenshot-high-bit-depth = true;
screenshot-png-compression = 6; screenshot-png-compression = 6;
screenshot-directory = "~/Pictures/Screenshots/mpv"; screenshot-directory = "${config.home.homeDirectory}/Pictures/Screenshots/mpv";
deband = true; deband = true;
deband-iterations = 2; 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 with lib; let
cfg = config.modules.ssh; cfg = config.home.security.ssh;
in { in {
options.modules.ssh = { options.home.security.ssh = {
enable = mkEnableOption "enables SSH"; enable = mkEnableOption "enables SSH";
hosts = mkOption { hosts = mkOption {
type = types.nullOr types.path; type = types.nullOr types.path;
@ -17,7 +17,7 @@ in {
config = { config = {
programs.ssh = mkIf cfg.enable { programs.ssh = mkIf cfg.enable {
enable = true; 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 with lib; let
cfg = config.modules.mbsync; cfg = config.home.services.mbsync;
in { in {
options.modules.mbsync = { options.home.services.mbsync = {
enable = mkEnableOption "Enables mbsync"; enable = mkEnableOption "Enables mbsync";
passwordFile = mkOption {
type = types.str;
example = "/var/email/password";
};
service.enable = mkOption { service.enable = mkOption {
type = types.bool; type = types.bool;
default = true; default = true;
}; };
host = mkOption {
type = types.str;
default = "mail.phundrak.com";
};
user = mkOption {
type = types.str;
default = "lucien@phundrak.com";
};
}; };
config = mkIf cfg.enable { 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 with lib; let
cfg = config.modules.bash; cfg = config.home.shell.bash;
in { in {
options.modules.bash = { options.home.shell.bash = {
enable = mkEnableOption "Enables bash"; enable = mkEnableOption "Enables bash";
aliases = mkOption { aliases = mkOption {
type = types.attrsOf types.str; type = types.attrsOf types.str;

View File

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

View File

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

View File

@ -4,17 +4,21 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.modules.starship; cfg = config.home.shell.starship;
in { in {
options.modules.starship = { options.home.shell.starship = {
enable = mkEnableOption "Enables the starship prompt."; 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 { config.programs.starship = mkIf cfg.enable {
inherit (cfg) enable; inherit (cfg) enable;
enableTransience = true; enableTransience = true;
settings = { settings = mkIf cfg.jjIntegration {
custom.jj = { custom.jj = {
description = "The current jj status"; description = "The current jj status";
detect_folders = [".jj"]; detect_folders = [".jj"];

View File

@ -5,9 +5,9 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.modules.tmux; cfg = config.home.shell.tmux;
in { in {
options.modules.tmux.enable = mkEnableOption "Enable tmux"; options.home.shell.tmux.enable = mkEnableOption "Enable tmux";
config.programs.tmux = mkIf cfg.enable { config.programs.tmux = mkIf cfg.enable {
inherit (cfg) enable; inherit (cfg) enable;
baseIndex = 1; 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 with lib; let
cfg = config.modules.zsh; cfg = config.home.shell.zsh;
in { in {
options.modules.zsh = { options.home.shell.zsh = {
enable = lib.mkEnableOption "Enables zsh"; enable = lib.mkEnableOption "Enables zsh";
abbrs = lib.mkOption { abbrs = lib.mkOption {
type = types.attrsOf types.str; type = types.attrsOf types.str;
@ -24,7 +24,8 @@ in {
}; };
}; };
config.programs.zsh = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
programs.zsh = {
enable = true; enable = true;
autocd = true; autocd = true;
autosuggestion = { autosuggestion = {
@ -32,6 +33,7 @@ in {
strategy = ["match_prev_cmd" "completion"]; strategy = ["match_prev_cmd" "completion"];
}; };
enableCompletion = true; enableCompletion = true;
enableVteIntegration = true;
history = { history = {
findNoDups = true; findNoDups = true;
ignoreAllDups = true; ignoreAllDups = true;
@ -90,4 +92,5 @@ in {
abbreviations = cfg.abbrs; 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

@ -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, pkgs,
config, config,
inputs,
... ...
}: { }: {
imports = [ imports = [
@ -18,10 +17,9 @@
epkgs.pdf-tools epkgs.pdf-tools
] ]
)); ));
askpass = import ../scripts/askpass.nix {inherit pkgs;}; askpass = import ../modules/cli/scripts/askpass.nix {inherit pkgs;};
launchWithEmacsclient = import ../scripts/launch-with-emacsclient.nix { launchWithEmacsclient = import ../modules/cli/scripts/launch-with-emacsclient.nix {
inherit pkgs; inherit pkgs config;
emacsPackage = emacsPkg;
}; };
in { in {
sops.secrets = { sops.secrets = {
@ -30,83 +28,21 @@
"mopidy/spotify" = {}; "mopidy/spotify" = {};
}; };
home.sessionVariables = { home = {
sessionVariables = {
EDITOR = "${emacsPkg}/bin/emacsclient -c -a ${emacsPkg}/bin/emacs"; EDITOR = "${emacsPkg}/bin/emacsclient -c -a ${emacsPkg}/bin/emacs";
LAUNCH_EDITOR = "${launchWithEmacsclient}/bin/launch-with-emacsclient"; LAUNCH_EDITOR = "${launchWithEmacsclient}/bin/launch-with-emacsclient";
SUDO_ASKPASS = "${askpass}/bin/askpass"; SUDO_ASKPASS = "${askpass}/bin/askpass";
LSP_USE_PLISTS = "true"; LSP_USE_PLISTS = "true";
}; };
modules = { desktop.waybar.style = ./config/waybar/style.css;
shell = { dev.ollama = {
eatIntegration = true;
starship.jjIntegration = true;
};
bat.extras = true;
packages.emacsPackage = emacsPkg;
mopidy.enable = true;
ollama.enable = true;
emacs = {
enable = true; enable = true;
service = true; gpu = "amd";
package = emacsPkg;
mu4eMime = true;
org-protocol = true;
}; };
hyprland = { fullDesktop = true;
inherit emacsPkg; shell.fish.enable = true;
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;
}; };
manual.html.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 = { age = {
# automatically import user SSH keys as age keys # automatically import user SSH keys as age keys
sshKeyPaths = [ 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 # this will use an age key that is expected to already be in the filesystem
# keyFile = "/home/phundrak/.config/sops/age/keys.txt"; keyFile = "${config.home.homeDirectory}/.local/sops-nix/key.txt";
keyFile = "/home/phundrak/.local/sops-nix/key.txt";
# generate a new key if the key specified above does not exist # generate a new key if the key specified above does not exist
generateKey = true; generateKey = true;
}; };
@ -47,23 +46,35 @@ in {
username = "phundrak"; username = "phundrak";
homeDirectory = "/home/phundrak"; homeDirectory = "/home/phundrak";
packages = [pkgs.tree pkgs.ncdu]; packages = [pkgs.tree pkgs.ncdu];
stateVersion = "24.11"; # Please read the comment before changing.
};
modules = { phundrak.sshKey.file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
shell = {
starship.enable = true; dev.vcs = {
tmux.enable = true;
};
vcs = {
git.enable = true;
jj.enable = true; jj.enable = true;
git.enable = true;
publicKey = cfg.sshKey; publicKey = cfg.sshKey;
}; };
ssh = {
security.ssh = {
enable = true; enable = true;
hosts = config.sops.secrets."ssh/hosts".path; 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; 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,33 +2,10 @@
pkgs, pkgs,
inputs, inputs,
lib, lib,
config,
... ...
}: }:
with lib; let with lib; {
cfg = config.modules.packages; home.packages = with pkgs; [
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
# 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, ...)
# Terminal stuff # Terminal stuff
duf duf
ffmpeg ffmpeg
@ -79,9 +56,6 @@ in {
openttd-jgrpp openttd-jgrpp
moonlight-qt moonlight-qt
# Emacs stuff
emacs-all-the-icons-fonts
# Gnome stuff # Gnome stuff
gnome-tweaks gnome-tweaks
gnomeExtensions.docker gnomeExtensions.docker
@ -105,6 +79,13 @@ in {
tectonic # better LaTeX engine tectonic # better LaTeX engine
virt-manager virt-manager
zeal 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;})
]