Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
62a605b7c5ce7f9334dd946ef3de8fedfb4cdfaa
# Enabled strict formatting with nixfmt
ba4f3ffb1956acd35a2d4a71a8775d2f520497d1
# Switched to `nix-ast-lint`
8581934d6669224eed540123af826deec67b400c
12 changes: 2 additions & 10 deletions checks/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,11 @@ in

checkInputs = lib.attrValues {
inherit (pkgs) deadnix nixfmt-rfc-style;

statix = pkgs.statix.overrideAttrs (old: {
patches = old.patches ++ [
(pkgs.fetchpatch {
url = "https://github.com/oppiliappan/statix/commit/925dec39bb705acbbe77178b4d658fe1b752abbb.patch";
hash = "sha256-0wacO6wuYJ4ufN9PGucRVJucFdFFNF+NoHYIrLXsCWs=";
})
];
});
inherit (flake-inputs.nix-ast-lint.packages.x86_64-linux) nix-ast-lint;
};

script = ''
statix check **/*.nix
nix-ast-lint --error --off=empty-let-in
deadnix --fail **/*.nix
nixfmt --check --strict **/*.nix
'';
Expand Down
19 changes: 19 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@
inputs.nixpkgs.follows = "nixpkgs";
};

nix-ast-lint = {
url = "https://codeberg.org/tlater/nix-ast-lint/archive/main.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
};

flint = {
url = "github:NotAShelf/flint";
inputs.nixpkgs.follows = "nixpkgs";
Expand Down
180 changes: 91 additions & 89 deletions home-config/desktop/mime.nix
Original file line number Diff line number Diff line change
@@ -1,96 +1,98 @@
{
xdg.mime.enable = true;
xdg.mimeApps = {
enable = true;
defaultApplications = {
# Set feh as the default for all image types
"image/bmp" = "feh.desktop";
"image/g3fax" = "feh.desktop";
"image/gif" = "feh.desktop";
"image/x-fits" = "feh.desktop";
"image/x-pcx" = "feh.desktop";
"image/x-portable-anymap" = "feh.desktop";
"image/x-portable-bitmap" = "feh.desktop";
"image/x-portable-graymap" = "feh.desktop";
"image/x-portable-pixmap" = "feh.desktop";
"image/x-psd" = "feh.desktop";
"image/x-sgi" = "feh.desktop";
"image/x-tga" = "feh.desktop";
"image/x-xbitmap" = "feh.desktop";
"image/x-xwindowdump" = "feh.desktop";
"image/x-xcf" = "feh.desktop";
"image/x-compressed-xcf" = "feh.desktop";
"image/tiff" = "feh.desktop";
"image/jpeg" = "feh.desktop";
"image/x-psp" = "feh.desktop";
"application/postscript" = "feh.desktop";
"image/png" = "feh.desktop";
"image/x-icon" = "feh.desktop";
"image/x-xpixmap" = "feh.desktop";
"image/x-exr" = "feh.desktop";
"image/x-webp" = "feh.desktop";
"image/heif" = "feh.desktop";
"image/heic" = "feh.desktop";
"image/svg+xml" = "feh.desktop";
"application/pdf" = "feh.desktop";
"image/x-wmf" = "feh.desktop";
"image/jp2" = "feh.desktop";
"image/x-xcursor" = "feh.desktop";
xdg = {
mime.enable = true;
mimeApps = {
enable = true;
defaultApplications = {
# Set feh as the default for all image types
"image/bmp" = "feh.desktop";
"image/g3fax" = "feh.desktop";
"image/gif" = "feh.desktop";
"image/x-fits" = "feh.desktop";
"image/x-pcx" = "feh.desktop";
"image/x-portable-anymap" = "feh.desktop";
"image/x-portable-bitmap" = "feh.desktop";
"image/x-portable-graymap" = "feh.desktop";
"image/x-portable-pixmap" = "feh.desktop";
"image/x-psd" = "feh.desktop";
"image/x-sgi" = "feh.desktop";
"image/x-tga" = "feh.desktop";
"image/x-xbitmap" = "feh.desktop";
"image/x-xwindowdump" = "feh.desktop";
"image/x-xcf" = "feh.desktop";
"image/x-compressed-xcf" = "feh.desktop";
"image/tiff" = "feh.desktop";
"image/jpeg" = "feh.desktop";
"image/x-psp" = "feh.desktop";
"application/postscript" = "feh.desktop";
"image/png" = "feh.desktop";
"image/x-icon" = "feh.desktop";
"image/x-xpixmap" = "feh.desktop";
"image/x-exr" = "feh.desktop";
"image/x-webp" = "feh.desktop";
"image/heif" = "feh.desktop";
"image/heic" = "feh.desktop";
"image/svg+xml" = "feh.desktop";
"application/pdf" = "feh.desktop";
"image/x-wmf" = "feh.desktop";
"image/jp2" = "feh.desktop";
"image/x-xcursor" = "feh.desktop";

# Set emacsclient as the default for all text types
"application/rtf" = "emacsclient.desktop";
"application/vnd.mozilla.xul+xml" = "emacsclient.desktop";
"application/xhtml+xml" = "emacsclient.desktop";
"application/xml" = "emacsclient.desktop";
"application/x-shellscript" = "emacsclient.desktop";
"application/x-wine-extension-ini" = "emacsclient.desktop";
"application/zip" = "emacsclient.desktop";
"text/english" = "emacsclient.desktop";
"text/html" = "emacsclient.desktop";
"text/markdown" = "emacsclient.desktop";
"text/plain" = "emacsclient.desktop";
"text/x-log" = "emacsclient.desktop";
"text/x-makefile" = "emacsclient.desktop";
"text/x-c++hdr" = "emacsclient.desktop";
"text/x-c++src" = "emacsclient.desktop";
"text/x-chdr" = "emacsclient.desktop";
"text/x-csrc" = "emacsclient.desktop";
"text/x-java" = "emacsclient.desktop";
"text/x-moc" = "emacsclient.desktop";
"text/x-pascal" = "emacsclient.desktop";
"text/x-tcl" = "emacsclient.desktop";
"text/x-tex" = "emacsclient.desktop";
"text/xml" = "emacsclient.desktop";
"text/x-c" = "emacsclient.desktop";
"text/x-c++" = "emacsclient.desktop";
# Set emacsclient as the default for all text types
"application/rtf" = "emacsclient.desktop";
"application/vnd.mozilla.xul+xml" = "emacsclient.desktop";
"application/xhtml+xml" = "emacsclient.desktop";
"application/xml" = "emacsclient.desktop";
"application/x-shellscript" = "emacsclient.desktop";
"application/x-wine-extension-ini" = "emacsclient.desktop";
"application/zip" = "emacsclient.desktop";
"text/english" = "emacsclient.desktop";
"text/html" = "emacsclient.desktop";
"text/markdown" = "emacsclient.desktop";
"text/plain" = "emacsclient.desktop";
"text/x-log" = "emacsclient.desktop";
"text/x-makefile" = "emacsclient.desktop";
"text/x-c++hdr" = "emacsclient.desktop";
"text/x-c++src" = "emacsclient.desktop";
"text/x-chdr" = "emacsclient.desktop";
"text/x-csrc" = "emacsclient.desktop";
"text/x-java" = "emacsclient.desktop";
"text/x-moc" = "emacsclient.desktop";
"text/x-pascal" = "emacsclient.desktop";
"text/x-tcl" = "emacsclient.desktop";
"text/x-tex" = "emacsclient.desktop";
"text/xml" = "emacsclient.desktop";
"text/x-c" = "emacsclient.desktop";
"text/x-c++" = "emacsclient.desktop";

# Use firefox for http/s
"x-scheme-handler/http" = "librewolf.desktop";
"x-scheme-handler/https" = "librewolf.desktop";
};
# Use firefox for http/s
"x-scheme-handler/http" = "librewolf.desktop";
"x-scheme-handler/https" = "librewolf.desktop";
};

# xdg-open ignores these, but let's unregister all the wine cruft
# anyway
associations = {
removed = {
"application/vnd.ms-htmlhelp" = "wine-extension-chm.desktop";
"image/gif" = [ "wine-extension-gif.desktop" ];
"application/winhlp" = "wine-extension-hlp.desktop";
"application/x-wine-extension-ini" = "wine-extension-ini.desktop";
"image/jpeg" = [
"wine-extension-jfif.desktop"
"wine-extension-jpe.desktop"
];
"application/x-wine-extension-msp" = "wine-extension-msp.desktop";
"application/pdf" = [ "wine-extension-pdf.desktop" ];
"image/png" = [ "wine-extension-png.desktop" ];
"application/rtf" = "wine-extension-rtf.desktop";
"text/plain" = "wine-extension-txt.desktop";
"application/x-mswinurl" = "wine-extension-url.desktop";
"application/x-wine-extension-vbs" = "wine-extension-vbs.desktop";
"application/x-mswrite" = "wine-extension-wri.desktop";
"application/xml" = "wine-extension-xml.desktop";
"text/html" = [ "wine-extension-htm.desktop" ];
# xdg-open ignores these, but let's unregister all the wine cruft
# anyway
associations = {
removed = {
"application/vnd.ms-htmlhelp" = "wine-extension-chm.desktop";
"image/gif" = [ "wine-extension-gif.desktop" ];
"application/winhlp" = "wine-extension-hlp.desktop";
"application/x-wine-extension-ini" = "wine-extension-ini.desktop";
"image/jpeg" = [
"wine-extension-jfif.desktop"
"wine-extension-jpe.desktop"
];
"application/x-wine-extension-msp" = "wine-extension-msp.desktop";
"application/pdf" = [ "wine-extension-pdf.desktop" ];
"image/png" = [ "wine-extension-png.desktop" ];
"application/rtf" = "wine-extension-rtf.desktop";
"text/plain" = "wine-extension-txt.desktop";
"application/x-mswinurl" = "wine-extension-url.desktop";
"application/x-wine-extension-vbs" = "wine-extension-vbs.desktop";
"application/x-mswrite" = "wine-extension-wri.desktop";
"application/xml" = "wine-extension-xml.desktop";
"text/html" = [ "wine-extension-htm.desktop" ];
};
};
};
};
Expand Down
6 changes: 3 additions & 3 deletions home-config/shell/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
{
imports = [ ./nushell.nix ];

xdg = {
configFile."zellij".source = ../dotfiles/zellij;
configFile."dashrc".source = ../dotfiles/dashrc;
xdg.configFile = {
"zellij".source = ../dotfiles/zellij;
"dashrc".source = ../dotfiles/dashrc;
};

home = {
Expand Down
94 changes: 47 additions & 47 deletions home-config/xdg-settings.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,6 @@ let
inherit (config) xdg;
in
{
home = {
activation.xdg-dir-prep = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
$DRY_RUN_CMD mkdir $VERBOSE_ARG -p '${xdg.cacheHome}/less'
'';

preferXdgDirectories = true;
};

xdg.userDirs = {
enable = true;
# Work around firefox creating a "Desktop" directory
Expand All @@ -34,48 +26,56 @@ in
};
};

home.sessionVariables = {
_JAVA_OPTIONS = concatStringsSep " " [
"-Djava.util.prefs.userRoot='${xdg.configHome}'/java"
"-Djavafx.cachedir='${xdg.cacheHome}/openjfx'"
"-Dorg.lwjgl.glfw.libname='${pkgs.glfw3-minecraft}/lib/libglfw.so'"
];
LESSKEY = "${xdg.cacheHome}/less/key";
LESSHISTFILE = "${xdg.cacheHome}/less/history";
PYLINTHOME = "${xdg.cacheHome}/pylint";
CARGO_HOME = "${xdg.cacheHome}/cargo";
RUSTUP_HOME = "${xdg.dataHome}/rustup";
XCOMPOSECACHE = "${xdg.cacheHome}/X11/xcompose";
XCOMPOSEFILE = "${xdg.configHome}/X11/xcompose";
MAILCAPS = "${xdg.configHome}/mailcap";
IPYTHONDIR = "${xdg.dataHome}/ipython";
JUPYTER_CONFIG_DIR = "${xdg.dataHome}/ipython";
HISTFILE = "${xdg.dataHome}/histfile";
RLWRAP_HOME = "${xdg.dataHome}/rlwrap";
CUDA_CACHE_PATH = "${xdg.dataHome}/cuda";
home = {
activation.xdg-dir-prep = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
$DRY_RUN_CMD mkdir $VERBOSE_ARG -p '${xdg.cacheHome}/less'
'';

preferXdgDirectories = true;

# See, this is exactly why things should follow the spec. I have
# no intention of using gradle ever, but occasionally I need to
# build software that uses it.
#
# Now I need to deal with gradle puking directories all over my
# file system, or have a permanent configuration option here for
# software I don't even use.
#
# Grmbl.
GRADLE_USER_HOME = "${xdg.cacheHome}/gradle";
sessionVariables = {
_JAVA_OPTIONS = concatStringsSep " " [
"-Djava.util.prefs.userRoot='${xdg.configHome}'/java"
"-Djavafx.cachedir='${xdg.cacheHome}/openjfx'"
"-Dorg.lwjgl.glfw.libname='${pkgs.glfw3-minecraft}/lib/libglfw.so'"
];
LESSKEY = "${xdg.cacheHome}/less/key";
LESSHISTFILE = "${xdg.cacheHome}/less/history";
PYLINTHOME = "${xdg.cacheHome}/pylint";
CARGO_HOME = "${xdg.cacheHome}/cargo";
RUSTUP_HOME = "${xdg.dataHome}/rustup";
XCOMPOSECACHE = "${xdg.cacheHome}/X11/xcompose";
XCOMPOSEFILE = "${xdg.configHome}/X11/xcompose";
MAILCAPS = "${xdg.configHome}/mailcap";
IPYTHONDIR = "${xdg.dataHome}/ipython";
JUPYTER_CONFIG_DIR = "${xdg.dataHome}/ipython";
HISTFILE = "${xdg.dataHome}/histfile";
RLWRAP_HOME = "${xdg.dataHome}/rlwrap";
CUDA_CACHE_PATH = "${xdg.dataHome}/cuda";

NPM_CONFIG_USERCONFIG = writeText "npmrc" ''
prefix=${xdg.cacheHome}/npm
cache=${xdg.cacheHome}/npm
tmp=$XDG_RUNTIME_DIR/npm
init-module=${xdg.configHome}/npm/config/npm-init.js
'';
# See, this is exactly why things should follow the spec. I have
# no intention of using gradle ever, but occasionally I need to
# build software that uses it.
#
# Now I need to deal with gradle puking directories all over my
# file system, or have a permanent configuration option here for
# software I don't even use.
#
# Grmbl.
GRADLE_USER_HOME = "${xdg.cacheHome}/gradle";

PYTHONSTARTUP = "${./dotfiles/bin/history.py}";
NPM_CONFIG_USERCONFIG = writeText "npmrc" ''
prefix=${xdg.cacheHome}/npm
cache=${xdg.cacheHome}/npm
tmp=$XDG_RUNTIME_DIR/npm
init-module=${xdg.configHome}/npm/config/npm-init.js
'';

EM_CONFIG = "${xdg.configHome}/emscripten/config";
EM_CACHE = "${xdg.cacheHome}/emscripten/cache";
EM_PORTS = "${xdg.dataHome}/emscripten/cache";
PYTHONSTARTUP = "${./dotfiles/bin/history.py}";

EM_CONFIG = "${xdg.configHome}/emscripten/config";
EM_CACHE = "${xdg.cacheHome}/emscripten/cache";
EM_PORTS = "${xdg.dataHome}/emscripten/cache";
};
};
}
2 changes: 1 addition & 1 deletion lib/pkgs.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ rec {
interpreter = lib.concatStringsSep " " [
(lib.getExe nushell)
"--no-config-file"
"--plugins [${lib.concatStringsSep " " (map (p: lib.getExe p) plugins)}]"
"--plugins [${lib.concatStringsSep " " (map lib.getExe plugins)}]"
];

makeWrapperArgs = [
Expand Down
Loading