summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.lock54
-rw-r--r--modules/common/common/shell/default.nix13
-rw-r--r--modules/common/curl.nix2
-rw-r--r--modules/common/emacs/default.nix58
-rw-r--r--modules/common/git.nix4
-rw-r--r--modules/common/nmap.nix7
-rw-r--r--modules/common/profiles/dev/containers.nix2
-rw-r--r--modules/common/profiles/dev/default.nix4
-rw-r--r--modules/common/profiles/dev/sql.nix2
-rw-r--r--modules/common/profiles/email.nix8
-rw-r--r--modules/common/profiles/headful.nix2
-rw-r--r--modules/common/qutebrowser.nix13
-rw-r--r--modules/common/subversion.nix4
-rw-r--r--modules/common/vim/default.nix2
-rw-r--r--modules/common/vscode.nix63
-rw-r--r--modules/darwin/default.nix1
-rw-r--r--modules/darwin/emacs.nix15
-rw-r--r--modules/nixos/common/documentation.nix2
-rw-r--r--modules/nixos/dwm.nix5
-rw-r--r--modules/nixos/emacs.nix8
-rw-r--r--modules/nixos/matrix/dendrite.nix4
-rw-r--r--modules/nixos/mpd.nix2
-rw-r--r--modules/nixos/podman.nix4
-rw-r--r--modules/nixos/profiles/dev/default.nix13
-rw-r--r--modules/nixos/psd.nix10
-rw-r--r--modules/nixos/rtorrent.nix7
-rw-r--r--modules/nixos/shadowsocks.nix2
-rw-r--r--modules/nixos/soju.nix2
-rw-r--r--modules/nixos/solaar.nix5
-rw-r--r--modules/nixos/unbound.nix3
-rw-r--r--modules/nixos/xmonad.nix2
-rw-r--r--nixosConfigurations/eonwe/default.nix1
-rw-r--r--nixosConfigurations/melian/default.nix9
-rw-r--r--overlay.nix4
-rw-r--r--packages/bruh.nix1
-rw-r--r--packages/emacsql-sqlite.nix35
-rw-r--r--packages/mpv-autosub.nix46
-rw-r--r--packages/myip.nix1
-rw-r--r--packages/nixfiles.nix9
39 files changed, 214 insertions, 215 deletions
diff --git a/flake.lock b/flake.lock
index 6edfe51..578e1fd 100644
--- a/flake.lock
+++ b/flake.lock
@@ -266,11 +266,11 @@
]
},
"locked": {
- "lastModified": 1699783872,
- "narHash": "sha256-4zTwLT2LL45Nmo6iwKB3ls3hWodVP9DiSWxki/oewWE=",
+ "lastModified": 1700118404,
+ "narHash": "sha256-XkqpZpVoy1FV7UbiLkP+fQxxv/6KnwLYkFEHgE8z2IQ=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "280721186ab75a76537713ec310306f0eba3e407",
+ "rev": "c1a033122df8a3c74fda3780c83a104a7d60873c",
"type": "github"
},
"original": {
@@ -309,11 +309,11 @@
]
},
"locked": {
- "lastModified": 1699924656,
- "narHash": "sha256-w1L/6pxu2wWSQD/mB8JNUi/BOwDwmg5C30k7bFK1kt0=",
+ "lastModified": 1700183996,
+ "narHash": "sha256-Xsl9ycyzeEDMeGKw3hfNhPX/yffpGJ1VQNqpChU6qh4=",
"owner": "Infinidoge",
"repo": "nix-minecraft",
- "rev": "218d8a6c07f0cb9fa26cc66f369bbf62ca3a6872",
+ "rev": "dd3ca2f4efdde2940f3f15c61bf4f1c09c3d73d5",
"type": "github"
},
"original": {
@@ -336,11 +336,11 @@
]
},
"locked": {
- "lastModified": 1700011274,
- "narHash": "sha256-NtZqLNEjgaCGowT2+HEeOoZsXqVSAZMA/vk2t0jikN0=",
+ "lastModified": 1700183987,
+ "narHash": "sha256-lea3Wog1Lmwj8HQT9znmB3LrYErJkTMJm79AcXRdc4Q=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
- "rev": "a8c236477b4251ba739463de7e863a07b124fdd3",
+ "rev": "4fd6ede6a7f997bab3210856335d7d34fbb70011",
"type": "github"
},
"original": {
@@ -368,11 +368,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1700014976,
- "narHash": "sha256-dSGpS2YeJrXW5aH9y7Abd235gGufY3RuZFth6vuyVtU=",
+ "lastModified": 1700108881,
+ "narHash": "sha256-+Lqybl8kj0+nD/IlAWPPG/RDTa47gff9nbei0u7BntE=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3",
+ "rev": "7414e9ee0b3e9903c24d3379f577a417f0aae5f1",
"type": "github"
},
"original": {
@@ -384,11 +384,11 @@
},
"nixpkgs-master": {
"locked": {
- "lastModified": 1700082562,
- "narHash": "sha256-1sXJRzIECv/2xfxBNfwbDkE3nlm3KfS01BdCXXtXNxU=",
+ "lastModified": 1700232347,
+ "narHash": "sha256-QzG9ZKl29Pa+drx3Cbfwtpl1+9DvPL1X2cLPb3zLuy0=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "7a1d45811ea4420dea5b2818c9790a86c18c1170",
+ "rev": "139ccb05544a8460ec48bee1f9d84e17604d8a46",
"type": "github"
},
"original": {
@@ -400,11 +400,11 @@
},
"nixpkgs-stable": {
"locked": {
- "lastModified": 1700065082,
- "narHash": "sha256-BdnIOPd39IW/mfha60I+xjqbGs2w/45KiqWeZJHI0sg=",
+ "lastModified": 1700200546,
+ "narHash": "sha256-KK9uSx+qaoyF8VZDq4pED72AW4qTTwkL1lm0AN3ibFA=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "48f92ae9de20777628d2a92d9d50fb4e2ab3d0f1",
+ "rev": "2af91613c61e71b278ee156099f9390447490e43",
"type": "github"
},
"original": {
@@ -428,11 +428,11 @@
]
},
"locked": {
- "lastModified": 1700000610,
- "narHash": "sha256-xvP14ulDdfx1MeBzIWreID3F3j0G4leAAeTC5yfE1h0=",
+ "lastModified": 1700219833,
+ "narHash": "sha256-AkLpEg7nj0KUPb4pl7XIX1TbwePgC03hiBpMANlgBY0=",
"owner": "nix-community",
"repo": "nixvim",
- "rev": "2fcbe50f4ba80e868bd55c7f3b40e2a55c8092d0",
+ "rev": "1b44fe37a1c05bd00d9c727c1756461b9f1a967b",
"type": "github"
},
"original": {
@@ -478,11 +478,11 @@
},
"nur": {
"locked": {
- "lastModified": 1700072577,
- "narHash": "sha256-7jriJotHLpP/3jNoPW9Xc0mDKx2lOzOcLnwUfdpa51Y=",
+ "lastModified": 1700232428,
+ "narHash": "sha256-2rik7MsvQGHc31RByhEzSEvdBCWqgsIOyB2VVKonKPg=",
"owner": "nix-community",
"repo": "NUR",
- "rev": "49a6f64d2b6dcba38a8fb2312315c13e3fe488f1",
+ "rev": "2347935c4aa0262ff3c2854e628c412228070fad",
"type": "github"
},
"original": {
@@ -601,11 +601,11 @@
]
},
"locked": {
- "lastModified": 1695910380,
- "narHash": "sha256-CyzeiXQGm8ceEOSK1dffBCfO7JNp8XhQeNkUiJ5HxgY=",
+ "lastModified": 1700085753,
+ "narHash": "sha256-qtib7f3eRwfaUF+VziJXiBcZFqpHCAXS4HlrFsnzzl4=",
"owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver",
- "rev": "84783b661ecf33927c534b6476beb74ea3308968",
+ "rev": "008d78cc21959e33d0d31f375b88353a7d7121ae",
"type": "gitlab"
},
"original": {
diff --git a/modules/common/common/shell/default.nix b/modules/common/common/shell/default.nix
index 01db7a5..b05b279 100644
--- a/modules/common/common/shell/default.nix
+++ b/modules/common/common/shell/default.nix
@@ -47,10 +47,21 @@ with lib; {
${readFile ./functions.bash}
- # Colourise certain programs' outputs.
+ # https://github.com/garabik/grc?tab=readme-ov-file#bash
GRC_ALIASES=true
source ${pkgs.grc}/etc/profile.d/grc.sh
+ # https://github.com/akermu/emacs-libvterm?tab=readme-ov-file#shell-side-configuration
+ vterm_printf() {
+ if [ -n "$TMUX" ] && ([ "''${TERM%%-*}" = "tmux" ] || [ "''${TERM%%-*}" = "screen" ]); then
+ printf "\ePtmux;\e\e]%s\007\e\\" "$1"
+ elif [ "''${TERM%%-*}" = "screen" ]; then
+ printf "\eP\e]%s\007\e\\" "$1"
+ else
+ printf "\e]%s\e\\" "$1"
+ fi
+ }
+
# This makes sure we always source these tweaks for both interactive
# and login sessions.
if [ -z "$_PROFILE_SOURCED" ] && [ -f "$HOME/.profile" ]; then
diff --git a/modules/common/curl.nix b/modules/common/curl.nix
index 4149f80..97b4b55 100644
--- a/modules/common/curl.nix
+++ b/modules/common/curl.nix
@@ -29,7 +29,7 @@ in {
form="$form-"
fi
- ${curl}/bin/curl --form "$form" "$url"
+ ${getExe curl} --form "$form" "$url"
'')
];
};
diff --git a/modules/common/emacs/default.nix b/modules/common/emacs/default.nix
index b16fb83..fe2618d 100644
--- a/modules/common/emacs/default.nix
+++ b/modules/common/emacs/default.nix
@@ -22,6 +22,9 @@ in {
fonts.enable = true;
git.client.enable = true;
gnupg.enable = true;
+ password-store.enable = true;
+ profiles.dev.enable = true;
+ profiles.email.enable = true;
};
hm = {
@@ -33,7 +36,7 @@ in {
export DOOMDIR="''${XDG_CONFIG_HOME:-$HOME/.config}/doom"
if [[ ! -d "$EMACSDIR/.git" ]]; then
- ${git.package}/bin/git clone --depth=1 --branch=master \
+ ${getExe git.package} clone --depth=1 --branch=master \
"https://github.com/doomemacs/doomemacs" "$EMACSDIR"
fi
@@ -58,19 +61,24 @@ in {
text = concatLines [
(
let
+ # NOTE Packages required for vterm here are mostly only used for
+ # initially compiling the libvterm library.
extraBins = with pkgs;
[
(aspellWithDicts (p: with p; [en ru])) # :checkers (spell +aspell)
asmfmt # :editor format
cargo # :lang rust
clang-tools # :lang (cc +lsp) :editor format
+ cmake # :lang cc :term vterm
cmake-format # :lang cc :editor format
cmigemo # :lang japanese
dockerfile-language-server-nodejs # :tools (docker +lsp)
dockfmt # :tools docker :editor format
editorconfig-core-c # :tools editorconfig
fd # doom!
+ gcc # :lang cc :term vterm
ghc # :lang haskell
+ gnumake # :term vterm
gnuplot # :lang (org +gnuplot)
gnutls # doom!
go # :lang go
@@ -89,6 +97,7 @@ in {
haskellPackages.ormolu # :lang haskell :editor format
html-tidy # :lang web :editor format
jre # :lang plantuml
+ libtool # :term vterm
libxml2 # :lang data :editor format
nil # :lang (nix +lsp)
nodePackages.bash-language-server # :lang (sh +lsp)
@@ -98,6 +107,7 @@ in {
nodePackages.stylelint # :lang web
nodejs # :tools debugger
pandoc # :lang org markdown latex
+ perl # :term vterm
pinentry-emacs # doom!
pipenv # :lang python
pre-commit # :tools magit
@@ -108,7 +118,7 @@ in {
python3Packages.pyflakes # :lang python :editor format
python3Packages.pytest # :lang python
python3Packages.python-lsp-server # :lang python :editor format
- racket # :lang racket :editor format
+ racket # :lang racket scheme :editor format
ripgrep # doom!
rust-analyzer # :lang (rust +lsp)
rustc # :lang rust
@@ -135,8 +145,8 @@ in {
else [lldb] # :tools debugger
);
in ''
- ;; This will integrate packages which are required by various
- ;; modules without polluting the user's profile.
+ ;; Integrate packages which are required by various modules
+ ;; without polluting the user's profile.
(setq exec-path (append exec-path '(${
concatMapStringsSep " " (x: ''"${x}/bin"'') extraBins
})))
@@ -146,6 +156,8 @@ in {
(appendq! auth-sources '(("${config.secrets.authinfo.path}")))
+ (setq emacsql-sqlite-executable "${getExe pkgs.emacsql-sqlite}")
+
;; The font must be set to n+2, otherwise it looks too small.
(setq doom-font (font-spec
:family "${config.fontScheme.monospaceFont.family}"
@@ -159,7 +171,7 @@ in {
;; :lang plantuml
(setq plantuml-jar-path "${pkgs.plantuml}/lib/plantuml.jar"
- plantuml-executable-path "${pkgs.plantuml}/bin/plantuml"
+ plantuml-executable-path "${getExe' pkgs.plantuml "plantuml"}"
org-plantuml-jar-path plantuml-jar-path
org-plantuml-executable-path plantuml-executable-path)
@@ -170,8 +182,9 @@ in {
(setq skk-large-jisyo "${pkgs.skk-dicts}/share/skk/SKK-JISYO.L")
;; :lang nix
+ ;; HACK Trick `nix-mode' to use alejandra instead of nixfmt.
(setq nix-nixfmt-bin "${pkgs.writeShellScript "nixfmt" ''
- ${pkgs.alejandra}/bin/alejandra --quiet "$@"
+ ${getExe pkgs.alejandra} "$@"
''}")
''
)
@@ -197,8 +210,7 @@ in {
'')
muAccounts;
in ''
- ;; A stupid hack. This needs to be fixed upstream in either Doom
- ;; or Nixpkgs.
+ ;; HACK Load missing site-lisp for `mu4e'.
(add-to-list 'load-path "${pkgs.mu.mu4e}/share/emacs/site-lisp/mu4e")
(setq mu4e-root-maildir "${maildirBasePath}")
@@ -216,7 +228,7 @@ in {
(pkgs.emacs29.override (finalAttrs: {
stdenv = with pkgs;
useMoldLinker
- (withCFlags ["-O2"]
+ (withCFlags ["-O3"]
(impureUseNativeOptimizations finalAttrs.stdenv));
}))
.overrideAttrs (_: final: {
@@ -227,34 +239,6 @@ in {
"--without-pop"
];
});
- # TODO https://github.com/NixOS/nixpkgs/issues/267548
- # packageX = let
- # emacs = "emacs29"; # Pin the version to avoid surprises.
- # in
- # (pkgs.${emacs}.pkgs.overrideScope
- # (_: super: {
- # emacs =
- # (pkgs.${emacs}.override (finalAttrs: {
- # stdenv = with pkgs;
- # useMoldLinker
- # (withCFlags ["-O2"]
- # (impureUseNativeOptimizations finalAttrs.stdenv));
- # }))
- # .overrideAttrs (_: final: {
- # configureFlags =
- # final.configureFlags
- # ++ [
- # "--without-mailutils"
- # "--without-pop"
- # ];
- # });
- # }))
- # .withPackages (p:
- # with p; [
- # emacsql # :tools magit
- # mu4e # :email mu4e
- # vterm # :term vterm
- # ]);
};
};
};
diff --git a/modules/common/git.nix b/modules/common/git.nix
index 4ed7c03..aa157ed 100644
--- a/modules/common/git.nix
+++ b/modules/common/git.nix
@@ -106,8 +106,8 @@ in {
};
aliases = let
- git = "${config.hm.programs.git.package}/bin/git";
- curl = "${pkgs.curl}/bin/curl";
+ git = getExe config.hm.programs.git.package;
+ curl = getExe pkgs.curl;
in {
amend = "commit --amend";
cat = "cat-file -p";
diff --git a/modules/common/nmap.nix b/modules/common/nmap.nix
index c13a9bc..ba06af3 100644
--- a/modules/common/nmap.nix
+++ b/modules/common/nmap.nix
@@ -21,7 +21,7 @@ in {
packages = with pkgs; [nmap nmap-formatter];
activation.regenerateNmapScripts = with pkgs; ''
- ${nmap}/bin/nmap --script-updatedb
+ ${getExe' nmap "nmap"} --script-updatedb
'';
};
@@ -56,13 +56,14 @@ in {
"xforce"
)
for i in "''${vulscandbs[@]}"; do
- ${curl}/bin/curl \
+ ${getExe curl} \
-o "${config.my.home}/.nmap/scripts/vulscan/$i.csv" \
"https://www.computec.ch/projekte/vulscan/download/$i.csv"
done
'';
};
- in "${pkg}/bin/update-nmap-vulscan-lists";
+ in
+ getExe pkg;
};
};
diff --git a/modules/common/profiles/dev/containers.nix b/modules/common/profiles/dev/containers.nix
index 38852ad..6e9346a 100644
--- a/modules/common/profiles/dev/containers.nix
+++ b/modules/common/profiles/dev/containers.nix
@@ -10,7 +10,7 @@ in {
options.nixfiles.modules.profiles.dev.containers.enable =
mkEnableOption "Tools for working with containers and container orchestration"
// {
- default = config.nixfiles.modules.profiles.dev.default.enable;
+ default = config.nixfiles.modules.profiles.dev.enable;
};
config = mkIf cfg.enable {
diff --git a/modules/common/profiles/dev/default.nix b/modules/common/profiles/dev/default.nix
index 4c52961..2d0c0f6 100644
--- a/modules/common/profiles/dev/default.nix
+++ b/modules/common/profiles/dev/default.nix
@@ -5,14 +5,14 @@
...
}:
with lib; let
- cfg = config.nixfiles.modules.profiles.dev.default;
+ cfg = config.nixfiles.modules.profiles.dev;
in {
imports = [
./containers.nix
./sql.nix
];
- options.nixfiles.modules.profiles.dev.default.enable =
+ options.nixfiles.modules.profiles.dev.enable =
mkEnableOption "Catch-all profile for stuff related to software development and etc.";
config = mkIf cfg.enable {
diff --git a/modules/common/profiles/dev/sql.nix b/modules/common/profiles/dev/sql.nix
index 6a32a76..b290c16 100644
--- a/modules/common/profiles/dev/sql.nix
+++ b/modules/common/profiles/dev/sql.nix
@@ -10,7 +10,7 @@ in {
options.nixfiles.modules.profiles.dev.sql.enable =
mkEnableOption "SQL stuff and database management tools"
// {
- default = config.nixfiles.modules.profiles.dev.default.enable;
+ default = config.nixfiles.modules.profiles.dev.enable;
};
config = mkIf cfg.enable {
diff --git a/modules/common/profiles/email.nix b/modules/common/profiles/email.nix
index 19eaee5..3c809af 100644
--- a/modules/common/profiles/email.nix
+++ b/modules/common/profiles/email.nix
@@ -6,9 +6,9 @@
...
}:
with lib; let
- cfg = config.nixfiles.modules.profiles.email.default;
+ cfg = config.nixfiles.modules.profiles.email;
in {
- options.nixfiles.modules.profiles.email.default.enable =
+ options.nixfiles.modules.profiles.email.enable =
mkEnableOption "Local Email management" // {default = this.isHeadful;};
config = mkIf cfg.enable {
@@ -46,13 +46,13 @@ in {
assert (builtins.isInt line);
concatStringsSep " " (
[
- "${config.hm.programs.password-store.package}/bin/pass"
+ (getExe config.hm.programs.password-store.package)
"show"
path
]
++ optionals (line > 0) [
"|"
- "${pkgs.gnused}/bin/sed"
+ (getExe pkgs.gnused)
"-e"
"'${toString line}!d'"
]
diff --git a/modules/common/profiles/headful.nix b/modules/common/profiles/headful.nix
index f85e793..094d5dd 100644
--- a/modules/common/profiles/headful.nix
+++ b/modules/common/profiles/headful.nix
@@ -13,7 +13,7 @@ in {
config = mkIf cfg.enable {
nixfiles.modules = {
- profiles.dev.default.enable = true;
+ profiles.dev.enable = true;
alacritty.enable = true;
aria2.enable = true;
diff --git a/modules/common/qutebrowser.nix b/modules/common/qutebrowser.nix
index e59917b..9f234a4 100644
--- a/modules/common/qutebrowser.nix
+++ b/modules/common/qutebrowser.nix
@@ -10,12 +10,17 @@ in {
options.nixfiles.modules.qutebrowser.enable = mkEnableOption "Qutebrowser";
config = mkIf cfg.enable {
+ nixfiles.modules = {
+ mpv.enable = true;
+ vim.enable = true;
+ };
+
hm.programs.qutebrowser = with config.nixfiles.modules; {
enable = true;
keyBindings.normal = mkIf mpv.enable {
"z" = let
- mpv = "${config.hm.programs.mpv.package}/bin/mpv";
+ mpv = getExe config.hm.programs.mpv.package;
in "hint links spawn --detach ${mpv} {hint-url}";
};
@@ -160,11 +165,11 @@ in {
editor.command = [
(
if alacritty.enable
- then "${pkgs.alacritty}/bin/alacritty"
- else "${pkgs.xterm}/bin/xterm"
+ then getExe pkgs.alacritty
+ else getExe pkgs.xterm
)
"-e"
- "${config.programs.vim.package}/bin/vim"
+ (getExe' config.programs.vim.package "vim")
"-f"
"{}"
];
diff --git a/modules/common/subversion.nix b/modules/common/subversion.nix
index 40ea07d..2bd5e42 100644
--- a/modules/common/subversion.nix
+++ b/modules/common/subversion.nix
@@ -22,8 +22,8 @@ in {
store-auth-creds = "yes";
};
helpers = {
- editor-cmd = "${config.programs.vim.package}/bin/vim";
- diff-cmd = "${pkgs.colordiff}/bin/colordiff";
+ editor-cmd = getExe config.programs.vim.package;
+ diff-cmd = getExe pkgs.colordiff;
};
miscellany = {
global-ignores = with config.hm.programs.git;
diff --git a/modules/common/vim/default.nix b/modules/common/vim/default.nix
index 3755201..cd24768 100644
--- a/modules/common/vim/default.nix
+++ b/modules/common/vim/default.nix
@@ -35,7 +35,7 @@ in {
environment = with config.programs.vim; {
systemPackages = [package];
variables = rec {
- EDITOR = mkOverride 100 "${package}/bin/vim";
+ EDITOR = mkOverride 15 (getExe' package "vim");
VISUAL = EDITOR;
};
};
diff --git a/modules/common/vscode.nix b/modules/common/vscode.nix
index 3ae9800..62abcf8 100644
--- a/modules/common/vscode.nix
+++ b/modules/common/vscode.nix
@@ -41,6 +41,8 @@ in {
gitlab.gitlab-workflow
golang.go
graphql.vscode-graphql
+ graphql.vscode-graphql-execution
+ graphql.vscode-graphql-syntax
hashicorp.hcl
hashicorp.terraform
haskell.haskell
@@ -54,11 +56,13 @@ in {
redhat.vscode-xml
redhat.vscode-yaml
rust-lang.rust
+ skellock.just
streetsidesoftware.code-spell-checker
streetsidesoftware.code-spell-checker-british-english
streetsidesoftware.code-spell-checker-russian
streetsidesoftware.code-spell-checker-scientific-terms
tamasfe.even-better-toml
+ task.vscode-task
vscode-org-mode.org-mode
ziglang.vscode-zig
]
@@ -99,7 +103,7 @@ in {
};
workbench = {
- activityBar.visible = false;
+ activityBar.location = "hidden";
editor.highlightModifiedTabs = true;
enableExperiments = false;
settings.enableNaturalLanguageSearch = false;
@@ -149,71 +153,76 @@ in {
useFullyQualifiedCollectionNames = true;
reuseTerminal = true;
};
- validation.lint.path = "${pkgs.ansible-lint}/bin/ansible-lint";
+ validation.lint.path = getExe' pkgs.ansible-lint "ansible-lint";
};
- bashIde.shellcheckPath = "${pkgs.shellcheck}/bin/shellcheck";
+ bashIde.shellcheckPath = getExe' pkgs.shellcheck "shellcheck";
- cSpell.language = "en-GB,ru";
+ cSpell.language = "en-GB,en,ru";
+
+ direnv = {
+ restart.automatic = true;
+ };
magit = {
forge-enabled = true;
- git-path = "${config.hm.programs.git.package}/bin/git";
+ git-path = getExe config.hm.programs.git.package;
};
+ git.openRepositoryInParentFolders = "always";
+
github = {
branchProtection = true;
gitProtocol = "ssh";
};
terraform = {
- languageServer.path = "${pkgs.terraform-ls}/bin/terraform-ls";
- languageServer.terraform.path = "${pkgs.opentofu}/bin/tofu";
+ languageServer.path = getExe' pkgs.terraform-ls "terraform-ls";
+ languageServer.terraform.path = getExe pkgs.opentofu;
};
haskell = {
formattingProvider = "ormolu";
- serverExecutablePath = "${pkgs.haskell-language-server}/bin/haskell-language-server";
+ serverExecutablePath = getExe' pkgs.haskell-language-server "haskell-language-server";
};
nix = {
enableLanguageServer = true;
- serverPath = "${pkgs.nil}/bin/nil";
+ serverPath = getExe pkgs.nil;
};
python = with pkgs.python311Packages; {
experiments.optOutFrom = ["All"];
- pipenvPath = "${pkgs.pipenv}/bin/pipenv";
- poetryPath = "${pkgs.poetry}/bin/poetry";
+ pipenvPath = getExe' pkgs.pipenv "pipenv";
+ poetryPath = getExe' pkgs.poetry "poetry";
formatting = {
provider = "black";
- autopep8Path = "${autopep8}/bin/autopep8";
- blackPath = "${black}/bin/black";
- yapfPath = "${yapf}/bin/yapf";
+ autopep8Path = getExe' autopep8 "autopep8";
+ blackPath = getExe' black "black";
+ yapfPath = getExe' yapf "yapf";
};
linting = {
enabled = true;
- banditPath = "${bandit}/bin/bandit";
- flake8Path = "${flake8}/bin/flake8";
- mypyPath = "${mypy}/bin/mypy";
- pycodestylePath = "${pycodestyle}/bin/pycodestyle";
- pydocstylePath = "${pydocstyle}/bin/pydocstyle";
- pylamaPath = "${pylama}/bin/pylama";
- pylintPath = "${pylint}/bin/pylint";
+ banditPath = getExe' bandit "bandit";
+ flake8Path = getExe' flake8 "flake8";
+ mypyPath = getExe' mypy "mypy";
+ pycodestylePath = getExe' pycodestyle "pycodestyle";
+ pydocstylePath = getExe' pydocstyle "pydocstyle";
+ pylamaPath = getExe' pylama "pylama";
+ pylintPath = getExe' pylint "pylint";
};
testing = {
- pytestPath = "${pytest}/bin/pytest";
+ pytestPath = getExe' pytest "pytest";
};
};
rust-client = {
disableRustup = true;
- rustupPath = "${pkgs.rustup}/bin/rustup";
- rlsPath = "${pkgs.rustup}/bin/rls";
- rustfmt_path = "${pkgs.rustfmt}/bin/rustfmt";
+ rustupPath = getExe' pkgs.rustup "rustup";
+ rustfmt_path = getExe pkgs.rustfmt;
};
- vim = mkIf cfg.vim.enable rec {
+ vim = mkIf cfg.vim.enable {
easymotion = true;
easymotionMarkerFontFamily = fontFamily;
easymotionMarkerFontSize = fontSize;
@@ -225,7 +234,7 @@ in {
zig.zls = {
checkForUpdate = false;
- path = "${pkgs.zls}/bin/zls";
+ path = getExe' pkgs.zls "zls";
};
redhat.telemetry.enabled = false;
diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix
index 6ea9663..fbc5c1e 100644
--- a/modules/darwin/default.nix
+++ b/modules/darwin/default.nix
@@ -1,7 +1,6 @@
_: {
imports = [
./common
- ./emacs.nix
./fonts.nix
./gnupg.nix
./homebrew.nix
diff --git a/modules/darwin/emacs.nix b/modules/darwin/emacs.nix
deleted file mode 100644
index fd32276..0000000
--- a/modules/darwin/emacs.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.nixfiles.modules.emacs;
-in {
- config = mkIf cfg.enable {
- services.emacs = {
- enable = false; # TODO Figure out how to use this.
- inherit (config.hm.programs.doom-emacs) package;
- };
- };
-}
diff --git a/modules/nixos/common/documentation.nix b/modules/nixos/common/documentation.nix
index f909108..cb66818 100644
--- a/modules/nixos/common/documentation.nix
+++ b/modules/nixos/common/documentation.nix
@@ -25,7 +25,7 @@ with lib; {
environment.sessionVariables = {
MANOPT = "--no-hyphenation";
- MANPAGER = "${pkgs.less}/bin/less -+F";
+ MANPAGER = "${getExe pkgs.less} -+F";
};
};
}
diff --git a/modules/nixos/dwm.nix b/modules/nixos/dwm.nix
index 618d8ed..459aae5 100644
--- a/modules/nixos/dwm.nix
+++ b/modules/nixos/dwm.nix
@@ -89,7 +89,7 @@ in {
NULL,
};
static const char *termcmd[] = {
- "${pkgs.alacritty}/bin/alacritty",
+ "${getExe pkgs.alacritty}",
NULL,
};
@@ -143,7 +143,8 @@ in {
};
'';
};
- in "${pkg}/bin/dwm";
+ in
+ getExe' pkg "dwm";
};
hm.services.dwm-status = {
diff --git a/modules/nixos/emacs.nix b/modules/nixos/emacs.nix
index 8163c45..c851389 100644
--- a/modules/nixos/emacs.nix
+++ b/modules/nixos/emacs.nix
@@ -8,7 +8,7 @@ with lib; let
in {
config = mkIf cfg.enable {
nixfiles.modules = {
- common.xdg.defaultApplications.emacsclient = [
+ common.xdg.defaultApplications.emacs = [
"application/atom+xml"
"application/json"
"application/rss+xml"
@@ -21,11 +21,5 @@ in {
x11.enable = true;
};
-
- hm.services.emacs = {
- enable = true;
- client.enable = true;
- socketActivation.enable = true;
- };
};
}
diff --git a/modules/nixos/matrix/dendrite.nix b/modules/nixos/matrix/dendrite.nix
index efeef3c..7528792 100644
--- a/modules/nixos/matrix/dendrite.nix
+++ b/modules/nixos/matrix/dendrite.nix
@@ -178,12 +178,12 @@ in {
};
in
concatStringsSep " " [
- "${pkgs.envsubst}/bin/envsubst"
+ (getExe pkgs.envsubst)
"-i ${(pkgs.formats.yaml {}).generate "dendrite.yaml" settings}"
"-o /run/dendrite/dendrite.yaml"
];
ExecStart = concatStringsSep " " [
- "${pkgs.dendrite}/bin/dendrite"
+ (getExe' pkgs.dendrite "dendrite")
"--config /run/dendrite/dendrite.yaml"
"--http-bind-address 127.0.0.1:${toString cfg.port}"
];
diff --git a/modules/nixos/mpd.nix b/modules/nixos/mpd.nix
index 6db83f8..485cde3 100644
--- a/modules/nixos/mpd.nix
+++ b/modules/nixos/mpd.nix
@@ -138,7 +138,7 @@ in {
mouse_support = false;
- external_editor = "${config.programs.vim.package}/bin/vim";
+ external_editor = getExe' config.programs.vim.package "vim";
use_console_editor = true;
colors_enabled = true;
diff --git a/modules/nixos/podman.nix b/modules/nixos/podman.nix
index ec9b346..0f6db48 100644
--- a/modules/nixos/podman.nix
+++ b/modules/nixos/podman.nix
@@ -49,14 +49,14 @@ in {
driver = "overlay"
[storage.options]
- mount_program = "${pkgs.fuse-overlayfs}/bin/fuse-overlayfs"
+ mount_program = "${getExe' pkgs.fuse-overlayfs "fuse-overlayfs"}"
mountopt = "noatime,nodev,nosuid"
'';
};
programs.bash = {
shellAliases = {
- podman = "grc -es ${pkgs.podman}/bin/podman";
+ podman = "grc -es ${getExe' pkgs.podman "podman"}";
p = "podman";
};
initExtra = mkAfter ''
diff --git a/modules/nixos/profiles/dev/default.nix b/modules/nixos/profiles/dev/default.nix
index bba8ebd..5253e95 100644
--- a/modules/nixos/profiles/dev/default.nix
+++ b/modules/nixos/profiles/dev/default.nix
@@ -1,10 +1,11 @@
{
config,
lib,
+ pkgs,
...
}:
with lib; let
- cfg = config.nixfiles.modules.profiles.dev.default;
+ cfg = config.nixfiles.modules.profiles.dev;
in {
imports = [
./containers.nix
@@ -16,6 +17,14 @@ in {
messages = "C";
};
- my.extraGroups = ["kvm"];
+ programs.wireshark = {
+ enable = true;
+ package = pkgs.wireshark;
+ };
+
+ my.extraGroups = [
+ "kvm"
+ "wireshark"
+ ];
};
}
diff --git a/modules/nixos/psd.nix b/modules/nixos/psd.nix
index 77d3c66..eb5a1a8 100644
--- a/modules/nixos/psd.nix
+++ b/modules/nixos/psd.nix
@@ -20,7 +20,9 @@ in {
};
systemd.user = {
- services = {
+ services = let
+ exe = getExe' pkgs.profile-sync-daemon "profile-sync-daemon";
+ in {
psd = {
unitConfig = {
Description = "Profile-sync-daemon";
@@ -30,8 +32,8 @@ in {
};
serviceConfig = {
RemainAfterExit = true;
- ExecStart = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon startup";
- ExecStop = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon unsync";
+ ExecStart = "${exe} startup";
+ ExecStop = "${exe} unsync";
};
wantedBy = ["graphical.target"];
};
@@ -43,7 +45,7 @@ in {
Wants = ["psd-resync.timer"];
BindsTo = ["psd.service"];
};
- serviceConfig.ExecStart = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon resync";
+ serviceConfig.ExecStart = "${exe} resync";
wantedBy = ["graphical.target"];
};
};
diff --git a/modules/nixos/rtorrent.nix b/modules/nixos/rtorrent.nix
index 5d2dba5..847f12d 100644
--- a/modules/nixos/rtorrent.nix
+++ b/modules/nixos/rtorrent.nix
@@ -63,7 +63,8 @@ in {
mv -fv "$leech_path" "$seed_path"
'';
};
- in "${pkg}/bin/move-completed";
+ in
+ getExe pkg;
in
pkgs.writeText "rtorrent.rc" ''
method.insert = cfg.leech, private|const|string, (cat, "${leechDir}")
@@ -143,7 +144,7 @@ in {
logDir
];
ExecStart = concatStringsSep " " [
- "${pkgs.rtorrent}/bin/rtorrent"
+ (getExe pkgs.rtorrent)
"-n"
"-o system.daemon.set=true"
"-o network.bind_address.set=0.0.0.0"
@@ -245,7 +246,7 @@ in {
Group = group;
ExecStart = concatStringsSep " " [
- "${pkg}/bin/flood"
+ (getExe pkg)
"--allowedpath=${baseDir}"
"--baseuri=/"
"--rundir=${baseDir}/flood"
diff --git a/modules/nixos/shadowsocks.nix b/modules/nixos/shadowsocks.nix
index c04799b..97eb17f 100644
--- a/modules/nixos/shadowsocks.nix
+++ b/modules/nixos/shadowsocks.nix
@@ -79,7 +79,7 @@ in {
});
in
pkgs.writeShellScript "meregeJson" ''
- ${pkgs.jq}/bin/jq \
+ ${getExe pkgs.jq} \
-s '.[0] * .[1]' \
${configFile} \
$CREDENTIALS_DIRECTORY/secret.json \
diff --git a/modules/nixos/soju.nix b/modules/nixos/soju.nix
index 3cfe015..569e218 100644
--- a/modules/nixos/soju.nix
+++ b/modules/nixos/soju.nix
@@ -96,7 +96,7 @@ in {
'';
in
concatStringsSep " " [
- "${pkgs.soju}/bin/soju"
+ (getExe' pkgs.soju "soju")
"-config ${configFile}"
];
DynamicUser = true;
diff --git a/modules/nixos/solaar.nix b/modules/nixos/solaar.nix
index ceff23d..64aafc8 100644
--- a/modules/nixos/solaar.nix
+++ b/modules/nixos/solaar.nix
@@ -38,8 +38,9 @@ in {
done
'';
};
- in "${pkg}/bin/solaar-pre";
- ExecStart = "${pkgs.solaar}/bin/solaar --window=hide";
+ in
+ getExe pkg;
+ ExecStart = "${getExe pkgs.solaar "solaar"} --window=hide";
};
Install.WantedBy = ["graphical-session.target"];
};
diff --git a/modules/nixos/unbound.nix b/modules/nixos/unbound.nix
index dd7e757..2fab1e0 100644
--- a/modules/nixos/unbound.nix
+++ b/modules/nixos/unbound.nix
@@ -184,7 +184,8 @@ in {
fi
'';
};
- in "${pkg}/bin/unbound-adblock-update";
+ in
+ getExe pkg;
};
};
};
diff --git a/modules/nixos/xmonad.nix b/modules/nixos/xmonad.nix
index c5fedc2..b4eb4a0 100644
--- a/modules/nixos/xmonad.nix
+++ b/modules/nixos/xmonad.nix
@@ -18,7 +18,7 @@ in {
scriptPath = ".xinitrc";
- windowManager.command = "${pkgs.xmonad-ng}/bin/xmonad-ng";
+ windowManager.command = getExe' pkgs.xmonad-ng "xmonad-ng";
};
};
diff --git a/nixosConfigurations/eonwe/default.nix b/nixosConfigurations/eonwe/default.nix
index e6c6e5e..dcfbb0d 100644
--- a/nixosConfigurations/eonwe/default.nix
+++ b/nixosConfigurations/eonwe/default.nix
@@ -48,7 +48,6 @@ with lib; {
vcmi
vesktop
vial
- wireshark
xonotic
];
diff --git a/nixosConfigurations/melian/default.nix b/nixosConfigurations/melian/default.nix
index f4178e2..64dd152 100644
--- a/nixosConfigurations/melian/default.nix
+++ b/nixosConfigurations/melian/default.nix
@@ -1,4 +1,9 @@
-{pkgs, ...}: {
+{
+ lib,
+ pkgs,
+ ...
+}:
+with lib; {
nixfiles.modules = {
wireguard.client.enable = true;
@@ -18,7 +23,7 @@
};
powerManagement = let
- modprobe = "${pkgs.kmod}/bin/modprobe";
+ modprobe = getExe' pkgs.kmod "modprobe";
in {
enable = true;
diff --git a/overlay.nix b/overlay.nix
index b8e8807..5314ab2 100644
--- a/overlay.nix
+++ b/overlay.nix
@@ -1,9 +1,9 @@
final: prev: {
bruh = prev.callPackage ./packages/bruh.nix {};
- hiccup = prev.callPackage ./packages/hiccup.nix {};
+ emacsql-sqlite = prev.callPackage ./packages/emacsql-sqlite.nix {};
- mpv-autosub = prev.callPackage ./packages/mpv-autosub.nix {};
+ hiccup = prev.callPackage ./packages/hiccup.nix {};
myip = prev.callPackage ./packages/myip.nix {};
diff --git a/packages/bruh.nix b/packages/bruh.nix
index bad8aa0..b41ecdb 100644
--- a/packages/bruh.nix
+++ b/packages/bruh.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.gpl3Only;
platforms = platforms.linux;
maintainers = with maintainers; [azahi];
+ mainProgram = "bruh";
};
})
diff --git a/packages/emacsql-sqlite.nix b/packages/emacsql-sqlite.nix
new file mode 100644
index 0000000..3329e08
--- /dev/null
+++ b/packages/emacsql-sqlite.nix
@@ -0,0 +1,35 @@
+{
+ fetchFromGitHub,
+ lib,
+ stdenv,
+}:
+stdenv.mkDerivation (finalAttrs: {
+ pname = "emacsql-sqlite";
+ version = "3.1.1";
+
+ src = fetchFromGitHub {
+ owner = "magit";
+ repo = "emacsql";
+ rev = finalAttrs.version;
+ hash = "sha256-b/QEpWMTyVOdkOEhPNJ0x8ukUy9Gc9gYGjnlh0WU9fY=";
+ };
+
+ sourceRoot = "source/sqlite";
+
+ installPhase = ''
+ runHook preInstall
+
+ install -Dm755 -t $out/bin ${finalAttrs.meta.mainProgram}
+
+ runHook postInstall
+ '';
+
+ meta = with lib; {
+ description = "SQLite interop binary for emacsql-sqlite";
+ inherit (finalAttrs.src.meta) homepage;
+ license = licenses.unlicense;
+ platforms = platforms.unix;
+ maintainers = with maintainers; [azahi];
+ mainProgram = "emacsql-sqlite";
+ };
+})
diff --git a/packages/mpv-autosub.nix b/packages/mpv-autosub.nix
deleted file mode 100644
index e3fc221..0000000
--- a/packages/mpv-autosub.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- fetchFromGitHub,
- lib,
- mpv-unwrapped,
- python3Packages,
- stdenvNoCC,
-}:
-stdenvNoCC.mkDerivation (finalAttrs: {
- pname = "mpv-autosub";
- version = "unstable-2021-06-29";
-
- src = fetchFromGitHub {
- owner = "davidde";
- repo = finalAttrs.pname;
- rev = "35115355bd339681f97d067538356c29e5b14afa";
- hash = "sha256-BKT/Tzwl5ZA4fbdc/cxz0+CYc1zyY/KOXc58x5GYow0=";
- };
-
- postPatch = ''
- substituteInPlace autosub.lua \
- --replace '/home/david/.local/bin/subliminal' '${python3Packages.subliminal}/bin/subliminal' \
- --replace "'Dutch', 'nl', 'dut'" "'Russian', 'ru', 'rus'" \
- --replace "'tta'" "'tta', 'webm'" \
- --replace "disabled for audio files" "disabled for this filetype"
-
- sed -iE '/.*add_key_binding.*/d' autosub.lua
- '';
-
- installPhase = ''
- runHook preInstall
-
- install -Dm644 autosub.lua $out/share/mpv/scripts/autosub.lua
-
- runHook postInstall
- '';
-
- passthru.scriptName = "autosub.lua";
-
- meta = with lib; {
- description = "Automatic downloading of subtitles for MPV";
- inherit (finalAttrs.src.meta) homepage;
- license = licenses.mit;
- inherit (mpv-unwrapped.meta) platforms;
- maintainers = with maintainers; [azahi];
- };
-})
diff --git a/packages/myip.nix b/packages/myip.nix
index f91872b..59a02ee 100644
--- a/packages/myip.nix
+++ b/packages/myip.nix
@@ -19,5 +19,6 @@ writeShellApplication {
license = licenses.wtfpl;
platforms = platforms.unix;
maintainers = with maintainers; [azahi];
+ mainProgram = "myip";
};
}
diff --git a/packages/nixfiles.nix b/packages/nixfiles.nix
index 782a193..02e89f2 100644
--- a/packages/nixfiles.nix
+++ b/packages/nixfiles.nix
@@ -25,7 +25,7 @@
# Shamelessly appropriated from https://github.com/ncfavier/config.
# Hopefully Naïm will not sue me for copyright infrigment.
text = ''
- nixfiles="''${NIXFILES:-$HOME/src/nixfiles}"
+ nixfiles="''${NIXFILES:-.}"
cmd=$1
shift
case $cmd in
@@ -108,10 +108,10 @@
# Assumes that hosts are configured in the OpenSSH configuration.
host=''${cmd#@}
hostname=$(ssh -q "$host" 'echo "$HOSTNAME"')
- exec nixos-rebuild -v --flake ".#$hostname" --target-host "$host" --use-remote-sudo --show-trace "$@"
+ exec nixos-rebuild -v --flake "$nixfiles#$hostname" --target-host "$host" --use-remote-sudo --show-trace "$@"
;;
*)
- exec nixos-rebuild -v --fast --flake "." --use-remote-sudo --show-trace "$cmd" "$@"
+ exec nixos-rebuild -v --fast --flake "$nixfiles" --use-remote-sudo --show-trace "$cmd" "$@"
;;
esac
'';
@@ -134,7 +134,7 @@
}
_nixfiles() {
local cur prev words cword
- local nixfiles="''${NIXFILES:-$HOME/src/nixfiles}"
+ local nixfiles="''${NIXFILES:-.}"
_init_completion -n ':=&'
if [[ "$cword" == 1 ]] || [[ "$cword" == 2 && "$prev" == @* ]]; then
if [[ $cur == @* ]]; then
@@ -180,5 +180,6 @@ in
license = licenses.wtfpl;
platforms = platforms.unix;
maintainers = with maintainers; [azahi];
+ mainProgram = "nixfiles";
};
}