summaryrefslogtreecommitdiff
path: root/modules/common
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-03-31 21:29:27 +0300
committerAzat Bahawi <azat@bahawi.net>2024-03-31 21:29:27 +0300
commit9a5427e3a0c0ccf2a82dc503149a26b23fbd6004 (patch)
treef28beec29deeea36038615a8fb98a810891940b5 /modules/common
parent4ad0c3afc1f6caf0c3f05f99a15b22178f2c190b (diff)
2024-03-31
Diffstat (limited to 'modules/common')
-rw-r--r--modules/common/alacritty.nix15
-rw-r--r--modules/common/aria2.nix12
-rw-r--r--modules/common/bat.nix12
-rw-r--r--modules/common/common/documentation.nix3
-rw-r--r--modules/common/common/home-manager.nix12
-rw-r--r--modules/common/common/networking.nix5
-rw-r--r--modules/common/common/nix.nix157
-rw-r--r--modules/common/common/secrets.nix21
-rw-r--r--modules/common/common/shell/default.nix218
-rw-r--r--modules/common/common/stylix.nix13
-rw-r--r--modules/common/common/users.nix11
-rw-r--r--modules/common/common/xdg.nix75
-rw-r--r--modules/common/curl.nix6
-rw-r--r--modules/common/direnv.nix12
-rw-r--r--modules/common/editorconfig.nix12
-rw-r--r--modules/common/emacs/default.nix404
-rw-r--r--modules/common/emacs/doom/config.el2
-rw-r--r--modules/common/eza.nix8
-rw-r--r--modules/common/git.nix84
-rw-r--r--modules/common/gnupg.nix68
-rw-r--r--modules/common/htop.nix15
-rw-r--r--modules/common/mpv.nix199
-rw-r--r--modules/common/nmap.nix57
-rw-r--r--modules/common/openssh.nix56
-rw-r--r--modules/common/password-store.nix18
-rw-r--r--modules/common/profiles/default.nix6
-rw-r--r--modules/common/profiles/dev/containers.nix6
-rw-r--r--modules/common/profiles/dev/default.nix9
-rw-r--r--modules/common/profiles/dev/sql.nix151
-rw-r--r--modules/common/profiles/email.nix142
-rw-r--r--modules/common/profiles/headful.nix11
-rw-r--r--modules/common/profiles/headless.nix16
-rw-r--r--modules/common/qutebrowser.nix179
-rw-r--r--modules/common/subversion.nix17
-rw-r--r--modules/common/tmux.nix15
-rw-r--r--modules/common/vim/default.nix8
-rw-r--r--modules/common/vscode.nix349
-rw-r--r--modules/common/wget.nix8
-rw-r--r--modules/common/zathura.nix15
39 files changed, 1314 insertions, 1113 deletions
diff --git a/modules/common/alacritty.nix b/modules/common/alacritty.nix
index 892516b..704ce79 100644
--- a/modules/common/alacritty.nix
+++ b/modules/common/alacritty.nix
@@ -1,13 +1,10 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.alacritty;
-in {
- options.nixfiles.modules.alacritty.enable =
- mkEnableOption "Alacritty terminal emulator";
+in
+{
+ options.nixfiles.modules.alacritty.enable = mkEnableOption "Alacritty terminal emulator";
config = mkIf cfg.enable {
hm.programs.alacritty = {
diff --git a/modules/common/aria2.nix b/modules/common/aria2.nix
index 449d96c..cdf1c4f 100644
--- a/modules/common/aria2.nix
+++ b/modules/common/aria2.nix
@@ -1,11 +1,9 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.aria2;
-in {
+in
+{
options.nixfiles.modules.aria2.enable = mkEnableOption "aria2";
config = mkIf cfg.enable {
diff --git a/modules/common/bat.nix b/modules/common/bat.nix
index 89444d9..a95d67d 100644
--- a/modules/common/bat.nix
+++ b/modules/common/bat.nix
@@ -1,11 +1,9 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.bat;
-in {
+in
+{
options.nixfiles.modules.bat.enable = mkEnableOption "bat, an alternative to cat";
config = mkIf cfg.enable {
diff --git a/modules/common/common/documentation.nix b/modules/common/common/documentation.nix
index e9d4a79..2202e11 100644
--- a/modules/common/common/documentation.nix
+++ b/modules/common/common/documentation.nix
@@ -4,7 +4,8 @@
this,
...
}:
-with lib; {
+with lib;
+{
config = mkMerge [
(mkIf this.isHeadful {
hm.manual = {
diff --git a/modules/common/common/home-manager.nix b/modules/common/common/home-manager.nix
index 97d7286..3c9fa0e 100644
--- a/modules/common/common/home-manager.nix
+++ b/modules/common/common/home-manager.nix
@@ -4,17 +4,21 @@
localUsername ? lib.my.username,
...
}:
-with lib; {
+with lib;
+{
imports = [
- (mkAliasOptionModule ["hm"] ["home-manager" "users" localUsername])
+ (mkAliasOptionModule [ "hm" ] [
+ "home-manager"
+ "users"
+ localUsername
+ ])
];
hm = {
news.display = "silent";
# NOTE Inheriting directly from `system.stateVersion` does not work with
# nix-darwin for some reason.
- home.stateVersion = with builtins;
- head (split "\n" (readFile "${inputs.nixpkgs}/.version"));
+ home.stateVersion = with builtins; head (split "\n" (readFile "${inputs.nixpkgs}/.version"));
};
home-manager = {
diff --git a/modules/common/common/networking.nix b/modules/common/common/networking.nix
index e5d27d8..2e19162 100644
--- a/modules/common/common/networking.nix
+++ b/modules/common/common/networking.nix
@@ -1,3 +1,4 @@
-{pkgs, ...}: {
- environment.systemPackages = with pkgs; [myip];
+{ pkgs, ... }:
+{
+ environment.systemPackages = with pkgs; [ myip ];
}
diff --git a/modules/common/common/nix.nix b/modules/common/common/nix.nix
index ecd5874..6cc32d3 100644
--- a/modules/common/common/nix.nix
+++ b/modules/common/common/nix.nix
@@ -4,96 +4,96 @@
lib,
localUsername ? lib.my.username,
pkgs,
+ pkgsPr,
this,
...
}:
-with lib; {
- _module.args = let
- importNixpkgs = nixpkgs:
- import nixpkgs {
- inherit (config.nixpkgs) config;
- inherit (this) system;
- };
- in rec {
- pkgsLocal = importNixpkgs "${config.my.home}/src/nixpkgs"; # Impure!
- pkgsMaster = importNixpkgs inputs.nixpkgs-master;
- pkgsStable = importNixpkgs inputs.nixpkgs-stable;
- pkgsRev = rev: hash:
- importNixpkgs (pkgs.fetchFromGitHub {
- owner = "NixOS";
- repo = "nixpkgs";
- inherit rev hash;
- });
- pkgsPr = pr: pkgsRev "refs/pull/${toString pr}/head";
- };
+with lib;
+{
+ _module.args =
+ let
+ importNixpkgs =
+ nixpkgs:
+ import nixpkgs {
+ inherit (config.nixpkgs) config;
+ inherit (this) system;
+ };
+ in
+ rec {
+ pkgsLocal = importNixpkgs "${config.my.home}/src/nixpkgs"; # Impure!
+ pkgsMaster = importNixpkgs inputs.nixpkgs-master;
+ pkgsStable = importNixpkgs inputs.nixpkgs-stable;
+ pkgsRev =
+ rev: hash:
+ importNixpkgs (
+ pkgs.fetchFromGitHub {
+ owner = "NixOS";
+ repo = "nixpkgs";
+ inherit rev hash;
+ }
+ );
+ pkgsPr = pr: pkgsRev "refs/pull/${toString pr}/head";
+ };
- nix = let
- notSelfInputs = filterAttrs (n: _: n != "self") inputs;
- in {
- settings = {
- # https://nixos.org/manual/nix/unstable/contributing/experimental-features.html#currently-available-experimental-features
- # https://github.com/NixOS/nix/blob/master/src/libutil/experimental-features.cc
- experimental-features = concatStringsSep " " [
- "flakes"
- "nix-command"
- "recursive-nix"
- "repl-flake"
- ];
+ nixpkgs.overlays = with inputs; [
+ self.overlays.default
+ (_: _: {
+ inherit (pkgsPr 298756 "sha256-AxNXEDRb9yEde0sPEBRxfXSAu/ZL6/BlOzSj+aoOlHk=") qolibri;
+ inherit (pkgsPr 298346 "sha256-CSEUeivyTWxVskjWzDUal8KYthk7UYMOM4KdjZyhV3o=") dmalloc;
+ })
+ ];
- keep-derivations =
- if this.isHeadful
- then "true"
- else "false";
- keep-outputs =
- if this.isHeadful
- then "true"
- else "false";
+ nix =
+ let
+ notSelfInputs = filterAttrs (n: _: n != "self") inputs;
+ in
+ {
+ settings = {
+ # https://nixos.org/manual/nix/unstable/contributing/experimental-features.html#currently-available-experimental-features
+ # https://github.com/NixOS/nix/blob/master/src/libutil/experimental-features.cc
+ experimental-features = concatStringsSep " " [
+ "flakes"
+ "nix-command"
+ "recursive-nix"
+ "repl-flake"
+ ];
- flake-registry = "${inputs.flake-registry}/flake-registry.json";
+ keep-derivations = if this.isHeadful then "true" else "false";
+ keep-outputs = if this.isHeadful then "true" else "false";
- warn-dirty = false;
+ flake-registry = "${inputs.flake-registry}/flake-registry.json";
- keep-going = true;
+ warn-dirty = false;
- substituters = [
- "https://azahi.cachix.org"
- "https://cache.iog.io"
- "https://cachix.cachix.org"
- "https://nix-community.cachix.org"
- "https://organist.cachix.org"
- "https://pre-commit-hooks.cachix.org"
- "https://tweag-nickel.cachix.org"
- ];
- trusted-public-keys = [
- "azahi.cachix.org-1:2bayb+iWYMAVw3ZdEpVg+NPOHCXncw7WMQ0ElX1GO3s="
- "cachix.cachix.org-1:eWNHQldwUO7G2VkjpnjDbWwy4KQ/HNxht7H4SSoMckM="
- "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
- "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
- "organist.cachix.org-1:GB9gOx3rbGl7YEh6DwOscD1+E/Gc5ZCnzqwObNH2Faw="
- "pre-commit-hooks.cachix.org-1:Pkk3Panw5AW24TOv6kz3PvLhlH8puAsJTBbOPmBo7Rc="
- "tweag-nickel.cachix.org-1:GIthuiK4LRgnW64ALYEoioVUQBWs0jexyoYVeLDBwRA="
- ];
+ keep-going = true;
- trusted-users = ["root" localUsername];
- };
+ substituters = [
+ "https://azahi.cachix.org"
+ "https://nix-community.cachix.org"
+ ];
+ trusted-public-keys = [
+ "azahi.cachix.org-1:2bayb+iWYMAVw3ZdEpVg+NPOHCXncw7WMQ0ElX1GO3s="
+ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
+ ];
- nixPath =
- mapAttrsToList (n: v: "${n}=${v}") notSelfInputs
- ++ ["nixfiles=${config.my.home}/src/nixfiles"];
+ trusted-users = [
+ "root"
+ localUsername
+ ];
+ };
- registry =
- mapAttrs (_: flake: {inherit flake;}) notSelfInputs
- // {nixfiles.flake = inputs.self;};
- };
+ nixPath = mapAttrsToList (n: v: "${n}=${v}") notSelfInputs ++ [
+ "nixfiles=${config.my.home}/src/nixfiles"
+ ];
- nixpkgs.overlays = with inputs; [
- self.overlays.default
- (_: _: {
- })
- ];
+ registry = mapAttrs (_: flake: { inherit flake; }) notSelfInputs // {
+ nixfiles.flake = inputs.self;
+ };
+ };
environment = {
- systemPackages = with pkgs;
+ systemPackages =
+ with pkgs;
optionals this.isHeadful [
nix-top
nix-tree
@@ -104,9 +104,10 @@ with lib; {
hm = {
# Used primarily in conjunction with the "nixfiles" script.
- home.file.".nix-defexpr/default.nix".text = let
- hostname = strings.escapeNixIdentifier this.hostname;
- in
+ home.file.".nix-defexpr/default.nix".text =
+ let
+ hostname = strings.escapeNixIdentifier this.hostname;
+ in
optionalString this.isHeadful ''
let
self = builtins.getFlake "nixfiles";
diff --git a/modules/common/common/secrets.nix b/modules/common/common/secrets.nix
index fdc2501..3c05c09 100644
--- a/modules/common/common/secrets.nix
+++ b/modules/common/common/secrets.nix
@@ -6,19 +6,24 @@
this,
...
}:
-with lib; {
- imports = [(mkAliasOptionModule ["secrets"] ["age" "secrets"])];
+with lib;
+{
+ imports = [
+ (mkAliasOptionModule [ "secrets" ] [
+ "age"
+ "secrets"
+ ])
+ ];
config = {
age.identityPaths =
- if this.isHeadful
- then ["${config.my.home}/.ssh/id_${my.ssh.type}"]
+ if this.isHeadful then
+ [ "${config.my.home}/.ssh/id_${my.ssh.type}" ]
else
- map (attr: attr.path) (filter (attr: attr.type == my.ssh.type)
- config.services.openssh.hostKeys);
+ map (attr: attr.path) (filter (attr: attr.type == my.ssh.type) config.services.openssh.hostKeys);
- environment.systemPackages = with pkgs; [agenix];
+ environment.systemPackages = with pkgs; [ agenix ];
- nixpkgs.overlays = [inputs.agenix.overlays.default];
+ nixpkgs.overlays = [ inputs.agenix.overlays.default ];
};
}
diff --git a/modules/common/common/shell/default.nix b/modules/common/common/shell/default.nix
index 8c3fa8a..883bfae 100644
--- a/modules/common/common/shell/default.nix
+++ b/modules/common/common/shell/default.nix
@@ -6,53 +6,55 @@
this,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.common.shell;
-in {
+in
+{
options.nixfiles.modules.common.shell.aliases = mkOption {
description = "An attribute set of shell aliases.";
type = with types; attrsOf str;
- default = {};
+ default = { };
};
config = {
hm = {
- imports = [inputs.nix-index-database.hmModules.nix-index];
+ imports = [ inputs.nix-index-database.hmModules.nix-index ];
programs = {
bash = {
enable = true;
- initExtra = let
- aliasCompletions =
- concatStringsSep "\n"
- (mapAttrsToList
- (name: _: "complete -F _complete_alias ${name}")
- cfg.aliases);
- in ''
- # Apropriated from the default NixOS prompt settings.
- if [ "$TERM" != "dumb" ] || [ -n "$INSIDE_EMACS" ]; then
- PROMPT_COLOR="1;31m"
- ((UID)) && PROMPT_COLOR="1;32m"
- if [ -n "$INSIDE_EMACS" ] || [ "$TERM" = "eterm" ] || [ "$TERM" = "eterm-color" ]; then
- PS1="\n\[\033[$PROMPT_COLOR\][\u@\h:\w]\\$\[\033[0m\] "
- else
- PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\\$\[\033[0m\] "
- fi
- if test "$TERM" = "xterm"; then
- PS1="\[\033]2;\h:\u:\w\007\]$PS1"
- fi
- fi
+ initExtra =
+ let
+ aliasCompletions = concatStringsSep "\n" (
+ mapAttrsToList (name: _: "complete -F _complete_alias ${name}") cfg.aliases
+ );
+ in
+ ''
+ # Apropriated from the default NixOS prompt settings.
+ if [ "$TERM" != "dumb" ] || [ -n "$INSIDE_EMACS" ]; then
+ PROMPT_COLOR="1;31m"
+ ((UID)) && PROMPT_COLOR="1;32m"
+ if [ -n "$INSIDE_EMACS" ] || [ "$TERM" = "eterm" ] || [ "$TERM" = "eterm-color" ]; then
+ PS1="\n\[\033[$PROMPT_COLOR\][\u@\h:\w]\\$\[\033[0m\] "
+ else
+ PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\\$\[\033[0m\] "
+ fi
+ if test "$TERM" = "xterm"; then
+ PS1="\[\033]2;\h:\u:\w\007\]$PS1"
+ fi
+ fi
- source "${./functions.bash}"
+ source "${./functions.bash}"
- source "${getExe' pkgs.complete-alias "complete_alias"}"
- ${aliasCompletions}
+ source "${getExe' pkgs.complete-alias "complete_alias"}"
+ ${aliasCompletions}
- # https://github.com/garabik/grc?tab=readme-ov-file#bash
- GRC_ALIASES=true
- source ${pkgs.grc}/etc/profile.d/grc.sh
- '';
+ # https://github.com/garabik/grc?tab=readme-ov-file#bash
+ GRC_ALIASES=true
+ source ${pkgs.grc}/etc/profile.d/grc.sh
+ '';
shellOptions = [
"autocd"
@@ -74,57 +76,109 @@ in {
];
shellAliases =
- listToAttrs
- (map
- ({
- name,
- value,
- }:
- nameValuePair name (with pkgs; let
- pkg =
- if this.isHeadful
- then
- (pkgs.coreutils.overrideAttrs (_: super: {
- patches =
- (super.patches or [])
- ++ [
- (fetchpatch {
- url = "https://raw.githubusercontent.com/jarun/advcpmv/a1f8b505e691737db2f7f2b96275802c45f65c59/advcpmv-0.9-9.4.patch";
- hash = "sha256-4fdqpkENPfra4nFQU4+xNrlfq6Dw/2JIZXUOMmdMtcM=";
- })
- ];
- }))
- else coreutils;
- in "${getExe' pkg "coreutils"} --coreutils-prog=${value}"))
- (
- let
- mkAlias = {
- name ? head command,
- command,
- }: {
- inherit name;
- value = concatStringsSep " " command;
- };
+ listToAttrs (
+ map
+ (
+ { name, value }:
+ nameValuePair name (
+ with pkgs;
+ let
+ pkg =
+ if this.isHeadful then
+ (pkgs.coreutils.overrideAttrs (
+ _: super: {
+ patches = (super.patches or [ ]) ++ [
+ (fetchpatch {
+ url = "https://raw.githubusercontent.com/jarun/advcpmv/a1f8b505e691737db2f7f2b96275802c45f65c59/advcpmv-0.9-9.4.patch";
+ hash = "sha256-4fdqpkENPfra4nFQU4+xNrlfq6Dw/2JIZXUOMmdMtcM=";
+ })
+ ];
+ }
+ ))
+ else
+ coreutils;
+ in
+ "${getExe' pkg "coreutils"} --coreutils-prog=${value}"
+ )
+ )
+ (
+ let
+ mkAlias =
+ {
+ name ? head command,
+ command,
+ }:
+ {
+ inherit name;
+ value = concatStringsSep " " command;
+ };
- progressBar = optionalString this.isHeadful "--progress-bar";
- in [
- (mkAlias {command = ["cp" "--interactive" "--recursive" progressBar];})
- (mkAlias {command = ["mv" "--interactive" progressBar];})
- (mkAlias {command = ["rm" "--interactive=once"];})
- (mkAlias {command = ["ln" "--interactive"];})
- (mkAlias {command = ["mkdir" "--parents"];})
- (mkAlias {command = ["rmdir" "--parents"];})
- (mkAlias {
- name = "lower";
- command = ["tr" "'[:upper:]'" "'[:lower:]'"];
- })
- (mkAlias {
- name = "upper";
- command = ["tr" "'[:lower:]'" "'[:upper:]'"];
- })
- ]
- ))
- // (genAttrs ["grep" "egrep" "fgrep"] (name: "${pkgs.gnugrep}/bin/${name} --color=always"))
+ progressBar = optionalString this.isHeadful "--progress-bar";
+ in
+ [
+ (mkAlias {
+ command = [
+ "cp"
+ "--interactive"
+ "--recursive"
+ progressBar
+ ];
+ })
+ (mkAlias {
+ command = [
+ "mv"
+ "--interactive"
+ progressBar
+ ];
+ })
+ (mkAlias {
+ command = [
+ "rm"
+ "--interactive=once"
+ ];
+ })
+ (mkAlias {
+ command = [
+ "ln"
+ "--interactive"
+ ];
+ })
+ (mkAlias {
+ command = [
+ "mkdir"
+ "--parents"
+ ];
+ })
+ (mkAlias {
+ command = [
+ "rmdir"
+ "--parents"
+ ];
+ })
+ (mkAlias {
+ name = "lower";
+ command = [
+ "tr"
+ "'[:upper:]'"
+ "'[:lower:]'"
+ ];
+ })
+ (mkAlias {
+ name = "upper";
+ command = [
+ "tr"
+ "'[:lower:]'"
+ "'[:upper:]'"
+ ];
+ })
+ ]
+ )
+ )
+ // (genAttrs [
+ "grep"
+ "egrep"
+ "fgrep"
+ ] (name: "${pkgs.gnugrep}/bin/${name} --color=always"))
// cfg.aliases;
};
@@ -134,7 +188,7 @@ in {
nix-index-database.comma.enable = true;
};
- home.packages = with pkgs; [grc];
+ home.packages = with pkgs; [ grc ];
};
environment = {
diff --git a/modules/common/common/stylix.nix b/modules/common/common/stylix.nix
index 30bf582..f1b8f81 100644
--- a/modules/common/common/stylix.nix
+++ b/modules/common/common/stylix.nix
@@ -1,11 +1,8 @@
+{ lib, pkgs, ... }:
+with lib;
{
- lib,
- pkgs,
- ...
-}:
-with lib; {
imports = [
- (mkAliasOptionModule ["colors"] [
+ (mkAliasOptionModule [ "colors" ] [
"lib"
"stylix"
"colors"
@@ -45,12 +42,12 @@ with lib; {
};
serif = {
- package = pkgs.iosevka-bin.override {variant = "Etoile";};
+ package = pkgs.iosevka-bin.override { variant = "Etoile"; };
name = "Iosevka Etoile";
};
sansSerif = {
- package = pkgs.iosevka-bin.override {variant = "Aile";};
+ package = pkgs.iosevka-bin.override { variant = "Aile"; };
name = "Iosevka Aile";
};
diff --git a/modules/common/common/users.nix b/modules/common/common/users.nix
index aee0e38..dc1b32e 100644
--- a/modules/common/common/users.nix
+++ b/modules/common/common/users.nix
@@ -3,6 +3,13 @@
localUsername ? lib.my.username,
...
}:
-with lib; {
- imports = [(mkAliasOptionModule ["my"] ["users" "users" localUsername])];
+with lib;
+{
+ imports = [
+ (mkAliasOptionModule [ "my" ] [
+ "users"
+ "users"
+ localUsername
+ ])
+ ];
}
diff --git a/modules/common/common/xdg.nix b/modules/common/common/xdg.nix
index 04ca544..4463c15 100644
--- a/modules/common/common/xdg.nix
+++ b/modules/common/common/xdg.nix
@@ -1,18 +1,35 @@
+{ config, lib, ... }:
+with lib;
{
- config,
- lib,
- ...
-}:
-with lib; {
- imports = let
- withBase = a: ["nixfiles" "modules" "common" "xdg" a];
- in [
- (mkAliasOptionModule ["dirs" "cache"] (withBase "cacheHome"))
- (mkAliasOptionModule ["dirs" "config"] (withBase "configHome"))
- (mkAliasOptionModule ["dirs" "data"] (withBase "dataHome"))
- (mkAliasOptionModule ["dirs" "state"] (withBase "stateHome"))
- (mkAliasOptionModule ["userDirs"] (withBase "userDirs"))
- ];
+ imports =
+ let
+ withBase = a: [
+ "nixfiles"
+ "modules"
+ "common"
+ "xdg"
+ a
+ ];
+ in
+ [
+ (mkAliasOptionModule [
+ "dirs"
+ "cache"
+ ] (withBase "cacheHome"))
+ (mkAliasOptionModule [
+ "dirs"
+ "config"
+ ] (withBase "configHome"))
+ (mkAliasOptionModule [
+ "dirs"
+ "data"
+ ] (withBase "dataHome"))
+ (mkAliasOptionModule [
+ "dirs"
+ "state"
+ ] (withBase "stateHome"))
+ (mkAliasOptionModule [ "userDirs" ] (withBase "userDirs"))
+ ];
options.nixfiles.modules.common.xdg = {
cacheHome = mkOption {
@@ -33,21 +50,23 @@ with lib; {
};
userDirs = mkOption {
type = types.attrs;
- default = let
- inherit (config.my) home;
- tmp = home + "/tmp";
- in {
- enable = true;
+ default =
+ let
+ inherit (config.my) home;
+ tmp = home + "/tmp";
+ in
+ {
+ enable = true;
- desktop = tmp;
- documents = "${home}/doc";
- download = tmp;
- music = tmp;
- pictures = tmp;
- publicShare = "${home}/share";
- templates = tmp;
- videos = tmp;
- };
+ desktop = tmp;
+ documents = "${home}/doc";
+ download = tmp;
+ music = tmp;
+ pictures = tmp;
+ publicShare = "${home}/share";
+ templates = tmp;
+ videos = tmp;
+ };
};
};
}
diff --git a/modules/common/curl.nix b/modules/common/curl.nix
index 1514a09..6895262 100644
--- a/modules/common/curl.nix
+++ b/modules/common/curl.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.curl;
-in {
+in
+{
options.nixfiles.modules.curl.enable = mkEnableOption "cURL";
config = mkIf cfg.enable {
diff --git a/modules/common/direnv.nix b/modules/common/direnv.nix
index 3429218..ececad8 100644
--- a/modules/common/direnv.nix
+++ b/modules/common/direnv.nix
@@ -1,11 +1,9 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.direnv;
-in {
+in
+{
options.nixfiles.modules.direnv.enable = mkEnableOption "direnv";
config = mkIf cfg.enable {
diff --git a/modules/common/editorconfig.nix b/modules/common/editorconfig.nix
index 537912f..5dfe845 100644
--- a/modules/common/editorconfig.nix
+++ b/modules/common/editorconfig.nix
@@ -1,11 +1,9 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.editorconfig;
-in {
+in
+{
options.nixfiles.modules.editorconfig.enable = mkEnableOption "Editorconfig";
config = mkIf cfg.enable {
diff --git a/modules/common/emacs/default.nix b/modules/common/emacs/default.nix
index 9259011..2d0fe67 100644
--- a/modules/common/emacs/default.nix
+++ b/modules/common/emacs/default.nix
@@ -7,9 +7,11 @@
this,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.emacs;
-in {
+in
+{
options.nixfiles.modules.emacs.enable = mkEnableOption "GNU Emacs";
config = mkIf cfg.enable {
@@ -29,211 +31,225 @@ in {
hm = {
stylix.targets.emacs.enable = false;
- xdg.configFile = mapAttrs (_: value:
- value
- // {
- onChange = with config.hm.programs; ''
- export EMACSDIR="''${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
- export DOOMDIR="''${XDG_CONFIG_HOME:-$HOME/.config}/doom"
-
- if [[ ! -d "$EMACSDIR/.git" ]]; then
- ${getExe git.package} clone --depth=1 --branch=master \
- "https://github.com/doomemacs/doomemacs" "$EMACSDIR"
- fi
+ xdg.configFile =
+ mapAttrs
+ (
+ _: value:
+ value
+ // {
+ onChange = with config.hm.programs; ''
+ export EMACSDIR="''${XDG_CONFIG_HOME:-$HOME/.config}/emacs"
+ export DOOMDIR="''${XDG_CONFIG_HOME:-$HOME/.config}/doom"
- if [[ ! -d "$DOOMDIR/snippets" ]]; then
- mkdir -p "$DOOMDIR/snippets"
- fi
+ if [[ ! -d "$EMACSDIR/.git" ]]; then
+ ${getExe git.package} clone --depth=1 --branch=master \
+ "https://github.com/doomemacs/doomemacs" "$EMACSDIR"
+ fi
- if [[ -x "$EMACSDIR/bin/doom" ]]; then
- if [[ ! -d "$EMACSDIR/.local" ]]; then
- PATH="''${PATH:-/bin:/usr/bin:/usr/local/bin}:${emacs.package}/bin:${git.package}/bin" \
- "$EMACSDIR/bin/doom" install --force --verbose
- fi
+ if [[ ! -d "$DOOMDIR/snippets" ]]; then
+ mkdir -p "$DOOMDIR/snippets"
+ fi
- PATH="''${PATH:-/bin:/usr/bin:/usr/local/bin}:${emacs.package}/bin:${git.package}/bin" \
- "$EMACSDIR/bin/doom" sync -e -p --force --verbose
- fi
- '';
- }) {
- "doom/init.el".source = ./doom/init.el;
- "doom/packages.el".source = ./doom/packages.el;
- "doom/config.el" = {
- text = concatLines [
- (let
- 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-format # :lang cc :editor format
- cmigemo # :lang japanese
- config.hm.programs.emacs.package # !doom
- config.nix.package # !doom
- delve # :lang go :tools debugger
- dockerfile-language-server-nodejs # :tools (docker +lsp)
- dockfmt # :tools docker :editor format
- editorconfig-core-c # :tools editorconfig
- fd # doom!
- gcc # :lang cc
- ghc # :lang haskell
- gnuplot # :lang (org +gnuplot)
- gnutar # :tools tree-sitter
- gnutls # doom! :app irc
- go # :lang go
- godef # :lang go
- gomodifytags # :lang go
- gopls # :lang (go +lsp)
- gore # :lang go
- gotests # :lang go
- gotools # :lang go
- graphviz # :lang (org +roam2) :lang plantuml
- gzip # :tools tree-sitter
- haskellPackages.cabal-fmt # :lang haskell :editor format
- haskellPackages.cabal-install # :lang haskell
- haskellPackages.haskell-language-server # :lang (haskell +lsp)
- haskellPackages.hoogle # :lang haskell
- haskellPackages.ormolu # :lang haskell :editor format
- html-tidy # :lang web :editor format
- jdk # :lang java :lang plantuml :checkers grammar
- languagetool # :checkers grammar
- libxml2 # :lang data :editor format
- markdownlint-cli # :lang markdown
- nil # :lang (nix +lsp)
- nls # :lang (nickel +lsp)
- nodePackages.bash-language-server # :lang (sh +lsp)
- nodePackages.eslint # :lang (json +lsp)
- nodePackages.js-beautify # :lang web
- nodePackages.prettier # :editor format
- nodePackages.stylelint # :lang web
- nodePackages.vscode-css-languageserver-bin # lang (web +lsp)
- nodePackages.vscode-html-languageserver-bin # lang (web +lsp)
- nodePackages.vscode-json-languageserver-bin # lang (json +lsp)
- nodejs # :tools debugger
- pandoc # :lang org markdown latex
- pinentry-emacs # doom!
- pipenv # :lang python
- poetry # :lang python
- pre-commit # :tools magit
- python3 # :lang python
- python3Packages.black # :lang python :editor format
- python3Packages.isort # :lang python :editor format
- python3Packages.nose # :lang python
- python3Packages.pyflakes # :lang python :editor format
- python3Packages.pytest # :lang python
- python3Packages.python-lsp-server # :lang python :editor format
- ripgrep # doom!
- rust-analyzer # :lang (rust +lsp)
- rustc # :lang rust
- rustfmt # :lang rust
- shellcheck # :lang sh
- shfmt # :lang sh :editor format
- sqlite # :lang (org +roam2) :tools lookup
- terraform-ls # :tools (terraform +lsp)
- texlab # lang (tex +lsp)
- texlive.combined.scheme-full # :lang org tex
- unzip # :tools debugger
- wordnet # :tools (lookup +dictionary +offline)
- yaml-language-server # :lang (yaml +lsp)
- zig # :lang zig :editor format
- zls # :lang (zig +lsp)
- zstd # :emacs undo
- ]
- ++ (
- # GDB doesn't support[1] Apple Silicon.
- #
- # [1]: https://inbox.sourceware.org/gdb/6b48224b-9e2e-518d-793b-df4fc5514884@arm.com/
- if (this.system != "aarch64-darwin")
- then [gdb] # :tools debugger
- else [lldb] # :tools debugger
- );
+ if [[ -x "$EMACSDIR/bin/doom" ]]; then
+ if [[ ! -d "$EMACSDIR/.local" ]]; then
+ PATH="''${PATH:-/bin:/usr/bin:/usr/local/bin}:${emacs.package}/bin:${git.package}/bin" \
+ "$EMACSDIR/bin/doom" install --force --verbose
+ fi
- parinferRustLibrary =
- if (hasSuffix "linux" this.system)
- then "${pkgs.parinfer-rust}/lib/libparinfer_rust.so"
- else "${pkgs.parinfer-rust}/lib/libparinfer_rust.dylib";
- in ''
- ;; 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
- })))
- (setenv "PATH" (concat (getenv "PATH") ":${
- concatMapStringsSep ":" (x: "${x}/bin") extraBins
- }"))
+ PATH="''${PATH:-/bin:/usr/bin:/usr/local/bin}:${emacs.package}/bin:${git.package}/bin" \
+ "$EMACSDIR/bin/doom" sync -e -p --force --verbose
+ fi
+ '';
+ }
+ )
+ {
+ "doom/init.el".source = ./doom/init.el;
+ "doom/packages.el".source = ./doom/packages.el;
+ "doom/config.el" = {
+ text = concatLines [
+ (
+ let
+ 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-format # :lang cc :editor format
+ cmigemo # :lang japanese
+ config.hm.programs.emacs.package # !doom
+ config.nix.package # !doom
+ delve # :lang go :tools debugger
+ dockerfile-language-server-nodejs # :tools (docker +lsp)
+ dockfmt # :tools docker :editor format
+ editorconfig-core-c # :tools editorconfig
+ fd # doom!
+ gcc # :lang cc
+ ghc # :lang haskell
+ gnuplot # :lang (org +gnuplot)
+ gnutar # :tools tree-sitter
+ gnutls # doom! :app irc
+ go # :lang go
+ godef # :lang go
+ gomodifytags # :lang go
+ gopls # :lang (go +lsp)
+ gore # :lang go
+ gotests # :lang go
+ gotools # :lang go
+ graphviz # :lang (org +roam2) :lang plantuml
+ gzip # :tools tree-sitter
+ haskellPackages.cabal-fmt # :lang haskell :editor format
+ haskellPackages.cabal-install # :lang haskell
+ haskellPackages.haskell-language-server # :lang (haskell +lsp)
+ haskellPackages.hoogle # :lang haskell
+ haskellPackages.ormolu # :lang haskell :editor format
+ html-tidy # :lang web :editor format
+ jdk # :lang java :lang plantuml :checkers grammar
+ languagetool # :checkers grammar
+ libxml2 # :lang data :editor format
+ markdownlint-cli # :lang markdown
+ nil # :lang (nix +lsp)
+ nixfmt # :lang nix :editor format
+ nls # :lang (nickel +lsp)
+ nodePackages.bash-language-server # :lang (sh +lsp)
+ nodePackages.eslint # :lang (json +lsp)
+ nodePackages.js-beautify # :lang web
+ nodePackages.prettier # :editor format
+ nodePackages.stylelint # :lang web
+ nodePackages.vscode-css-languageserver-bin # lang (web +lsp)
+ nodePackages.vscode-html-languageserver-bin # lang (web +lsp)
+ nodePackages.vscode-json-languageserver-bin # lang (json +lsp)
+ nodejs # :tools debugger
+ pandoc # :lang org markdown latex
+ pinentry-emacs # doom!
+ pipenv # :lang python
+ poetry # :lang python
+ pre-commit # :tools magit
+ python3 # :lang python
+ python3Packages.black # :lang python :editor format
+ python3Packages.isort # :lang python :editor format
+ python3Packages.nose # :lang python
+ python3Packages.pyflakes # :lang python :editor format
+ python3Packages.pytest # :lang python
+ python3Packages.python-lsp-server # :lang python :editor format
+ ripgrep # doom!
+ rust-analyzer # :lang (rust +lsp)
+ rustc # :lang rust
+ rustfmt # :lang rust
+ shellcheck # :lang sh
+ shfmt # :lang sh :editor format
+ sqlite # :lang (org +roam2) :tools lookup
+ terraform-ls # :tools (terraform +lsp)
+ texlab # lang (tex +lsp)
+ texlive.combined.scheme-full # :lang org tex
+ unzip # :tools debugger
+ wordnet # :tools (lookup +dictionary +offline)
+ yaml-language-server # :lang (yaml +lsp)
+ zig # :lang zig :editor format
+ zls # :lang (zig +lsp)
+ zstd # :emacs undo
+ ]
+ ++ (
+ # GDB doesn't support[1] Apple Silicon.
+ #
+ # [1]: https://inbox.sourceware.org/gdb/6b48224b-9e2e-518d-793b-df4fc5514884@arm.com/
+ if (this.system != "aarch64-darwin") then
+ [ gdb ] # :tools debugger
+ else
+ [ lldb ] # :tools debugger
+ );
- ;; HACK Explicitly load specific Emacs packages from Nixpkgs.
- ;; For some reason providing them as "extraPackages" doesn't
- ;; work.
- (add-to-list 'load-path "${pkgs.mu.mu4e}/share/emacs/site-lisp/mu4e")
- (add-to-list 'load-path "${pkgs.emacsPackages.vterm}/share/emacs/site-lisp/elpa/vterm-${pkgs.emacsPackages.vterm.version}")
+ parinferRustLibrary =
+ if (hasSuffix "linux" this.system) then
+ "${pkgs.parinfer-rust}/lib/libparinfer_rust.so"
+ else
+ "${pkgs.parinfer-rust}/lib/libparinfer_rust.dylib";
+ in
+ ''
+ ;; 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})))
+ (setenv "PATH" (concat (getenv "PATH") ":${concatMapStringsSep ":" (x: "${x}/bin") extraBins}"))
- (appendq! auth-sources '(("${config.secrets.authinfo.path}")))
+ ;; HACK Explicitly load specific Emacs packages from Nixpkgs.
+ ;; For some reason providing them as "extraPackages" doesn't
+ ;; work.
+ (add-to-list 'load-path "${pkgs.mu.mu4e}/share/emacs/site-lisp/mu4e")
+ (add-to-list 'load-path "${pkgs.emacsPackages.vterm}/share/emacs/site-lisp/elpa/vterm-${pkgs.emacsPackages.vterm.version}")
- ;; :input japanese
- (setq migemo-dictionary "${pkgs.cmigemo}/share/migemo/utf-8/migemo-dict"
- skk-large-jisyo "${pkgs.skk-dicts}/share/SKK-JISYO.L")
+ (appendq! auth-sources '(("${config.secrets.authinfo.path}")))
- ;; :editor parinfer
- (setq parinfer-rust-auto-download nil
- parinfer-rust-library "${parinferRustLibrary}")
+ ;; :input japanese
+ (setq migemo-dictionary "${pkgs.cmigemo}/share/migemo/utf-8/migemo-dict"
+ skk-large-jisyo "${pkgs.skk-dicts}/share/SKK-JISYO.L")
- ;; :lang nix
- ;; HACK Trick `nix-mode' to use alejandra instead of nixfmt.
- (setq nix-nixfmt-bin "${pkgs.writeShellScript "nixfmt" ''
- ${getExe pkgs.alejandra} "$@"
- ''}")
+ ;; :editor parinfer
+ (setq parinfer-rust-auto-download nil
+ parinfer-rust-library "${parinferRustLibrary}")
- ;; :lang (org +roam2) :email mu4e
- (setq emacsql-sqlite-executable "${getExe pkgs.emacsql-sqlite}")
+ ;; :lang (org +roam2) :email mu4e
+ (setq emacsql-sqlite-executable "${getExe pkgs.emacsql-sqlite}")
- ;; :lang plantuml
- (setq plantuml-jar-path "${pkgs.plantuml}/lib/plantuml.jar"
- plantuml-executable-path "${getExe' pkgs.plantuml "plantuml"}"
- org-plantuml-jar-path plantuml-jar-path
- org-plantuml-executable-path plantuml-executable-path)
+ ;; :lang plantuml
+ (setq plantuml-jar-path "${pkgs.plantuml}/lib/plantuml.jar"
+ plantuml-executable-path "${getExe' pkgs.plantuml "plantuml"}"
+ org-plantuml-jar-path plantuml-jar-path
+ org-plantuml-executable-path plantuml-executable-path)
- ;; :app irc
- (setq circe-default-nick "${my.username}"
- circe-default-realname "${my.email}"
- circe-default-user circe-default-nick)
- '')
- (with config.stylix.fonts; ''
- (setq doom-font "${monospace.name}-${toString sizes.terminal}"
- doom-serif-font "${serif.name}-${toString sizes.terminal}"
- doom-variable-pitch-font "${sansSerif.name}-${toString sizes.terminal}")
- '')
- (with config.hm.accounts.email; let
- mu4eAccounts = let
- muAccounts = filter (a: a.mu.enable) (attrValues accounts);
- in
- concatMapStringsSep "\n"
- (a:
- with a; let
- personalAddresses = concatMapStringsSep " " (v: ''"${v}"'') aliases;
- in ''
- (set-email-account! "${name}"
- '((user-full-name . "${realName}")
- (user-mail-address . "${address}")
- (mu4e-inbox-folder . "/${name}/${folders.inbox}")
- (mu4e-sent-folder . "/${name}/${folders.sent}")
- (mu4e-drafts-folder . "/${name}/${folders.drafts}")
- (mu4e-trash-folder . "/${name}/${folders.trash}")
- (mu4e-refile-folder . "/${name}/Archive")
- (+mu4e-personal-addresses . (${personalAddresses})))
- t)
- '')
- muAccounts;
- in ''
- (setq mu4e-root-maildir "${maildirBasePath}")
+ ;; :app irc
+ (setq circe-default-nick "${my.username}"
+ circe-default-realname "${my.email}"
+ circe-default-user circe-default-nick)
+ ''
+ )
+ (with config.stylix.fonts; ''
+ (setq doom-font "${monospace.name}-${toString sizes.terminal}"
+ doom-serif-font "${serif.name}-${toString sizes.terminal}"
+ doom-variable-pitch-font "${sansSerif.name}-${toString sizes.terminal}")
+ '')
+ (
+ with config.hm.accounts.email;
+ let
+ mu4eAccounts =
+ let
+ muAccounts = filter (a: a.mu.enable) (attrValues accounts);
+ in
+ concatMapStringsSep "\n" (
+ a:
+ with a;
+ let
+ personalAddresses = concatMapStringsSep " " (v: ''"${v}"'') aliases;
+ in
+ ''
+ (set-email-account! "${name}"
+ '((user-full-name . "${realName}")
+ (user-mail-address . "${address}")
+ (mu4e-inbox-folder . "/${name}/${folders.inbox}")
+ (mu4e-sent-folder . "/${name}/${folders.sent}")
+ (mu4e-drafts-folder . "/${name}/${folders.drafts}")
+ (mu4e-trash-folder . "/${name}/${folders.trash}")
+ (mu4e-refile-folder . "/${name}/Archive")
+ (+mu4e-personal-addresses . (${personalAddresses})))
+ t)
+ ''
+ ) muAccounts;
+ in
+ ''
+ (setq mu4e-root-maildir "${maildirBasePath}")
- ${mu4eAccounts}
- '')
- (builtins.readFile ./doom/config.el)
- ];
- };
- };
+ ${mu4eAccounts}
+ ''
+ )
+ (builtins.readFile ./doom/config.el)
+ ];
+ };
+ };
programs = {
emacs = {
diff --git a/modules/common/emacs/doom/config.el b/modules/common/emacs/doom/config.el
index e31d41d..7f5693c 100644
--- a/modules/common/emacs/doom/config.el
+++ b/modules/common/emacs/doom/config.el
@@ -52,7 +52,7 @@
;;; Org
;;
-(setq org-directory "~/doc/org")
+(setq org-directory "~/doc/org/")
;; For some reason only using `after!' work here. `setq-hook!' and etc doesn't
;; produce expected results.
diff --git a/modules/common/eza.nix b/modules/common/eza.nix
index be590b4..96b7d4c 100644
--- a/modules/common/eza.nix
+++ b/modules/common/eza.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.eza;
-in {
+in
+{
options.nixfiles.modules.eza.enable = mkEnableOption "eza, an alternative to ls";
config = mkIf cfg.enable {
@@ -16,6 +18,6 @@ in {
la = "${ll} --header --all";
};
- hm.home.packages = [pkgs.eza];
+ hm.home.packages = [ pkgs.eza ];
};
}
diff --git a/modules/common/git.nix b/modules/common/git.nix
index c6be614..fbe190e 100644
--- a/modules/common/git.nix
+++ b/modules/common/git.nix
@@ -6,11 +6,12 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.git;
-in {
- options.nixfiles.modules.git.client.enable =
- mkEnableOption "Git client";
+in
+{
+ options.nixfiles.modules.git.client.enable = mkEnableOption "Git client";
config = mkIf cfg.client.enable {
secrets = {
@@ -75,6 +76,8 @@ in {
autoStash = true;
autoSquash = true;
};
+ rerere.enabled = true;
+ branch.sort = "-committerdate";
diff = {
mnemonicPrefix = true;
renames = "copies";
@@ -89,51 +92,54 @@ in {
annotate = true;
confirm = "always";
};
+ column.ui = "auto";
github.user = my.username;
gitlab.user = my.username;
}
- // mapAttrs'
- (name: value: nameValuePair ''url "git@${value}:"'' {insteadOf = "${name}:";}) {
+ // mapAttrs' (name: value: nameValuePair ''url "git@${value}:"'' { insteadOf = "${name}:"; }) {
"bitbucket" = "bitbucket.com";
"codeberg" = "codeberg.org";
"github" = "github.com";
"gitlab" = "gitlab.com";
"sourcehut" = "git.sr.ht";
}
- // mapAttrs'
- (name: values: nameValuePair ''url "https://${values}/"'' {insteadOf = "${name}:";}) {
- "alpine" = "gitlab.alpinelinux.org";
- "debian" = "salsa.debian.org";
- "freedesktop" = "gitlab.freedesktop.org";
- "gnome" = "gitlab.gnome.org";
- "haskell" = "gitlab.haskell.org";
- "homotopic" = "gitlab.homotopic.tech";
- "horizon" = "gitlab.horizon-haskell.net";
- "kde" = "invent.kde.org";
- "nixca" = "gitlab.nixca.dev";
- "notabug" = "notabug.org";
- "opencode" = "opencode.net";
- "torproject" = "gitlab.torproject.org";
- "videolan" = "code.videolan.org";
- };
+ //
+ mapAttrs' (name: values: nameValuePair ''url "https://${values}/"'' { insteadOf = "${name}:"; })
+ {
+ "alpine" = "gitlab.alpinelinux.org";
+ "debian" = "salsa.debian.org";
+ "freedesktop" = "gitlab.freedesktop.org";
+ "gnome" = "gitlab.gnome.org";
+ "haskell" = "gitlab.haskell.org";
+ "homotopic" = "gitlab.homotopic.tech";
+ "horizon" = "gitlab.horizon-haskell.net";
+ "kde" = "invent.kde.org";
+ "nixca" = "gitlab.nixca.dev";
+ "notabug" = "notabug.org";
+ "opencode" = "opencode.net";
+ "torproject" = "gitlab.torproject.org";
+ "videolan" = "code.videolan.org";
+ };
- aliases = let
- git = getExe config.hm.programs.git.package;
- curl = getExe pkgs.curl;
- in {
- amend = "commit --amend";
- cat = "cat-file -p";
- fast = "clone --depth=1";
- fixup = "commit --fixup";
- fuck = "!${git} reset --hard && ${git} clean --force -dx";
- get = "pull --all --recurse-submodules --autostash";
- gud = ''commit -m "git gud"'';
- refresh = "clean --force -dx";
- tree = "log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'";
- uncommit = "reset --soft HEAD~1";
- untrack = "rm --cache --";
- wtc = "!${curl} -sq whatthecommit.com/index.txt | ${git} commit -F -";
- };
+ aliases =
+ let
+ git = getExe config.hm.programs.git.package;
+ curl = getExe pkgs.curl;
+ in
+ {
+ amend = "commit --amend";
+ cat = "cat-file -p";
+ fast = "clone --depth=1";
+ fixup = "commit --fixup";
+ fuck = "!${git} reset --hard && ${git} clean --force -dx";
+ get = "pull --all --recurse-submodules --autostash";
+ gud = ''commit -m "git gud"'';
+ refresh = "clean --force -dx";
+ tree = "log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'";
+ uncommit = "reset --soft HEAD~1";
+ untrack = "rm --cache --";
+ wtc = "!${curl} -sq whatthecommit.com/index.txt | ${git} commit -F -";
+ };
# All helper tools/editor generated files should go here. This must be
# kept void of any project-specific or residual files.
diff --git a/modules/common/gnupg.nix b/modules/common/gnupg.nix
index c0f10f9..b32d94c 100644
--- a/modules/common/gnupg.nix
+++ b/modules/common/gnupg.nix
@@ -1,11 +1,9 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.gnupg;
-in {
+in
+{
options.nixfiles.modules.gnupg.enable = mkEnableOption "GnuPG";
config = mkIf cfg.enable {
@@ -33,26 +31,42 @@ in {
list-options = "show-uid-validity";
verify-options = "show-uid-validity";
}
- // (let
- cipherAlgos = ["AES256" "AES192" "AES"];
- digestAlgos = ["SHA512" "SHA384" "SHA256" "SHA224"];
- compressionAlgos = ["ZLIB" "BZIP2" "ZIP" "Uncompressed"];
-
- cs = concatStringsSep " ";
- in {
- default-preference-list =
- cs (cipherAlgos ++ digestAlgos ++ compressionAlgos);
-
- personal-cipher-preferences = cs cipherAlgos;
- personal-digest-preferences = cs digestAlgos;
- personal-compress-preferences = cs compressionAlgos;
-
- s2k-cipher-algo = head cipherAlgos;
- s2k-digest-algo = head digestAlgos;
-
- digest-algo = head digestAlgos;
- cert-digest-algo = head digestAlgos;
- });
+ // (
+ let
+ cipherAlgos = [
+ "AES256"
+ "AES192"
+ "AES"
+ ];
+ digestAlgos = [
+ "SHA512"
+ "SHA384"
+ "SHA256"
+ "SHA224"
+ ];
+ compressionAlgos = [
+ "ZLIB"
+ "BZIP2"
+ "ZIP"
+ "Uncompressed"
+ ];
+
+ cs = concatStringsSep " ";
+ in
+ {
+ default-preference-list = cs (cipherAlgos ++ digestAlgos ++ compressionAlgos);
+
+ personal-cipher-preferences = cs cipherAlgos;
+ personal-digest-preferences = cs digestAlgos;
+ personal-compress-preferences = cs compressionAlgos;
+
+ s2k-cipher-algo = head cipherAlgos;
+ s2k-digest-algo = head digestAlgos;
+
+ digest-algo = head digestAlgos;
+ cert-digest-algo = head digestAlgos;
+ }
+ );
};
};
}
diff --git a/modules/common/htop.nix b/modules/common/htop.nix
index bf3f1e4..647abf7 100644
--- a/modules/common/htop.nix
+++ b/modules/common/htop.nix
@@ -1,13 +1,10 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.htop;
-in {
- options.nixfiles.modules.htop.enable =
- mkEnableOption "htop";
+in
+{
+ options.nixfiles.modules.htop.enable = mkEnableOption "htop";
config = mkIf cfg.enable {
hm.programs.htop = {
diff --git a/modules/common/mpv.nix b/modules/common/mpv.nix
index e857b5b..9cd1e91 100644
--- a/modules/common/mpv.nix
+++ b/modules/common/mpv.nix
@@ -4,28 +4,33 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.mpv;
-in {
+in
+{
options.nixfiles.modules.mpv.enable = mkEnableOption "mpv";
config = mkIf cfg.enable {
hm.programs.mpv = {
enable = true;
- package = with pkgs;
- wrapMpv (mpv-unwrapped.override {
- bs2bSupport = false;
- cacaSupport = false;
- dvbinSupport = false;
- dvdnavSupport = false;
- swiftSupport = false;
- }) {
- scripts = with mpvScripts; [
- autoload
- sponsorblock
- ];
- };
+ package =
+ with pkgs;
+ wrapMpv
+ (mpv-unwrapped.override {
+ bs2bSupport = false;
+ cacaSupport = false;
+ dvbinSupport = false;
+ dvdnavSupport = false;
+ swiftSupport = false;
+ })
+ {
+ scripts = with mpvScripts; [
+ autoload
+ sponsorblock
+ ];
+ };
bindings = {
"RIGHT" = "seek 10";
@@ -63,87 +68,89 @@ in {
"extension.jpg".profile = "extension.png";
};
- config = let
- lang = concatStringsSep "," [
- "Japanese"
- "japanese"
- "jp"
- "jpn"
- "jaJP"
- "ja-JP"
- "English"
- "english"
- "en"
- "eng"
- "enUS"
- "en-US"
- "Russian"
- "russian"
- "ru"
- "rus"
- "ruRU"
- "ru-RU"
- ];
- in {
- autofit-larger = "100%x95%";
- cache = true;
- cursor-autohide = 1000;
- cursor-autohide-fs-only = true;
- demuxer-max-back-bytes = "20M";
- demuxer-max-bytes = "20M";
- force-seekable = true;
- fullscreen = true;
- msg-color = true;
- msg-module = true;
- prefetch-playlist = true;
- save-position-on-quit = true;
- screenshot-format = "png";
- screenshot-template = "%F [%p]";
- stop-screensaver = true;
- term-osd-bar = true;
- use-filedir-conf = true;
-
- osd-bar-align-y = 0;
- osd-bar-h = 2;
- osd-bar-w = 60;
- osd-border-color = "#FF262626";
- osd-border-size = 2;
- osd-color = "#FFFFFFFF";
- osd-duration = 1000;
- osd-font-size = 40;
- osd-fractions = true;
- osd-level = 1;
- osd-shadow-color = "#33000000";
-
- # osc = false;
-
- blend-subtitles = true;
- embeddedfonts = false;
- sub-ass-force-margins = true;
- sub-ass-force-style = "kerning=yes";
- sub-auto = "fuzzy";
- sub-border-color = "#FF262626";
- sub-border-size = 2.5;
- sub-color = "#FFFFFFFF";
- sub-file-paths-append = "srt";
- sub-fix-timing = true;
- sub-font-size = 40;
- sub-scale-with-window = true;
- sub-shadow-color = "#33000000";
- sub-shadow-offset = 1;
- sub-spacing = 0.5;
- sub-use-margins = true;
-
- audio-file-auto = "fuzzy";
- volume = 100;
- volume-max = 200;
-
- alang = lang;
- slang = lang;
-
- ytdl = true;
- ytdl-raw-options = ''sub-lang="${lang}",write-sub='';
- };
+ config =
+ let
+ lang = concatStringsSep "," [
+ "Japanese"
+ "japanese"
+ "jp"
+ "jpn"
+ "jaJP"
+ "ja-JP"
+ "English"
+ "english"
+ "en"
+ "eng"
+ "enUS"
+ "en-US"
+ "Russian"
+ "russian"
+ "ru"
+ "rus"
+ "ruRU"
+ "ru-RU"
+ ];
+ in
+ {
+ autofit-larger = "100%x95%";
+ cache = true;
+ cursor-autohide = 1000;
+ cursor-autohide-fs-only = true;
+ demuxer-max-back-bytes = "20M";
+ demuxer-max-bytes = "20M";
+ force-seekable = true;
+ fullscreen = true;
+ msg-color = true;
+ msg-module = true;
+ prefetch-playlist = true;
+ save-position-on-quit = true;
+ screenshot-format = "png";
+ screenshot-template = "%F [%p]";
+ stop-screensaver = true;
+ term-osd-bar = true;
+ use-filedir-conf = true;
+
+ osd-bar-align-y = 0;
+ osd-bar-h = 2;
+ osd-bar-w = 60;
+ osd-border-color = "#FF262626";
+ osd-border-size = 2;
+ osd-color = "#FFFFFFFF";
+ osd-duration = 1000;
+ osd-font-size = 40;
+ osd-fractions = true;
+ osd-level = 1;
+ osd-shadow-color = "#33000000";
+
+ # osc = false;
+
+ blend-subtitles = true;
+ embeddedfonts = false;
+ sub-ass-force-margins = true;
+ sub-ass-force-style = "kerning=yes";
+ sub-auto = "fuzzy";
+ sub-border-color = "#FF262626";
+ sub-border-size = 2.5;
+ sub-color = "#FFFFFFFF";
+ sub-file-paths-append = "srt";
+ sub-fix-timing = true;
+ sub-font-size = 40;
+ sub-scale-with-window = true;
+ sub-shadow-color = "#33000000";
+ sub-shadow-offset = 1;
+ sub-spacing = 0.5;
+ sub-use-margins = true;
+
+ audio-file-auto = "fuzzy";
+ volume = 100;
+ volume-max = 200;
+
+ alang = lang;
+ slang = lang;
+
+ ytdl = true;
+ ytdl-raw-options = ''sub-lang="${lang}",write-sub='';
+ };
};
};
}
diff --git a/modules/common/nmap.nix b/modules/common/nmap.nix
index 85beb21..71b3d0b 100644
--- a/modules/common/nmap.nix
+++ b/modules/common/nmap.nix
@@ -5,9 +5,11 @@
inputs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.nmap;
-in {
+in
+{
options.nixfiles.modules.nmap.enable = mkEnableOption "Nmap";
config = mkIf cfg.enable {
@@ -23,7 +25,10 @@ in {
".nmap/scripts/vulscan/vulscan.nse".source = "${inputs.nmap-vulscan}/vulscan.nse";
};
- packages = with pkgs; [nmap nmap-formatter];
+ packages = with pkgs; [
+ nmap
+ nmap-formatter
+ ];
activation.regenerateNmapScripts = with pkgs; ''
${getExe' nmap "nmap"} --script-updatedb
@@ -33,27 +38,29 @@ in {
systemd.user = {
services.update-nmap-vulscan-lists = {
Service = {
- ExecStart = getExe (pkgs.writeShellApplication {
- name = "update-nmap-vulscan-lists";
- runtimeInputs = [pkgs.curl];
- text = ''
- declare -a vulscandbs=(
- "cve"
- "exploitdb"
- "openvas"
- "osvdb"
- "scipvuldb"
- "securityfocus"
- "securitytracker"
- "xforce"
- )
- for i in "''${vulscandbs[@]}"; do
- curl \
- -o "${config.my.home}/.nmap/scripts/vulscan/$i.csv" \
- "https://www.computec.ch/projekte/vulscan/download/$i.csv"
- done
- '';
- });
+ ExecStart = getExe (
+ pkgs.writeShellApplication {
+ name = "update-nmap-vulscan-lists";
+ runtimeInputs = [ pkgs.curl ];
+ text = ''
+ declare -a vulscandbs=(
+ "cve"
+ "exploitdb"
+ "openvas"
+ "osvdb"
+ "scipvuldb"
+ "securityfocus"
+ "securitytracker"
+ "xforce"
+ )
+ for i in "''${vulscandbs[@]}"; do
+ curl \
+ -o "${config.my.home}/.nmap/scripts/vulscan/$i.csv" \
+ "https://www.computec.ch/projekte/vulscan/download/$i.csv"
+ done
+ '';
+ }
+ );
};
};
@@ -65,7 +72,7 @@ in {
Persistent = true;
Unit = "update-nmap-vulscan-lists.service";
};
- Install.WantedBy = ["timers.target"];
+ Install.WantedBy = [ "timers.target" ];
};
};
};
diff --git a/modules/common/openssh.nix b/modules/common/openssh.nix
index ecaf4de..f60a1ef 100644
--- a/modules/common/openssh.nix
+++ b/modules/common/openssh.nix
@@ -4,11 +4,12 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.openssh;
-in {
- options.nixfiles.modules.openssh.client.enable =
- mkEnableOption "OpenSSH client";
+in
+{
+ options.nixfiles.modules.openssh.client.enable = mkEnableOption "OpenSSH client";
config = mkIf cfg.client.enable {
hm = {
@@ -29,26 +30,35 @@ in {
serverAliveCountMax = 30;
serverAliveInterval = 60;
- matchBlocks = let
- mkBlock = name: {
- hostname ? name,
- port ? 22022, # NOTE This is not the default OpenSSH port.
- user ? my.username,
- identityFile ? "${config.my.home}/.ssh/${my.username}_${my.ssh.type}",
- extraAttrs ? {},
- }:
- nameValuePair name ({inherit hostname port user identityFile;}
- // extraAttrs);
+ matchBlocks =
+ let
+ mkBlock =
+ name:
+ {
+ hostname ? name,
+ port ? 22022, # NOTE This is not the default OpenSSH port.
+ user ? my.username,
+ identityFile ? "${config.my.home}/.ssh/${my.username}_${my.ssh.type}",
+ extraAttrs ? { },
+ }:
+ nameValuePair name (
+ {
+ inherit
+ hostname
+ port
+ user
+ identityFile
+ ;
+ }
+ // extraAttrs
+ );
- internalServers =
- mapAttrs' mkBlock
- (mapAttrs (name: _: {
- hostname = "${name}.${my.domain.shire}";
- }) (filterAttrs (_: attr:
- hasAttr "wireguard" attr
- && attr.isHeadless)
- my.configurations));
- in
+ internalServers = mapAttrs' mkBlock (
+ mapAttrs (name: _: { hostname = "${name}.${my.domain.shire}"; }) (
+ filterAttrs (_: attr: hasAttr "wireguard" attr && attr.isHeadless) my.configurations
+ )
+ );
+ in
internalServers
// (mapAttrs' mkBlock {
gitolite = {
diff --git a/modules/common/password-store.nix b/modules/common/password-store.nix
index c9a71ce..e5cd756 100644
--- a/modules/common/password-store.nix
+++ b/modules/common/password-store.nix
@@ -4,26 +4,28 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.password-store;
-in {
- options.nixfiles.modules.password-store.enable =
- mkEnableOption "the standard UNIX password manager";
+in
+{
+ options.nixfiles.modules.password-store.enable = mkEnableOption "the standard UNIX password manager";
config = mkIf cfg.enable {
hm.programs = {
password-store = {
enable = true;
- package = pkgs.pass.withExtensions (p: with p; [pass-otp]);
+ package = pkgs.pass.withExtensions (p: with p; [ pass-otp ]);
settings.PASSWORD_STORE_DIR = "${config.my.home}/.password-store";
};
# HACK https://github.com/NixOS/nixpkgs/issues/183604
- bash.initExtra = let
- completions = "${config.hm.programs.password-store.package}/share/bash-completion/completions";
- in
+ bash.initExtra =
+ let
+ completions = "${config.hm.programs.password-store.package}/share/bash-completion/completions";
+ in
mkAfter ''
source ${completions}/pass-otp
source ${completions}/pass
diff --git a/modules/common/profiles/default.nix b/modules/common/profiles/default.nix
index a17ff08..79ce39d 100644
--- a/modules/common/profiles/default.nix
+++ b/modules/common/profiles/default.nix
@@ -5,9 +5,11 @@
this,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.profiles.default;
-in {
+in
+{
imports = [
./dev
./email.nix
diff --git a/modules/common/profiles/dev/containers.nix b/modules/common/profiles/dev/containers.nix
index e90c88e..8f3bfc6 100644
--- a/modules/common/profiles/dev/containers.nix
+++ b/modules/common/profiles/dev/containers.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.profiles.dev.containers;
-in {
+in
+{
options.nixfiles.modules.profiles.dev.containers.enable =
mkEnableOption "Tools for working with containers and container orchestration"
// {
diff --git a/modules/common/profiles/dev/default.nix b/modules/common/profiles/dev/default.nix
index 52dc49f..6ac1fe6 100644
--- a/modules/common/profiles/dev/default.nix
+++ b/modules/common/profiles/dev/default.nix
@@ -4,17 +4,18 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.profiles.dev;
-in {
+in
+{
imports = [
./containers.nix
./hidden.nix
./sql.nix
];
- options.nixfiles.modules.profiles.dev.enable =
- mkEnableOption "Catch-all profile for stuff related to software development and etc.";
+ options.nixfiles.modules.profiles.dev.enable = mkEnableOption "Catch-all profile for stuff related to software development and etc.";
config = mkIf cfg.enable {
nixfiles.modules = {
diff --git a/modules/common/profiles/dev/sql.nix b/modules/common/profiles/dev/sql.nix
index 3e1c4b2..c2d4894 100644
--- a/modules/common/profiles/dev/sql.nix
+++ b/modules/common/profiles/dev/sql.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.profiles.dev.sql;
-in {
+in
+{
options.nixfiles.modules.profiles.dev.sql.enable =
mkEnableOption "SQL stuff and database management tools"
// {
@@ -20,81 +22,84 @@ in {
litecli
];
- xdg = let
- mainSection = {
- destructive_warning = "True";
- enable_pager = "True";
- keyword_casing = "auto";
- less_chatty = "True";
- log_file = "/dev/null";
- log_level = "CRITICAL";
- multi_line = "False";
- syntax_style = "default";
- table_format = "fancy_grid";
- };
+ xdg =
+ let
+ mainSection = {
+ destructive_warning = "True";
+ enable_pager = "True";
+ keyword_casing = "auto";
+ less_chatty = "True";
+ log_file = "/dev/null";
+ log_level = "CRITICAL";
+ multi_line = "False";
+ syntax_style = "default";
+ table_format = "fancy_grid";
+ };
- colorsSection = with config.colors.withHashtag; {
- "arg-toolbar" = "noinherit bold";
- "arg-toolbar.text" = "nobold";
- "bottom-toolbar" = "bg:${base01} ${base06}";
- "bottom-toolbar.off" = "bg:${base01} ${base02}";
- "bottom-toolbar.on" = "bg:${base01} ${base07}";
- "bottom-toolbar.transaction.failed" = "bg:${base01} ${base08} bold";
- "bottom-toolbar.transaction.valid" = "bg:${base01} ${base0B} bold";
- "completion-menu.completion" = "bg:${base01} ${base06}";
- "completion-menu.completion.current" = "bg:${base06} ${base01}";
- "completion-menu.meta.completion" = "bg:${base01} ${base13}";
- "completion-menu.meta.completion.current" = "bg:${base09} ${base01}";
- "completion-menu.multi-column-meta" = "bg:${base09} ${base01}";
- "scrollbar" = "bg:${base01}";
- "scrollbar.arrow" = "bg:${base01}";
- "search" = "bg:${base17} ${base07}";
- "search-toolbar" = "noinherit bold";
- "search-toolbar.text" = "nobold";
- "search.current" = "bg:${base14} ${base07}";
- "selected" = "bg:${base0D} ${base07}";
- "system-toolbar" = "noinherit bold";
- };
+ colorsSection = with config.colors.withHashtag; {
+ "arg-toolbar" = "noinherit bold";
+ "arg-toolbar.text" = "nobold";
+ "bottom-toolbar" = "bg:${base01} ${base06}";
+ "bottom-toolbar.off" = "bg:${base01} ${base02}";
+ "bottom-toolbar.on" = "bg:${base01} ${base07}";
+ "bottom-toolbar.transaction.failed" = "bg:${base01} ${base08} bold";
+ "bottom-toolbar.transaction.valid" = "bg:${base01} ${base0B} bold";
+ "completion-menu.completion" = "bg:${base01} ${base06}";
+ "completion-menu.completion.current" = "bg:${base06} ${base01}";
+ "completion-menu.meta.completion" = "bg:${base01} ${base13}";
+ "completion-menu.meta.completion.current" = "bg:${base09} ${base01}";
+ "completion-menu.multi-column-meta" = "bg:${base09} ${base01}";
+ "scrollbar" = "bg:${base01}";
+ "scrollbar.arrow" = "bg:${base01}";
+ "search" = "bg:${base17} ${base07}";
+ "search-toolbar" = "noinherit bold";
+ "search-toolbar.text" = "nobold";
+ "search.current" = "bg:${base14} ${base07}";
+ "selected" = "bg:${base0D} ${base07}";
+ "system-toolbar" = "noinherit bold";
+ };
- mkCliConfig = {
- name,
- custom,
- }: {
- "${name}/config" = {
- text = generators.toINI {} {
- main = mainSection // custom;
- colors = mapAttrs (_: v: "'${v}'") colorsSection;
+ mkCliConfig =
+ { name, custom }:
+ {
+ "${name}/config" = {
+ text = generators.toINI { } {
+ main = mainSection // custom;
+ colors = mapAttrs (_: v: "'${v}'") colorsSection;
+ };
+ };
};
- };
+ in
+ {
+ configFile = mkMerge (
+ map mkCliConfig [
+ {
+ name = "pgcli";
+ custom = {
+ prompt = "'\\u@\\h:\\d> '";
+ multi_line_mode = "psql";
+ on_error = "STOP";
+ auto_expand = "True";
+ expand = "True";
+ keyring = "False";
+ vi = "True";
+ casing_file = "/dev/null";
+ history_file = "/dev/null";
+ };
+ }
+ {
+ name = "litecli";
+ custom = {
+ prompt = "'\\d> '";
+ prompt_continuation = "'-> '";
+ auto_vertical_output = "True";
+ key_bindings = "vi";
+ audit_log = "/dev/null";
+ };
+ }
+ ]
+ );
};
- in {
- configFile = mkMerge (map mkCliConfig [
- {
- name = "pgcli";
- custom = {
- prompt = "'\\u@\\h:\\d> '";
- multi_line_mode = "psql";
- on_error = "STOP";
- auto_expand = "True";
- expand = "True";
- keyring = "False";
- vi = "True";
- casing_file = "/dev/null";
- history_file = "/dev/null";
- };
- }
- {
- name = "litecli";
- custom = {
- prompt = "'\\d> '";
- prompt_continuation = "'-> '";
- auto_vertical_output = "True";
- key_bindings = "vi";
- audit_log = "/dev/null";
- };
- }
- ]);
- };
};
};
}
diff --git a/modules/common/profiles/email.nix b/modules/common/profiles/email.nix
index 3c809af..a525692 100644
--- a/modules/common/profiles/email.nix
+++ b/modules/common/profiles/email.nix
@@ -5,45 +5,51 @@
this,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.profiles.email;
-in {
- options.nixfiles.modules.profiles.email.enable =
- mkEnableOption "Local Email management" // {default = this.isHeadful;};
+in
+{
+ options.nixfiles.modules.profiles.email.enable = mkEnableOption "Local Email management" // {
+ default = this.isHeadful;
+ };
config = mkIf cfg.enable {
hm = {
accounts.email = {
maildirBasePath = "${config.my.home}/doc/mail";
- accounts = let
- mkAccount = attrs:
- mkMerge [
- {
- mbsync = {
- enable = true;
- create = "both";
- expunge = "both";
- patterns = ["*"];
- };
- msmtp.enable = true;
- mu.enable = true;
- thunderbird = {
- enable = hasSuffix "linux" this.system;
- settings = id: {
- "mail.identity.id_${id}.compose_html" = false;
- "mail.identity.id_${id}.reply_on_top" = 0;
+ accounts =
+ let
+ mkAccount =
+ attrs:
+ mkMerge [
+ {
+ mbsync = {
+ enable = true;
+ create = "both";
+ expunge = "both";
+ patterns = [ "*" ];
};
- };
- }
- attrs
- ];
+ msmtp.enable = true;
+ mu.enable = true;
+ thunderbird = {
+ enable = hasSuffix "linux" this.system;
+ settings = id: {
+ "mail.identity.id_${id}.compose_html" = false;
+ "mail.identity.id_${id}.reply_on_top" = 0;
+ };
+ };
+ }
+ attrs
+ ];
- getPassword = {
- path,
- line ? 0,
- }:
- assert (builtins.isInt line);
+ getPassword =
+ {
+ path,
+ line ? 0,
+ }:
+ assert (builtins.isInt line);
concatStringsSep " " (
[
(getExe config.hm.programs.password-store.package)
@@ -57,48 +63,54 @@ in {
"'${toString line}!d'"
]
);
- in {
- shire = mkAccount rec {
- address = my.email;
- aliases = [address "frodo@rohan.net" "azahi@shire.net"];
- realName = my.fullname;
- gpg = {
- inherit (my.pgp) key;
- signByDefault = true;
- encryptByDefault = false;
- };
+ in
+ {
+ shire = mkAccount rec {
+ address = my.email;
+ aliases = [
+ address
+ "frodo@rohan.net"
+ "azahi@shire.net"
+ ];
+ realName = my.fullname;
+ gpg = {
+ inherit (my.pgp) key;
+ signByDefault = true;
+ encryptByDefault = false;
+ };
- primary = true;
+ primary = true;
- imap = {
- host = "shire.net";
- port = 993;
- tls.enable = true;
- };
- smtp = {
- host = "shire.net";
- port = 465;
- tls.enable = true;
+ imap = {
+ host = "shire.net";
+ port = 993;
+ tls.enable = true;
+ };
+ smtp = {
+ host = "shire.net";
+ port = 465;
+ tls.enable = true;
+ };
+ userName = "azahi@shire.net";
+ passwordCommand = getPassword { path = "email/shire.net/azahi"; };
};
- userName = "azahi@shire.net";
- passwordCommand = getPassword {
- path = "email/shire.net/azahi";
- };
- };
- yahoo = mkAccount rec {
- address = "admin@yahoo.com";
- aliases = [address "admin@yahoo.com"];
- realName = "Firstname Lastname";
+ yahoo = mkAccount rec {
+ address = "admin@yahoo.com";
+ aliases = [
+ address
+ "admin@yahoo.com"
+ ];
+ realName = "Firstname Lastname";
- flavor = "yahoo.com";
- userName = "admin@yahoo.com";
- passwordCommand = getPassword {
- path = "email/yahoo.com/admin";
- line = 2;
+ flavor = "yahoo.com";
+ userName = "admin@yahoo.com";
+ passwordCommand = getPassword {
+ path = "email/yahoo.com/admin";
+ line = 2;
+ };
};
};
- };
};
programs = {
diff --git a/modules/common/profiles/headful.nix b/modules/common/profiles/headful.nix
index 1578ccc..cd29225 100644
--- a/modules/common/profiles/headful.nix
+++ b/modules/common/profiles/headful.nix
@@ -5,11 +5,14 @@
this,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.profiles.headful;
-in {
- options.nixfiles.modules.profiles.headful.enable =
- mkEnableOption "headful profile" // {default = this.isHeadful;};
+in
+{
+ options.nixfiles.modules.profiles.headful.enable = mkEnableOption "headful profile" // {
+ default = this.isHeadful;
+ };
config = mkIf cfg.enable {
nixfiles.modules = {
diff --git a/modules/common/profiles/headless.nix b/modules/common/profiles/headless.nix
index cc7c326..1f8096c 100644
--- a/modules/common/profiles/headless.nix
+++ b/modules/common/profiles/headless.nix
@@ -5,19 +5,21 @@
this,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.profiles.headless;
-in {
- options.nixfiles.modules.profiles.headless.enable =
- mkEnableOption "headless profile" // {default = this.isHeadless;};
+in
+{
+ options.nixfiles.modules.profiles.headless.enable = mkEnableOption "headless profile" // {
+ default = this.isHeadless;
+ };
config = mkIf cfg.enable {
hm.home.file = {
".hushlogin".text = "";
- ".bash_history".source =
- config.hm.lib.file.mkOutOfStoreSymlink "/dev/null";
+ ".bash_history".source = config.hm.lib.file.mkOutOfStoreSymlink "/dev/null";
};
- environment.systemPackages = with pkgs; [alacritty.terminfo];
+ environment.systemPackages = with pkgs; [ alacritty.terminfo ];
};
}
diff --git a/modules/common/qutebrowser.nix b/modules/common/qutebrowser.nix
index a3b82d3..8fdcf48 100644
--- a/modules/common/qutebrowser.nix
+++ b/modules/common/qutebrowser.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.qutebrowser;
-in {
+in
+{
options.nixfiles.modules.qutebrowser.enable = mkEnableOption "Qutebrowser";
config = mkIf cfg.enable {
@@ -20,9 +22,11 @@ in {
enable = true;
keyBindings.normal = mkIf mpv.enable {
- "z" = let
- mpv = getExe config.hm.programs.mpv.package;
- in "hint links spawn --detach ${mpv} {hint-url}";
+ "z" =
+ let
+ mpv = getExe config.hm.programs.mpv.package;
+ in
+ "hint links spawn --detach ${mpv} {hint-url}";
};
searchEngines = rec {
@@ -147,7 +151,11 @@ in {
shrink = true;
timestamp_format = "%y-%m-%d";
min_chars = 3;
- open_categories = ["bookmarks" "quickmarks" "history"];
+ open_categories = [
+ "bookmarks"
+ "quickmarks"
+ "history"
+ ];
scrollbar = {
width = 0;
@@ -164,11 +172,7 @@ in {
};
editor.command = [
- (
- if alacritty.enable
- then getExe pkgs.alacritty
- else getExe pkgs.xterm
- )
+ (if alacritty.enable then getExe pkgs.alacritty else getExe pkgs.xterm)
"-e"
(getExe' config.programs.vim.package "vim")
"-f"
@@ -192,7 +196,11 @@ in {
smooth = false;
};
- spellcheck.languages = ["en-US" "en-GB" "ru-RU"];
+ spellcheck.languages = [
+ "en-US"
+ "en-GB"
+ "ru-RU"
+ ];
statusbar.position = "bottom";
@@ -233,7 +241,7 @@ in {
url = rec {
default_page = "about:blank";
- start_pages = [default_page];
+ start_pages = [ default_page ];
};
window = {
@@ -248,76 +256,87 @@ in {
};
extraConfig =
- (let
- mkPaddingDictionary = {
- name,
- bottom,
- left,
- right,
- top,
- }: let
- n = "c.${name}.padding";
- b = "'bottom': ${toString bottom}";
- l = "'left': ${toString left}";
- r = "'right': ${toString right}";
- t = "'top': ${toString top}";
- in "${n} = {${b}, ${l}, ${r}, ${t}}";
-
- final = map mkPaddingDictionary [
- {
- name = "hints";
- bottom = 3;
- left = 3;
- right = 3;
- top = 3;
- }
- {
- name = "statusbar";
- bottom = 1;
- left = 0;
- right = 3;
- top = 1;
- }
- {
- name = "tabs";
- bottom = 1;
- left = 6;
- right = 6;
- top = 1;
- }
- ];
- in
- concatLines final + "\n")
- + (let
- allowSetting = setting: url: "config.set('content.${setting}', True, '${url}')";
-
- allowMediaCaptureSetting = url: [
- (allowSetting "desktop_capture" url)
- (allowSetting "media.audio_video_capture" url)
- ];
- allowedMediaCapture = flatten (map allowMediaCaptureSetting [
- "https://discord.com"
- "https://web.telegram.org"
- ]);
-
- allowNotificationsSetting = allowSetting "notifications.enabled";
- allowedNotifications = map allowNotificationsSetting [
- "https://discord.com"
- "https://web.telegram.org"
- ];
+ (
+ let
+ mkPaddingDictionary =
+ {
+ name,
+ bottom,
+ left,
+ right,
+ top,
+ }:
+ let
+ n = "c.${name}.padding";
+ b = "'bottom': ${toString bottom}";
+ l = "'left': ${toString left}";
+ r = "'right': ${toString right}";
+ t = "'top': ${toString top}";
+ in
+ "${n} = {${b}, ${l}, ${r}, ${t}}";
+
+ final = map mkPaddingDictionary [
+ {
+ name = "hints";
+ bottom = 3;
+ left = 3;
+ right = 3;
+ top = 3;
+ }
+ {
+ name = "statusbar";
+ bottom = 1;
+ left = 0;
+ right = 3;
+ top = 1;
+ }
+ {
+ name = "tabs";
+ bottom = 1;
+ left = 6;
+ right = 6;
+ top = 1;
+ }
+ ];
+ in
+ concatLines final + "\n"
+ )
+ + (
+ let
+ allowSetting = setting: url: "config.set('content.${setting}', True, '${url}')";
+
+ allowMediaCaptureSetting = url: [
+ (allowSetting "desktop_capture" url)
+ (allowSetting "media.audio_video_capture" url)
+ ];
+ allowedMediaCapture = flatten (
+ map allowMediaCaptureSetting [
+ "https://discord.com"
+ "https://web.telegram.org"
+ ]
+ );
+
+ allowNotificationsSetting = allowSetting "notifications.enabled";
+ allowedNotifications = map allowNotificationsSetting [
+ "https://discord.com"
+ "https://web.telegram.org"
+ ];
- final = allowedMediaCapture ++ allowedNotifications;
- in
- concatLines final + "\n");
+ final = allowedMediaCapture ++ allowedNotifications;
+ in
+ concatLines final + "\n"
+ );
};
- home.activation.installQutebrowserDictionaries = let
- dictcli = "${pkgs.qutebrowser}/share/qutebrowser/scripts/dictcli.py";
- in ''
- if [[ ! -d "''${XDG_DATA_HOME:-$HOME/.local/share}/qutebrowser/qtwebengine_dictionaries" ]]; then
- ${dictcli} install en-US en-GB ru-RU
- fi
- '';
+ home.activation.installQutebrowserDictionaries =
+ let
+ dictcli = "${pkgs.qutebrowser}/share/qutebrowser/scripts/dictcli.py";
+ in
+ ''
+ if [[ ! -d "''${XDG_DATA_HOME:-$HOME/.local/share}/qutebrowser/qtwebengine_dictionaries" ]]; then
+ ${dictcli} install en-US en-GB ru-RU
+ fi
+ '';
};
};
}
diff --git a/modules/common/subversion.nix b/modules/common/subversion.nix
index 2bd5e42..9398592 100644
--- a/modules/common/subversion.nix
+++ b/modules/common/subversion.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.subversion;
-in {
+in
+{
options.nixfiles.modules.subversion.enable = mkEnableOption "Subversion";
config = mkIf cfg.enable {
@@ -14,7 +16,7 @@ in {
hm.home = {
file = {
- ".subversion/config".text = generators.toINI {} {
+ ".subversion/config".text = generators.toINI { } {
auth = {
password-stores = "gpg-agent";
ssl-client-cert-file-prompt = "no";
@@ -26,8 +28,9 @@ in {
diff-cmd = getExe pkgs.colordiff;
};
miscellany = {
- global-ignores = with config.hm.programs.git;
- optionalString (ignores != []) (concatStringsSep " " ignores);
+ global-ignores =
+ with config.hm.programs.git;
+ optionalString (ignores != [ ]) (concatStringsSep " " ignores);
diff-ignore-content-type = "no";
};
working-copy = {
@@ -37,7 +40,7 @@ in {
};
};
- ".subversion/servers".text = generators.toINI {} {
+ ".subversion/servers".text = generators.toINI { } {
global = {
store-auth-creds = "yes";
store-passwords = "yes";
@@ -46,7 +49,7 @@ in {
};
};
- packages = [(pkgs.subversionClient.override {saslSupport = true;})];
+ packages = [ (pkgs.subversionClient.override { saslSupport = true; }) ];
};
};
}
diff --git a/modules/common/tmux.nix b/modules/common/tmux.nix
index e978f72..a754222 100644
--- a/modules/common/tmux.nix
+++ b/modules/common/tmux.nix
@@ -1,13 +1,10 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.tmux;
-in {
- options.nixfiles.modules.tmux.enable =
- mkEnableOption "tmux";
+in
+{
+ options.nixfiles.modules.tmux.enable = mkEnableOption "tmux";
config = mkIf cfg.enable {
hm.programs.tmux = {
diff --git a/modules/common/vim/default.nix b/modules/common/vim/default.nix
index e305cf1..93729bc 100644
--- a/modules/common/vim/default.nix
+++ b/modules/common/vim/default.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.vim;
-in {
+in
+{
options.nixfiles.modules.vim = {
enable = mkEnableOption "Vim";
@@ -35,7 +37,7 @@ in {
hm.stylix.targets.vim.enable = false;
environment = with config.programs.vim; {
- systemPackages = [package];
+ systemPackages = [ package ];
variables = rec {
EDITOR = mkOverride 15 (getExe' package "vim");
VISUAL = EDITOR;
diff --git a/modules/common/vscode.nix b/modules/common/vscode.nix
index 8901113..bd840d8 100644
--- a/modules/common/vscode.nix
+++ b/modules/common/vscode.nix
@@ -5,15 +5,22 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.vscode;
-in {
+in
+{
options.nixfiles.modules.vscode = {
enable = mkEnableOption "VSCode";
- package = with pkgs;
+ package =
+ with pkgs;
mkOption {
- type = types.enum [vscodium vscode vscode-fhs];
+ type = types.enum [
+ vscodium
+ vscode
+ vscode-fhs
+ ];
default = vscodium;
description = "Which package to use as a VSCode implementation.";
};
@@ -29,203 +36,209 @@ in {
hm = {
stylix.targets.vscode.enable = false;
- programs.vscode = with config.nixfiles;
- with modules;
- with profiles; {
- enable = true;
-
- inherit (cfg) package;
-
- extensions = with pkgs.open-vsx;
- [
- editorconfig.editorconfig
- efoerster.texlab
- github.vscode-pull-request-github
- gitlab.gitlab-workflow
- golang.go
- graphql.vscode-graphql
- graphql.vscode-graphql-execution
- graphql.vscode-graphql-syntax
- hashicorp.hcl
- hashicorp.terraform
- haskell.haskell
- jnoortheen.nix-ide
- kahole.magit
- mads-hartmann.bash-ide-vscode
- mkhl.direnv
- ms-kubernetes-tools.vscode-kubernetes-tools
- ms-python.python
- redhat.ansible
- redhat.vscode-xml
- redhat.vscode-yaml
- rust-lang.rust
- signageos.signageos-vscode-sops
- 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
- ]
- ++ optional cfg.vim.enable vscodevim.vim;
-
- userSettings = {
- editor = {
- codeLens = false;
- cursorStyle = "block";
- detectIndentation = true;
- minimap.enabled = false;
- renderWhitespace = "trailing";
- rulers = [80 120];
- smoothScrolling = false;
- tabCompletion = "on";
- cursorSurroundingLines = 10;
- scrollBeyondLastColumn = 10;
- };
+ programs.vscode =
+ with config.nixfiles;
+ with modules;
+ with profiles;
+ {
+ enable = true;
+
+ inherit (cfg) package;
+
+ extensions =
+ with pkgs.open-vsx;
+ [
+ editorconfig.editorconfig
+ efoerster.texlab
+ github.vscode-pull-request-github
+ gitlab.gitlab-workflow
+ golang.go
+ graphql.vscode-graphql
+ graphql.vscode-graphql-execution
+ graphql.vscode-graphql-syntax
+ hashicorp.hcl
+ hashicorp.terraform
+ haskell.haskell
+ jnoortheen.nix-ide
+ kahole.magit
+ mads-hartmann.bash-ide-vscode
+ mkhl.direnv
+ ms-kubernetes-tools.vscode-kubernetes-tools
+ ms-python.python
+ redhat.ansible
+ redhat.vscode-xml
+ redhat.vscode-yaml
+ rust-lang.rust
+ signageos.signageos-vscode-sops
+ 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
+ ]
+ ++ optional cfg.vim.enable vscodevim.vim;
+
+ userSettings = {
+ editor = {
+ codeLens = false;
+ cursorStyle = "block";
+ detectIndentation = true;
+ minimap.enabled = false;
+ renderWhitespace = "trailing";
+ rulers = [
+ 80
+ 120
+ ];
+ smoothScrolling = false;
+ tabCompletion = "on";
+ cursorSurroundingLines = 10;
+ scrollBeyondLastColumn = 10;
+ };
- keyboard.dispatch = "keyCode";
+ keyboard.dispatch = "keyCode";
- diffEditor.codeLens = false;
+ diffEditor.codeLens = false;
- files = {
- autoSave = "off";
- enableTrash = false;
- };
+ files = {
+ autoSave = "off";
+ enableTrash = false;
+ };
- workbench = {
- activityBar.location = "hidden";
- colorTheme = "Default Light Modern";
- editor.highlightModifiedTabs = true;
- enableExperiments = false;
- settings.enableNaturalLanguageSearch = false;
- startupEditor = "none";
- tips.enabled = false;
- tree.indent = 4;
- welcomePage = {
- walkthroughs.openOnInstall = false;
- preferReducedMotion = true;
+ workbench = {
+ activityBar.location = "hidden";
+ colorTheme = "Default Light Modern";
+ editor.highlightModifiedTabs = true;
+ enableExperiments = false;
+ settings.enableNaturalLanguageSearch = false;
+ startupEditor = "none";
+ tips.enabled = false;
+ tree.indent = 4;
+ welcomePage = {
+ walkthroughs.openOnInstall = false;
+ preferReducedMotion = true;
+ };
};
- };
- extensions = {
- autoCheckUpdates = false;
- autoUpdate = false;
- ignoreRecommendations = true;
- };
+ extensions = {
+ autoCheckUpdates = false;
+ autoUpdate = false;
+ ignoreRecommendations = true;
+ };
- terminal.integrated = {
- enableBell = true;
- };
+ terminal.integrated = {
+ enableBell = true;
+ };
- update = {
- mode = "none";
- showReleaseNotes = false;
- };
+ update = {
+ mode = "none";
+ showReleaseNotes = false;
+ };
- telemetry = {
- enableCrashReporter = false;
- enableTelemetry = false;
- };
+ telemetry = {
+ enableCrashReporter = false;
+ enableTelemetry = false;
+ };
- security.workspace.trust.enabled = false;
+ security.workspace.trust.enabled = false;
- # Extensions.
+ # Extensions.
- ansible = {
ansible = {
- useFullyQualifiedCollectionNames = true;
- reuseTerminal = true;
+ ansible = {
+ useFullyQualifiedCollectionNames = true;
+ reuseTerminal = true;
+ };
+ validation.lint.path = getExe' pkgs.ansible-lint "ansible-lint";
};
- validation.lint.path = getExe' pkgs.ansible-lint "ansible-lint";
- };
- bashIde.shellcheckPath = getExe' pkgs.shellcheck "shellcheck";
+ bashIde.shellcheckPath = getExe' pkgs.shellcheck "shellcheck";
- cSpell.language = "en-GB,en,ru";
+ cSpell.language = "en-GB,en,ru";
- direnv = {
- restart.automatic = true;
- };
+ direnv = {
+ restart.automatic = true;
+ };
- magit = {
- forge-enabled = true;
- git-path = getExe config.hm.programs.git.package;
- };
+ magit = {
+ forge-enabled = true;
+ git-path = getExe config.hm.programs.git.package;
+ };
- git.openRepositoryInParentFolders = "always";
+ git.openRepositoryInParentFolders = "always";
- github = {
- branchProtection = true;
- gitProtocol = "ssh";
- };
+ github = {
+ branchProtection = true;
+ gitProtocol = "ssh";
+ };
- terraform = {
- languageServer.path = getExe' pkgs.terraform-ls "terraform-ls";
- languageServer.terraform.path = getExe pkgs.opentofu;
- };
+ terraform = {
+ languageServer.path = getExe' pkgs.terraform-ls "terraform-ls";
+ languageServer.terraform.path = getExe pkgs.opentofu;
+ };
- haskell = {
- formattingProvider = "ormolu";
- serverExecutablePath = getExe' pkgs.haskell-language-server "haskell-language-server";
- };
+ haskell = {
+ formattingProvider = "ormolu";
+ serverExecutablePath = getExe' pkgs.haskell-language-server "haskell-language-server";
+ };
- nix = {
- enableLanguageServer = true;
- serverPath = getExe pkgs.nil;
- };
+ nix = {
+ enableLanguageServer = true;
+ serverPath = getExe pkgs.nil;
+ };
- python = with pkgs.python311Packages; {
- experiments.optOutFrom = ["All"];
- pipenvPath = getExe' pkgs.pipenv "pipenv";
- poetryPath = getExe' pkgs.poetry "poetry";
- formatting = {
- provider = "black";
- autopep8Path = getExe' autopep8 "autopep8";
- blackPath = getExe' black "black";
- yapfPath = getExe' yapf "yapf";
- };
- linting = {
- enabled = true;
- 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 = getExe' pytest "pytest";
+ python = with pkgs.python311Packages; {
+ experiments.optOutFrom = [ "All" ];
+ pipenvPath = getExe' pkgs.pipenv "pipenv";
+ poetryPath = getExe' pkgs.poetry "poetry";
+ formatting = {
+ provider = "black";
+ autopep8Path = getExe' autopep8 "autopep8";
+ blackPath = getExe' black "black";
+ yapfPath = getExe' yapf "yapf";
+ };
+ linting = {
+ enabled = true;
+ 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 = getExe' pytest "pytest";
+ };
};
- };
- rust-client = {
- disableRustup = true;
- rustupPath = getExe' pkgs.rustup "rustup";
- rustfmt_path = getExe pkgs.rustfmt;
- };
+ rust-client = {
+ disableRustup = true;
+ rustupPath = getExe' pkgs.rustup "rustup";
+ rustfmt_path = getExe pkgs.rustfmt;
+ };
- vim = mkIf cfg.vim.enable {
- easymotion = true;
+ vim = mkIf cfg.vim.enable {
+ easymotion = true;
- leader = " ";
+ leader = " ";
- useSystemClipboard = true;
- };
+ useSystemClipboard = true;
+ };
- zig.zls = {
- checkForUpdate = false;
- path = getExe' pkgs.zls "zls";
- };
+ zig.zls = {
+ checkForUpdate = false;
+ path = getExe' pkgs.zls "zls";
+ };
- redhat.telemetry.enabled = false;
+ redhat.telemetry.enabled = false;
+ };
};
- };
};
- nixpkgs.overlays = [inputs.vscode-extensions.overlays.default];
+ nixpkgs.overlays = [ inputs.vscode-extensions.overlays.default ];
};
}
diff --git a/modules/common/wget.nix b/modules/common/wget.nix
index 1cd8eae..0e8ee64 100644
--- a/modules/common/wget.nix
+++ b/modules/common/wget.nix
@@ -4,9 +4,11 @@
pkgs,
...
}:
-with lib; let
+with lib;
+let
cfg = config.nixfiles.modules.wget;
-in {
+in
+{
options.nixfiles.modules.wget.enable = mkEnableOption "wget";
config = mkIf cfg.enable {
@@ -30,6 +32,6 @@ in {
'';
};
- environment.systemPackages = with pkgs; [wget];
+ environment.systemPackages = with pkgs; [ wget ];
};
}
diff --git a/modules/common/zathura.nix b/modules/common/zathura.nix
index b13d2a6..bc92258 100644
--- a/modules/common/zathura.nix
+++ b/modules/common/zathura.nix
@@ -1,13 +1,10 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
+{ config, lib, ... }:
+with lib;
+let
cfg = config.nixfiles.modules.zathura;
-in {
- options.nixfiles.modules.zathura.enable =
- mkEnableOption "Zathura PDF reader";
+in
+{
+ options.nixfiles.modules.zathura.enable = mkEnableOption "Zathura PDF reader";
config = mkIf cfg.enable {
hm.programs.zathura = {