1
Fork 0

Update to nixpgks 24.05

This commit is contained in:
prescientmoon 2024-07-26 20:18:26 +02:00
parent 5247160b43
commit a6293a1ba4
Signed by: prescientmoon
SSH key fingerprint: SHA256:UUF9JT2s8Xfyv76b8ZuVL7XrmimH4o49p4b+iexbVH4
46 changed files with 475 additions and 991 deletions

View file

@ -18,7 +18,7 @@ let
opacity = transparency 0.7; opacity = transparency 0.7;
polarity = "dark"; polarity = "dark";
}; };
satellite.rounding.radius = 8.0; satellite.rounding.radius = 8;
}; };
# }}} # }}}
# {{{ Catppuccin latte # {{{ Catppuccin latte
@ -29,7 +29,7 @@ let
opacity = transparency 0.7; opacity = transparency 0.7;
polarity = "light"; polarity = "light";
}; };
satellite.rounding.radius = 8.0; satellite.rounding.radius = 8;
}; };
# }}} # }}}
# {{{ Catppuccin macchiato # {{{ Catppuccin macchiato
@ -40,7 +40,7 @@ let
opacity = transparency 0.7; opacity = transparency 0.7;
polarity = "dark"; polarity = "dark";
}; };
satellite.rounding.radius = 8.0; satellite.rounding.radius = 8;
}; };
# }}} # }}}
# {{{ Rosepine dawn # {{{ Rosepine dawn
@ -61,12 +61,12 @@ let
opacity = transparency 0.7; opacity = transparency 0.7;
polarity = "light"; polarity = "light";
}; };
satellite.rounding.radius = 8.0; satellite.rounding.radius = 8;
# For this one, I went with a big size, which means the blur just adds a slight gradient to the backgrounds. # For this one, I went with a big size, which means the blur just adds a slight gradient to the backgrounds.
satellite.blur = { satellite.blur = {
brightness = 1.05; brightness = 1.05;
size = 25.0; size = 25;
}; };
}; };
# }}} # }}}
@ -78,7 +78,7 @@ let
opacity = transparency 0.7; opacity = transparency 0.7;
polarity = "dark"; polarity = "dark";
}; };
satellite.rounding.radius = 8.0; satellite.rounding.radius = 8;
}; };
# }}} # }}}
}; };

View file

@ -1,4 +1,4 @@
{ pkgs, self, system, ... }: rec { { pkgs, self, ... }: rec {
octodns-zones = octodns-zones =
let let
nixosConfigModules = pkgs.lib.mapAttrsToList nixosConfigModules = pkgs.lib.mapAttrsToList
@ -19,7 +19,7 @@
octodns-sync = octodns-sync =
pkgs.symlinkJoin { pkgs.symlinkJoin {
name = "octodns-sync"; name = "octodns-sync";
paths = [ self.packages.${system}.octodns ]; paths = [ self.packages.${pkgs.system}.octodns ];
buildInputs = [ pkgs.makeWrapper pkgs.yq ]; buildInputs = [ pkgs.makeWrapper pkgs.yq ];
postBuild = '' postBuild = ''
cat ${./octodns.yaml} | yq '.providers.zones.directory="${octodns-zones}"' > $out/config.yaml cat ${./octodns.yaml} | yq '.providers.zones.directory="${octodns-zones}"' > $out/config.yaml

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@
# {{{ Inputs # {{{ Inputs
inputs = { inputs = {
# {{{ Nixpkgs instances # {{{ Nixpkgs instances
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# }}} # }}}
# {{{ Additional package repositories # {{{ Additional package repositories
@ -23,7 +23,7 @@
disko.inputs.nixpkgs.follows = "nixpkgs"; disko.inputs.nixpkgs.follows = "nixpkgs";
# }}} # }}}
home-manager.url = "github:nix-community/home-manager/release-23.11"; home-manager.url = "github:nix-community/home-manager/release-24.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
nix-index-database.url = "github:Mic92/nix-index-database"; nix-index-database.url = "github:Mic92/nix-index-database";
@ -33,9 +33,6 @@
sops-nix.inputs.nixpkgs.follows = "nixpkgs"; sops-nix.inputs.nixpkgs.follows = "nixpkgs";
korora.url = "github:adisbladis/korora"; korora.url = "github:adisbladis/korora";
nixos-dns.url = "github:Janik-Haag/nixos-dns";
nixos-dns.inputs.nixpkgs.follows = "nixpkgs";
# }}} # }}}
# {{{ Standalone software # {{{ Standalone software
# {{{ Nightly versions of things # {{{ Nightly versions of things
@ -45,15 +42,11 @@
# {{{ Self management # {{{ Self management
# Smos # Smos
smos.url = "github:NorfairKing/smos"; smos.url = "github:NorfairKing/smos";
smos.inputs.nixpkgs.url = "github:NixOS/nixpkgs/b8dd8be3c790215716e7c12b247f45ca525867e2"; # smos.inputs.nixpkgs.url = "github:NixOS/nixpkgs/b8dd8be3c790215716e7c12b247f45ca525867e2";
# REASON: smos fails to build this way
# smos.inputs.nixpkgs.follows = "nixpkgs";
# smos.inputs.home-manager.follows = "home-manager";
# Intray # Intray
intray.url = "github:NorfairKing/intray"; intray.url = "github:NorfairKing/intray";
intray.inputs.nixpkgs.url = "github:NixOS/nixpkgs/cf28ee258fd5f9a52de6b9865cdb93a1f96d09b7"; # intray.inputs.nixpkgs.url = "github:NixOS/nixpkgs/fc07dc3bdf2956ddd64f24612ea7fc894933eb2e";
# intray.inputs.home-manager.follows = "home-manager";
# }}} # }}}
anyrun.url = "github:Kirottu/anyrun"; anyrun.url = "github:Kirottu/anyrun";
@ -84,12 +77,7 @@
let let
# {{{ Common helpers # {{{ Common helpers
inherit (self) outputs; inherit (self) outputs;
forAllSystems = nixpkgs.lib.genAttrs [ forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ];
# "aarch64-linux" TODO: purescript doesn't work on this one
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
];
specialArgs = system: { specialArgs = system: {
inherit inputs outputs; inherit inputs outputs;

View file

@ -12,7 +12,6 @@ set fish_cursor_insert line # Set the insert mode cursor to a line
set fish_cursor_replace_one underscore # Set the replace mode cursor to an underscore set fish_cursor_replace_one underscore # Set the replace mode cursor to an underscore
# Force fish to skip some checks (I think?) # Force fish to skip some checks (I think?)
# TODO: research why this is here
set fish_vi_force_cursor set fish_vi_force_cursor
# }}} # }}}
# {{{ Disable greeting # {{{ Disable greeting

View file

@ -7,7 +7,6 @@ let
# C-z to return to background process # C-z to return to background process
"\\cz" = "fg && ${repaint}"; "\\cz" = "fg && ${repaint}";
# C-y to yank current command # C-y to yank current command
# TODO: make this work in xorg as well
"\\cy" = "wl-copy \$(commandline)"; "\\cy" = "wl-copy \$(commandline)";
# C-e to launch $EDITOR # C-e to launch $EDITOR
"\\ce" = "$EDITOR"; "\\ce" = "$EDITOR";

View file

@ -1,20 +1,11 @@
{ pkgs, config, ... }: { pkgs, config, ... }:
let
pinentry =
if config.gtk.enable then {
packages = [ pkgs.pinentry-gnome pkgs.gcr ];
name = "gnome3";
} else {
packages = [ pkgs.pinentry-curses ];
name = "curses";
};
in
{ {
home.packages = pinentry.packages;
services.gpg-agent = { services.gpg-agent = {
enable = true; enable = true;
pinentryFlavor = pinentry.name; pinentryPackage =
if config.gtk.enable
then pkgs.pinentry-gnome3
else pkgs.pinentry-curses;
}; };
programs.gpg.enable = true; programs.gpg.enable = true;

View file

@ -1,3 +1,7 @@
{ {
imports = [ ./smos ./intray.nix ./mail.nix ]; imports = [
./smos
# ./intray.nix
./mail.nix
];
} }

View file

@ -1,8 +1,12 @@
{ config, ... }: { { config, inputs, pkgs, ... }: {
sops.secrets.intray_password.sopsFile = ./secrets.yaml; sops.secrets.intray_password.sopsFile = ./secrets.yaml;
programs.intray = { programs.intray = {
enable = true; enable = true;
# We don't want to use the statically-linked binary, as it requires pulling-in ghc-musl.
intray-cli = inputs.intray.packages.${pkgs.system}.default.intray-cli;
data-dir = "${config.satellite.persistence.at.state.home}/intray"; data-dir = "${config.satellite.persistence.at.state.home}/intray";
cache-dir = "${config.satellite.persistence.at.cache.home}/intray"; cache-dir = "${config.satellite.persistence.at.cache.home}/intray";
config.sync = "AlwaysSync"; config.sync = "AlwaysSync";

View file

@ -1,4 +1,4 @@
{ config, pkgs, ... }: { config, pkgs, inputs, ... }:
let workflowDir = "${config.home.homeDirectory}/productivity/smos"; let workflowDir = "${config.home.homeDirectory}/productivity/smos";
in in
{ {
@ -8,6 +8,9 @@ in
programs.smos = { programs.smos = {
inherit workflowDir; inherit workflowDir;
# We don't want to use the statically-linked binary, as it requires pulling-in ghc-musl.
smosReleasePackages = inputs.smos.packages.${pkgs.system}.default;
enable = true; enable = true;
notify.enable = true; notify.enable = true;

View file

@ -0,0 +1,4 @@
{
programs.zellij.enable = true;
stylix.targets.zellij.enable = true;
}

View file

@ -9,6 +9,7 @@
# Use a base16 theme for gtk apps! # Use a base16 theme for gtk apps!
stylix.targets.gtk.enable = true; stylix.targets.gtk.enable = true;
gtk.enable = true;
gtk.iconTheme = { gtk.iconTheme = {
package = pkgs.papirus-icon-theme; package = pkgs.papirus-icon-theme;

View file

@ -288,7 +288,6 @@ in
# {{{ Standalone "apps" which actually run inside a browser. # {{{ Standalone "apps" which actually run inside a browser.
apps.extensions = extensions; apps.extensions = extensions;
apps.app = { apps.app = {
# TODO: auto increment ids
# {{{ Desmos # {{{ Desmos
desmos = { desmos = {
url = "https://www.desmos.com/calculator"; url = "https://www.desmos.com/calculator";
@ -305,23 +304,14 @@ in
id = 2; id = 2;
}; };
# }}} # }}}
# {{{ Syncthing
syncthing = {
url = "http://localhost:8384/";
icon = ../../../../common/icons/syncthing.png;
displayName = "Syncthing";
id = 3;
};
# }}}
}; };
# }}} # }}}
}; };
# TODO: uncomment when using newer version stylix.targets.firefox = {
# stylix.targets.firefox = { enable = true;
# enable = true; profileNames = [ config.home.username "desmos" "monkey-type" ];
# profileNames = [ config.home.username "desmos" "monkey-type" "syncthing" ]; };
# };
# {{{ Make firefox the default # {{{ Make firefox the default
# Use firefox as the default browser to open stuff. # Use firefox as the default browser to open stuff.

View file

@ -0,0 +1,4 @@
{
programs.foot.enable=true;
stylix.targets.foot.enable=true;
}

View file

@ -1,5 +1,5 @@
{ inputs, upkgs, config, ... }: { { inputs, pkgs, config, ... }: {
home.packages = [ upkgs.wezterm ]; home.packages = [pkgs.wezterm ];
xdg.configFile."wezterm/nix".source = xdg.configFile."wezterm/nix".source =
config.satellite.lib.lua.writeFile config.satellite.lib.lua.writeFile

View file

@ -178,5 +178,7 @@ config.keys = {
} }
-- }}} -- }}}
config.enable_wayland = false
-- and finally, return the configuration to wezterm -- and finally, return the configuration to wezterm
return config return config

View file

@ -67,7 +67,6 @@
set statusbar-bg '${base00}' set statusbar-bg '${base00}'
# }}} # }}}
# {{{ Highlighting parts of the document (e.g. show search results) # {{{ Highlighting parts of the document (e.g. show search results)
# TODO: make sure these look fine on other schemes
set highlight-color '${base03}' set highlight-color '${base03}'
set highlight-active-color '${base06}' set highlight-active-color '${base06}'
# }}} # }}}

View file

@ -1,58 +1,58 @@
{ {
"clipboard-image": { "branch": "main", "commit": "485de5493d196154db30f85665f8ac480ce116a2" }, "clipboard-image": { "branch": "main", "commit": "4ab6f7f1fa4ea97866c0e0f6160f6a36ef174438" },
"cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" }, "cmp": { "branch": "main", "commit": "7e348da6e5085ac447144a2ef4b637220ba27209" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" }, "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
"cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"conform": { "branch": "master", "commit": "192a6d2ddace343f1840a8f72efe2315bd392243" }, "conform": { "branch": "master", "commit": "cd75be867f2331b22905f47d28c0c270a69466aa" },
"crates": { "branch": "main", "commit": "ec2b04a380c9f3a8e6ca38c230e4990d71978143" }, "crates": { "branch": "main", "commit": "c3fd47391de6999f4c939af89494d08443f71916" },
"discord-rich-presence": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "discord-rich-presence": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" },
"dressing": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" }, "dressing": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" },
"fidget": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" }, "fidget": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" },
"flash": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" }, "flash": { "branch": "main", "commit": "d0799ae43a581d9f190e182e2a1f389d2887c42a" },
"ftft": { "branch": "master", "commit": "f3e43c9584e14b27f04c27a95a9d9f0e58dfec02" }, "ftft": { "branch": "master", "commit": "f3e43c9584e14b27f04c27a95a9d9f0e58dfec02" },
"github-actions": { "branch": "master", "commit": "f2f16243447cea174daa6b4a9ffd3ff9213814ef" }, "github-actions": { "branch": "master", "commit": "728374ef59b11a5f5991ea2560d149a4ae33fd22" },
"gitlinker": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, "gitlinker": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" },
"gitsigns": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" }, "gitsigns": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" },
"gruvbox": { "branch": "main", "commit": "6e4027ae957cddf7b193adfaec4a8f9e03b4555f" }, "gruvbox": { "branch": "main", "commit": "7a1b23e4edf73a39642e77508ee6b9cbb8c60f9e" },
"harpoon": { "branch": "master", "commit": "ccae1b9bec717ae284906b0bf83d720e59d12b91" }, "harpoon": { "branch": "master", "commit": "ccae1b9bec717ae284906b0bf83d720e59d12b91" },
"haskell-tools": { "branch": "master", "commit": "92e097c6832405fb64e4c44a7ce8bebe7836cae6" }, "haskell-tools": { "branch": "master", "commit": "92e097c6832405fb64e4c44a7ce8bebe7836cae6" },
"hyprland": { "branch": "main", "commit": "71760fe0cad972070657b0528f48456f7e0027b2" }, "hyprland": { "branch": "main", "commit": "71760fe0cad972070657b0528f48456f7e0027b2" },
"idris": { "branch": "main", "commit": "8bff02984a33264437e70fd9fff4359679d910da" }, "idris": { "branch": "main", "commit": "8bff02984a33264437e70fd9fff4359679d910da" },
"inc-rename": { "branch": "main", "commit": "6f9b5f9cb237e12935144cdc535322b8c93c1b25" }, "inc-rename": { "branch": "main", "commit": "8ba77017ca468f3029bf88ef409c2d20476ea66b" },
"indent-blankline": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" }, "indent-blankline": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" },
"lastplace": { "branch": "main", "commit": "0bb6103c506315044872e0f84b1f736c4172bb20" }, "lastplace": { "branch": "main", "commit": "0bb6103c506315044872e0f84b1f736c4172bb20" },
"lean": { "branch": "main", "commit": "1a2a2dfbc7e6775e9ec8b84e5eadaf31fde1894e" }, "lean": { "branch": "main", "commit": "182703184edb866d7bfe878be358295e189c8223" },
"live-command": { "branch": "main", "commit": "d460067d47948725a6f25b20f31ea8bbfdfe4622" }, "live-command": { "branch": "main", "commit": "d460067d47948725a6f25b20f31ea8bbfdfe4622" },
"lspconfig": { "branch": "master", "commit": "16295b79410f131c4fa7870c663b4ace6a761fb2" }, "lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" },
"lspkind.nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" }, "lspkind.nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" },
"luasnip": { "branch": "master", "commit": "8ae1dedd988eb56441b7858bd1e8554dfadaa46d" }, "luasnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"mini.ai": { "branch": "main", "commit": "98e45e6832351354e41e82b32a80ce7537c20746" }, "mini.ai": { "branch": "main", "commit": "45587078f323eaf41b9f701bbc04f8d1ab008979" },
"mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" }, "mini.comment": { "branch": "main", "commit": "080f00bb91fea4bab799820bd2ce835a88d0703a" },
"mini.files": { "branch": "main", "commit": "eab771c69b787a3f042dc6505d15613c282aa786" }, "mini.files": { "branch": "main", "commit": "acfc4e46f6722a0690ce640632c5b5515ddade70" },
"mini.operators": { "branch": "main", "commit": "0765e4818086e96b8fb55d280e47af781a5bc56a" }, "mini.operators": { "branch": "main", "commit": "7d30c0bc5baaa1f0d3a63dd18b35c8581bc164f4" },
"mini.pairs": { "branch": "main", "commit": "04f58f2545ed80ac3b52dd4826e93f33e15b2af6" }, "mini.pairs": { "branch": "main", "commit": "927d19cbdd0e752ab1c7eed87072e71d2cd6ff51" },
"mini.statusline": { "branch": "main", "commit": "dfd3d2ba295473930f78f143852b9b53eb54ae2a" }, "mini.statusline": { "branch": "main", "commit": "ec7e2c509c7262fef85a28a772f60ebe146297db" },
"mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" }, "mini.surround": { "branch": "main", "commit": "57caca9525cec0ea771a67326b0ee637d056078a" },
"navigator": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" }, "navigator": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" },
"neoconf": { "branch": "main", "commit": "4ef6c6c5882e7e16209173fb8c47414202843384" }, "neoconf": { "branch": "main", "commit": "23f24edab5f78465a0bc3320678e038664b9aa6e" },
"neodev": { "branch": "main", "commit": "84e0290f5600e8b89c0dfcafc864f45496a53400" }, "neodev": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
"nui": { "branch": "main", "commit": "c3c7fd618dcb5a89e443a2e1033e7d11fdb0596b" }, "nui": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
"null-ls": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, "null-ls": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
"plenary": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" }, "plenary": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
"purescript": { "branch": "main", "commit": "82348352e6568fcc0385bd7c99a8ead3a479feea" }, "purescript": { "branch": "main", "commit": "82348352e6568fcc0385bd7c99a8ead3a479feea" },
"rust-tools": { "branch": "master", "commit": "676187908a1ce35ffcd727c654ed68d851299d3e" }, "rust-tools": { "branch": "master", "commit": "676187908a1ce35ffcd727c654ed68d851299d3e" },
"rzip": { "branch": "master", "commit": "f65400fed27b27c7cff7ef8d428c4e5ff749bf28" }, "rzip": { "branch": "master", "commit": "f65400fed27b27c7cff7ef8d428c4e5ff749bf28" },
"scrap": { "branch": "main", "commit": "cc8453ed613932c744c3d1ec42f379b78bd8b92c" }, "scrap": { "branch": "main", "commit": "cc8453ed613932c744c3d1ec42f379b78bd8b92c" },
"ssr": { "branch": "main", "commit": "bb323ba621ac647b4ac5638b47666e3ef3c279e1" }, "ssr": { "branch": "main", "commit": "bb323ba621ac647b4ac5638b47666e3ef3c279e1" },
"telescope": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" }, "telescope": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"treesitter": { "branch": "master", "commit": "19bf991be2403c10fa379fa0fb11b7de2560ac31" }, "treesitter": { "branch": "master", "commit": "7f4ac678770175cdf0d42c015f4a5b6e18b6cb33" },
"typst": { "branch": "main", "commit": "e28d440c7ba4df2516d7d7f908c4fb664a8cf86c" }, "typst": { "branch": "main", "commit": "4d18ced62599ffe5b3c0e5e49566d5456121bc02" },
"undotree": { "branch": "master", "commit": "9dbbf3b7d19dda0d22ceca461818e4739ad8154d" }, "undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" },
"wakatime": { "branch": "master", "commit": "285c2e4e48fb0c63ced233c00fb10a2edb3b6c94" }, "wakatime": { "branch": "master", "commit": "3cb40867cb5a3120f9bef76eff88edc7f1dc1a23" },
"web-devicons": { "branch": "master", "commit": "14ac5887110b06b89a96881d534230dac3ed134d" }, "web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" },
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" } "which-key.nvim": { "branch": "main", "commit": "c77cda8cd2f54965e4316699f1d124a2b3bf9d49" }
} }

View file

@ -130,11 +130,17 @@ function M.configure(opts, context)
opts = opts(context) opts = opts(context)
end end
if type(opts) ~= "table" then if opts == nil then
-- TODO: throw
return return
end end
if type(opts) ~= "table" then
return error(
"Cannot handle non-table options for tempest runtime, "
.. vim.inspect(opts)
)
end
if type(opts.mkContext) == "function" then if type(opts.mkContext) == "function" then
context = opts.mkContext(context) context = opts.mkContext(context)
end end

View file

@ -177,7 +177,7 @@ let
(thunk /* lua */ "vim.opt.spell = not vim.o.spell") (thunk /* lua */ "vim.opt.spell = not vim.o.spell")
"toggle [s]pell checker") "toggle [s]pell checker")
(nmap "<leader>yp" (nmap "<leader>yp"
("<cmd>!curl --data-binary @% https://paste.rs<cr>") "<cmd>!curl --data-binary @% https://paste.rs<cr>"
"[y]ank [p]aste.rs link") "[y]ank [p]aste.rs link")
# }}} # }}}
]; ];
@ -538,7 +538,7 @@ let
event = "VeryLazy"; event = "VeryLazy";
config = true; config = true;
# {{{{ Keybinds # {{{ Keybinds
keys = keys =
let let
# {{{ List of fold-related keybinds # {{{ List of fold-related keybinds
@ -702,21 +702,6 @@ let
"[U]ndo tree"; "[U]ndo tree";
}; };
# }}} # }}}
# {{{ ssr (structured search & replace)
ssr = {
package = "cshuaimin/ssr.nvim";
cond = blacklist "vscode";
keys = {
mode = "nx";
mapping = "<leader>rt";
action = thunk /* lua */ ''require("ssr").open()'';
desc = "[r]eplace [t]emplate";
};
opts.keymaps.replace_all = "<s-cr>";
};
# }}}
# {{{ mini.ai # {{{ mini.ai
mini-ai = { mini-ai = {
package = "echasnovski/mini.ai"; package = "echasnovski/mini.ai";
@ -925,7 +910,6 @@ let
pkgs.lua pkgs.lua
] ++ ] ++
optionals nix [ optionals nix [
pkgs.rnix-lsp
pkgs.nil pkgs.nil
pkgs.nixd pkgs.nixd
] ++ ] ++
@ -1036,100 +1020,6 @@ let
''; '';
}; };
# }}} # }}}
# {{{ gitsigns
gitsigns = {
package = "lewis6991/gitsigns.nvim";
cond = [ (blacklist [ "vscode" "firenvim" ]) notmp ];
event = "BufReadPost";
opts.on_attach = tempest {
mkContext = lua /* lua */
"function(bufnr) return { bufnr = bufnr } end";
keys =
let
prefix = m: "<leader>h${m}";
gs = "package.loaded.gitsigns";
# {{{ nmap helper
nmap = mapping: action: desc: {
inherit desc;
mapping = prefix "mapping";
action = "${gs}.action";
};
# }}}
# {{{ exprmap helper
exprmap = mapping: action: desc: {
inherit mapping desc;
action = thunk /* lua */ ''
if vim.wo.diff then
return "${mapping}"
end
vim.schedule(function()
${gs}.${action}()
end)
return "<ignore>"
'';
expr = true;
};
# }}}
in
[
# {{{ navigation
(exprmap "]c" "next_hunk" "Navigate to next hunk")
(exprmap "[c" "prev_hunk" "Navigate to previous hunk")
# }}}
# {{{ actions
(nmap "s" "stage_hunk" "[s]tage hunk")
(nmap "r" "reset_hunk" "[s]tage hunk")
(nmap "S" "stage_buffer" "[s]tage hunk")
(nmap "u" "undo_stage_hunk" "[s]tage hunk")
(nmap "R" "reset_buffer" "[s]tage hunk")
(nmap "p" "preview_hunk" "[s]tage hunk")
(nmap "d" "diffthis" "[s]tage hunk")
{
mapping = prefix "D";
action = thunk ''
${gs}.diffthis("~")
'';
desc = "[d]iff file (?)";
}
{
mapping = prefix "b";
action = thunk ''
${gs}.blame_line({ full = true })
'';
desc = "[b]lame line";
}
# }}}
# {{{ Toggles
(nmap "tb" "toggle_current_line_blame" "[t]oggle line [b]laming")
(nmap "td" "toggle_deleted" "[t]oggle [d]eleted")
# }}}
# {{{ visual mappings
{
mode = "v";
mapping = prefix "s";
action = thunk /* lua */ ''
${gs}.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
'';
desc = "stage visual hunk";
}
{
mode = "v";
mapping = prefix "r";
action = thunk /* lua */ ''
${gs}.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
'';
desc = "reset visual hunk";
}
# }}}
];
};
};
# }}}
# {{{ cmp # {{{ cmp
cmp = { cmp = {
package = "hrsh7th/nvim-cmp"; package = "hrsh7th/nvim-cmp";
@ -1151,26 +1041,6 @@ let
config = importFrom ./plugins/cmp.lua "config"; config = importFrom ./plugins/cmp.lua "config";
}; };
# }}} # }}}
# {{{ inc-rename
inc-rename = {
package = "smjonas/inc-rename.nvim";
dependencies.lua = [ "dressing" ];
cond = blacklist "vscode";
event = "VeryLazy";
opts.input_buffer_type = "dressing";
config.autocmds = {
event = "LspAttach";
group = "CreateIncRenameKeybinds";
action.keys = {
mapping = "<leader>rn";
action = ":IncRename <c-r><c-w>";
desc = "Incremenetal [r]e[n]ame";
};
};
};
# }}}
# }}} # }}}
# {{{ language support # {{{ language support
# {{{ haskell support # {{{ haskell support

View file

@ -86,8 +86,7 @@ function M.config()
}, },
-- }}} -- }}}
-- {{{ Nix -- {{{ Nix
rnix = {}, nil_ls = {},
-- nil_ls = {},
nixd = {}, nixd = {},
-- }}} -- }}}
cssls = {}, cssls = {},

View file

@ -103,7 +103,6 @@
]; ];
satellite.persistence.at.cache.apps.qbittorrent.directories = [ satellite.persistence.at.cache.apps.qbittorrent.directories = [
# TODO: investigate which subdirectories/files I actually want to keep
"${config.xdg.dataHome}/qBittorrent" # Torrent files, logs, etc "${config.xdg.dataHome}/qBittorrent" # Torrent files, logs, etc
]; ];
# }}} # }}}
@ -115,7 +114,7 @@
# {{{ Steam # {{{ Steam
satellite.persistence.at.state.apps.steam = { satellite.persistence.at.state.apps.steam = {
directories = [ directories = [
".factorio" # TODO: perhaps this should have it's own file? ".factorio"
# A couple of games don't play well with bindfs # A couple of games don't play well with bindfs
{ {
directory = "${config.xdg.dataHome}/Steam"; directory = "${config.xdg.dataHome}/Steam";
@ -148,5 +147,9 @@
# {{{ Sops # {{{ Sops
satellite.persistence.at.state.apps.sops.directories = [ "${config.xdg.configHome}/sops/age" ]; satellite.persistence.at.state.apps.sops.directories = [ "${config.xdg.configHome}/sops/age" ];
# }}} # }}}
# {{{ QMK
home.sessionVariables.QMK_HOME = "${config.xdg.dataHome}/qmk";
satellite.persistence.at.state.apps.qmk.directories = [ config.home.sessionVariables.QMK_HOME ];
# }}}
# }}} # }}}
} }

View file

@ -20,7 +20,6 @@
wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy"; wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy";
wl-paste = "${pkgs.wl-clipboard}/bin/wl-paste"; wl-paste = "${pkgs.wl-clipboard}/bin/wl-paste";
# TODO: put this in it's own file perhaps?
# Taken from [here](https://github.com/fufexan/dotfiles/blob/3b0075fa7a5d38de13c8c32140c4b020b6b32761/home/wayland/default.nix#L14) # Taken from [here](https://github.com/fufexan/dotfiles/blob/3b0075fa7a5d38de13c8c32140c4b020b6b32761/home/wayland/default.nix#L14)
wl-ocr = pkgs.writeShellScriptBin "wl-ocr" '' wl-ocr = pkgs.writeShellScriptBin "wl-ocr" ''
${_ pkgs.grim} -g "$(${_ pkgs.slurp})" -t ppm - \ ${_ pkgs.grim} -g "$(${_ pkgs.slurp})" -t ppm - \

View file

@ -4,22 +4,29 @@
monitor=,preferred,auto,1 monitor=,preferred,auto,1
general { general {
cursor_inactive_timeout = 30 # Hide cursor after being inactive for 30s # cursor_inactive_timeout = 30 # Hide cursor after being inactive for 30s
resize_on_border = true # Click on borders with the mouse to resize resize_on_border = true # Click on borders with the mouse to resize
} }
decoration {
blur {
popups = true
}
}
# Blur extra surfaces # Blur extra surfaces
layerrule = blur,gtk-layer-shell layerrule = blur,gtk-layer-shell
layerrule = blur,osd
layerrule = blur,logout_dialog
layerrule = blur,anyrun layerrule = blur,anyrun
layerrule = blur,waybar layerrule = blur,waybar
layerrule = ignorezero,anyrun layerrule = ignorezero,anyrun
layerrule = ignorezero,waybar layerrule = ignorezero,waybar
input { input {
kb_layout = us kb_layout = us
# TODO: standardize the touchpad settings.
# Right now I also have similar settings for xorg.
touchpad { touchpad {
natural_scroll = true # Invert scrolling direction natural_scroll = true # Invert scrolling direction
} }
@ -34,7 +41,7 @@ misc {
# Configure the default hyprland branding # Configure the default hyprland branding
disable_hyprland_logo = true disable_hyprland_logo = true
disable_splash_rendering = true disable_splash_rendering = true
force_hypr_chan = true # force_hypr_chan = true
} }
animations { animations {
@ -157,11 +164,11 @@ bind=,escape,submap,reset
submap=reset submap=reset
# }}} # }}}
# {{{ Volume & brightness # {{{ Volume & brightness
binde=, XF86AudioRaiseVolume, exec, swayosd --output-volume raise binde=, XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise
binde=, XF86AudioLowerVolume, exec, swayosd --output-volume lower binde=, XF86AudioLowerVolume, exec, swayosd-client --output-volume lower
binde=, XF86AudioMute, exec, swayosd --output-volume mute-toggle binde=, XF86AudioMute, exec, swayosd-client --output-volume mute-toggle
binde=, XF86AudioMicMute, exec, swayosd --input-volume mute-toggle binde=, XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle
binde=, XF86MonBrightnessUp, exec, swayosd --brightness raise binde=, XF86MonBrightnessUp, exec, swayosd-client --brightness raise
binde=, XF86MonBrightnessDown, exec, swayosd --brightness lower binde=, XF86MonBrightnessDown, exec, swayosd-client --brightness lower
# }}} # }}}
# }}} # }}}

View file

@ -1,14 +1,16 @@
{ pkgs, upkgs, lib, config, ... }: { { pkgs, ... }: {
imports = [ imports = [
./global.nix ./global.nix
./features/desktop/zathura.nix ./features/desktop/zathura.nix
./features/desktop/spotify.nix ./features/desktop/spotify.nix
./features/desktop/obsidian.nix ./features/desktop/obsidian.nix
./features/desktop/foot.nix
./features/desktop/firefox ./features/desktop/firefox
./features/desktop/discord ./features/desktop/discord
./features/cli/productivity ./features/cli/productivity
./features/cli/pass.nix ./features/cli/pass.nix
./features/cli/zellij.nix
./features/cli/nix-index.nix ./features/cli/nix-index.nix
./features/cli/catgirl.nix ./features/cli/catgirl.nix
./features/cli/lazygit.nix ./features/cli/lazygit.nix
@ -18,14 +20,14 @@
# Arbitrary extra packages # Arbitrary extra packages
home.packages = with pkgs; [ home.packages = with pkgs; [
# Desktop apps alacritty
# {{{ Communication # {{{ Communication
# signal-desktop # Signal client # signal-desktop # Signal client
element-desktop # Matrix client element-desktop # Matrix client
# zoom-us # Zoom client 🤮 # zoom-us # Zoom client 🤮
# }}} # }}}
# {{{ Editors for different formats # {{{ Editors for different formats
# gimp # Image editing gimp # Image editing
# lmms # Music software # lmms # Music software
# kicad # PCB editing # kicad # PCB editing
# libreoffice # Free office suite # libreoffice # Free office suite
@ -44,8 +46,7 @@
# google-chrome # Not my primary browser, but sometimes needed in webdev # google-chrome # Not my primary browser, but sometimes needed in webdev
# plover.dev # steno engine # plover.dev # steno engine
# REASON: not available in nixpkgs-stable just yet overskride # Bluetooth client
upkgs.overskride # Bluetooth client
# }}} # }}}
# {{{ Media playing/recording # {{{ Media playing/recording
mpv # Video player mpv # Video player

View file

@ -7,7 +7,6 @@ let
inputs.disko.nixosModules.default inputs.disko.nixosModules.default
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
inputs.nixos-dns.nixosModules.dns
# }}} # }}}
# {{{ global configuration # {{{ global configuration
./cli/fish.nix ./cli/fish.nix
@ -16,6 +15,7 @@ let
./services/tailscale.nix ./services/tailscale.nix
./nix.nix ./nix.nix
./locale.nix ./locale.nix
./unicode.nix
./persistence.nix ./persistence.nix
./ports.nix ./ports.nix
./wireless ./wireless

View file

@ -1,7 +1,7 @@
{ config, lib, pkgs, inputs, ... }: { { config, lib, pkgs, inputs, ... }: {
nix = { nix = {
# Flake support and whatnot # Flake support and whatnot
package = pkgs.nixUnstable; package = pkgs.lix;
# Weekly clean up the store, I think # Weekly clean up the store, I think
gc = { gc = {
@ -32,7 +32,7 @@
experimental-features = [ experimental-features = [
"nix-command" "nix-command"
"flakes" "flakes"
"repl-flake" # "repl-flake"
"auto-allocate-uids" "auto-allocate-uids"
# "configurable-impure-env" # "configurable-impure-env"
]; ];

View file

@ -1,5 +1,4 @@
# This setups a SSH server. # This setups a SSH server.
# TODO: persistence
{ outputs, config, lib, ... }: { outputs, config, lib, ... }:
let let
# Record containing all the hosts # Record containing all the hosts
@ -35,10 +34,6 @@ in
]; ];
}; };
# TODO: is this safe? Can we ssh back and gain root access this way?
# Passwordless sudo when SSH'ing with keys
# security.pam.enableSSHAgentAuth = true;
# SSH on slow connections # SSH on slow connections
programs.mosh.enable = true; programs.mosh.enable = true;

View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-gtk
fcitx5-configtool
];
};
}

View file

@ -1,4 +1,3 @@
# TODO(imperanence): handle persistence
{ lib, ... }: { { lib, ... }: {
programs.steam = { programs.steam = {
enable = true; enable = true;

View file

@ -20,103 +20,56 @@ let
em (unicode ) em (unicode )
) )
;; }}} ;; }}}
;; {{{ Chord aliases (defchordsv2-experimental
(defalias
chq (chord mainchords q)
chw (chord mainchords w)
che (chord mainchords e)
chr (chord mainchords r)
cha (chord mainchords a)
chs (chord mainchords s)
chd (chord mainchords d)
chf (chord mainchords f)
chz (chord mainchords z)
chx (chord mainchords x)
chc (chord mainchords c)
chg (chord mainchords g)
chh (chord mainchords h)
chi (chord mainchords i)
chp (chord mainchords p)
chj (chord mainchords j)
chk (chord mainchords k)
chl (chord mainchords l)
ch: (chord mainchords :)
chn (chord mainchords n)
)
;; }}}
(defchords mainchords ${toString chordDelay}
;; {{{ Single keys
(q) q
(w) w
(e) e
(r) r
(a) a
(s) s
(d) d
(f) f
(z) z
(x) x
(c) c
(g) g
(h) h
(i) i
(p) p
(j) j
(k) k
(l) l
(:) ;
(n) n
;; }}}
;; {{{ Left modifiers ;; {{{ Left modifiers
(a s ) lalt (a s d f) (multi lctl lalt lsft) ${toString chordDelay} all-released ()
( s d ) lsft (a s d ) (multi lalt lsft) ${toString chordDelay} all-released ()
( s f) lctl ( s d f) (multi lctl lsft) ${toString chordDelay} all-released ()
( s d f) C-lsft (a s ) lalt ${toString chordDelay} all-released ()
(a s d ) S-lalt ( s d ) lsft ${toString chordDelay} all-released ()
(a s d f) C-S-lalt ( s f) lctl ${toString chordDelay} all-released ()
;; }}} ;; }}}
;; {{{ Right modifiers ;; {{{ Right modifiers
( l :) ralt (j k l ;) (multi rctl ralt rsft) ${toString chordDelay} all-released ()
( k l ) rsft (j k l ) (multi rctl rsft) ${toString chordDelay} all-released ()
(j l ) rctl ( k l ;) (multi ralt rsft) ${toString chordDelay} all-released ()
(j k l ) C-rsft (j l ) rctl ${toString chordDelay} all-released ()
( k l :) S-ralt ( k l ) rsft ${toString chordDelay} all-released ()
(j k l :) C-S-ralt ( l ;) ralt ${toString chordDelay} all-released ()
;; }}} ;; }}}
;; {{{ Special keys ;; {{{ Special keys
(d f) tab (d f) tab ${toString chordDelay} all-released ()
(e f) ret (e f) ret ${toString chordDelay} all-released ()
(q w) esc (q w) esc ${toString chordDelay} all-released ()
(g h) bspc (g h) bspc ${toString chordDelay} all-released ()
(n l) rmet (n l) rmet ${toString chordDelay} all-released ()
(j k) f10 (j k) f10 ${toString chordDelay} all-released ()
(c p) f11 (c p) f11 ${toString chordDelay} all-released ()
(j i) f12 (j i) f12 ${toString chordDelay} all-released ()
;; }}} ;; }}}
;; {{{ Wm keybinds ;; {{{ Wm keybinds
(n l k) M-p (n l k) M-p ${toString chordDelay} all-released ()
(n l q) M-1 (n l q) M-1 ${toString chordDelay} all-released ()
(n l w) M-2 (n l w) M-2 ${toString chordDelay} all-released ()
(n l e) M-3 (n l e) M-3 ${toString chordDelay} all-released ()
(n l r) M-4 (n l r) M-4 ${toString chordDelay} all-released ()
(n l a) M-5 (n l t) M-5 ${toString chordDelay} all-released ()
(n l s) M-6 (n l a) M-6 ${toString chordDelay} all-released ()
(n l d) M-7 (n l s) M-7 ${toString chordDelay} all-released ()
(n l f) M-8 (n l d) M-8 ${toString chordDelay} all-released ()
(n l z) M-9 (n l f) M-9 ${toString chordDelay} all-released ()
(n l x) M-0 (n l g) M-0 ${toString chordDelay} all-released ()
;; }}} ;; }}}
) )
;; {{{ Qwerty ;; {{{ Qwerty
(deflayer qwerty (deflayer qwerty
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX @chq @chw @che @chr t y u @chi o @chp XX XX XX XX q w e r t y u i o p XX XX XX
XX @cha @chs @chd @chf @chg @chh @chj @chk @chl @ch: XX XX XX a s d f g h j k l ; XX XX
lsft @chz @chx @chc v b @chn m , . ' XX lsft z x c v b n m , . ' XX
XX lmet @red spc @blue XX lmet @red spc @blue
) )
;; }}} ;; }}}
@ -167,11 +120,17 @@ let
) )
;; }}} ;; }}}
''; '';
extraDefCfg = ''
concurrent-tap-hold true ;; Required by chords
'';
in in
{ {
services.kanata = { services.kanata = {
enable = true; enable = true;
keyboards.tethysLaptop = { keyboards.tethysLaptop = {
inherit extraDefCfg;
devices = [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ]; devices = [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ];
config = mkConfig { config = mkConfig {
@ -182,6 +141,8 @@ in
}; };
keyboards.keychronK6 = { keyboards.keychronK6 = {
inherit extraDefCfg;
devices = [ "/dev/input/by-id/usb-Keychron_Keychron_K6-event-kbd" ]; devices = [ "/dev/input/by-id/usb-Keychron_Keychron_K6-event-kbd" ];
config = mkConfig { config = mkConfig {

View file

@ -47,8 +47,6 @@
# virtualisation.spiceUSBRedirection.enable = true; # This was required for the vm usb passthrough tomfoolery # virtualisation.spiceUSBRedirection.enable = true; # This was required for the vm usb passthrough tomfoolery
# }}} # }}}
# {{{ Ad-hoc stylix targets # {{{ Ad-hoc stylix targets
# TODO: include this on all gui hosts
# TODO: is this useful outside of home-manager?
stylix.targets.gtk.enable = true; stylix.targets.gtk.enable = true;
# }}} # }}}
# {{{ Some ad-hoc site blocking # {{{ Some ad-hoc site blocking

View file

@ -2,7 +2,7 @@
{ {
imports = with inputs.nixos-hardware.nixosModules; [ imports = with inputs.nixos-hardware.nixosModules; [
common-cpu-intel common-cpu-intel
common-gpu-intel # common-gpu-intel # This leads to a "prop ... defined twice" error
common-pc-laptop common-pc-laptop
common-pc-ssd common-pc-ssd
./generated.nix ./generated.nix

View file

@ -20,23 +20,4 @@ This directory contains custom module definitions used throughout my config.
| [korora-neovim](./common/korora-neovim.nix) | - | Nix -> neovim config helpers typechecked using [korora](https://github.com/adisbladis/korora) | | [korora-neovim](./common/korora-neovim.nix) | - | Nix -> neovim config helpers typechecked using [korora](https://github.com/adisbladis/korora) |
| [theming](./common/theming.nix) | `satellite.theming` | [stylix](https://github.com/danth/stylix) theming helpers and configuration | | [theming](./common/theming.nix) | `satellite.theming` | [stylix](https://github.com/danth/stylix) theming helpers and configuration |
| [lua-colorscheme](./common/lua-colorscheme.nix) | `satellite.colorscheme.lua` | Base16 theme to lua module generation | | [lua-colorscheme](./common/lua-colorscheme.nix) | `satellite.colorscheme.lua` | Base16 theme to lua module generation |
| [octodns](./common/octodns.nix) | `satellite.dns.octodns` | Octodns config generation |
## Nixos modules
| Name | Attribute | Description |
| -------------------------------------- | ----------------------- | ------------------------------------------- |
| [pounce](./nixos/pounce.nix) | `services.pounce` | Module for pounce & calico configuration |
| [nginx](./nixos/nginx.nix) | `satellite.nginx` | Helpers for nginx configuration |
| [ports](./nixos/ports.nix) | `satellite.ports` | Global port specification |
| [cloudflared](./nixos/cloudflared.nix) | `satellite.cloudflared` | Helpers for cloudflare tunnel configuration |
| [pilot](./nixos/pilot.nix) | `satellite.pilot` | Defined the concept of a "main user" |
## Home-manager modules
| Name | Attribute | Description |
| ------------------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------- |
| [discord](./home-manager/discord.nix) | `programs.discord` | Additional discord options |
| [firefox](./home-manager/firefox) | `programs.firefox.apps` | Hacky system for wrapping websites into desktop apps by hiding the firefox tabbar |
| [monitors](./home-manager/monitors.nix) | `satellite.monitors` | WM generic monitor configuration |
| [persistence](./home-manager/persistence.nix) | `satellite.persistence` | Syntactic wrapper around [impermanence](https://github.com/nix-community/impermanence) |
| [satellite-dev](./home-manager/satellite-dev.nix) | `satellite.dev` | Helpers for managing dotfiles which are actively under development |

20
modules/common/README.md Normal file
View file

@ -0,0 +1,20 @@
# Common modules
## Home-manage & Nixos modules
| Name | Attribute | Description |
| -------------------------------------- | --------------------------- | ----------------------------------- |
| [toggles](toggles.nix) | `satellite.toggles` | Generic interface for feature flags |
| [lua-lib](lua-lib.nix) | `satellite.lib.lua` | Helpers for working with lua code |
| [korora-lua](korora-lua.nix) | - | Nix -> lua encoder |
| [korora-neovim](korora-neovim.nix) | - | Nix -> neovim config helpers |
| [theming](theming.nix) | `satellite.theming` | Stylix theming helpers |
| [lua-colorscheme](lua-colorscheme.nix) | `satellite.colorscheme.lua` | Base16 theme -> lua |
## Other modules
These are special-purpose modules that are used for other purposes
| Name | Attribute | Description |
| ---------------------- | ----------------------- | ------------------------- |
| [octodns](octodns.nix) | `satellite.dns.octodns` | Octodns config generation |

View file

@ -157,11 +157,13 @@ let
${context} ${context}
) )
''; '';
tempestBufnr = given: context: lua '' tempestBufnr = given: lua ''
D.tempest.configure( function(_, bufnr)
return D.tempest.configure(
${encode given}, ${encode given},
{ bufnr = ${context}} { bufnr = bufnr}
) )
end
''; '';
keymap = mode: mapping: action: desc: keymap = mode: mapping: action: desc:
{ inherit mode mapping action desc; }; { inherit mode mapping action desc; };

View file

@ -7,7 +7,7 @@ in
rounding = { rounding = {
# Note: this is automatically set to true when the radius is strictly positive # Note: this is automatically set to true when the radius is strictly positive
enable = lib.mkEnableOption "rounded corners for desktop apps"; enable = lib.mkEnableOption "rounded corners for desktop apps";
radius = lib.mkOption { default = 0.0; type = lib.types.float; }; radius = lib.mkOption { default = 0; type = lib.types.int; };
}; };
# These pretty much directly map onto hypland options # These pretty much directly map onto hypland options
@ -18,7 +18,7 @@ in
passes = lib.mkOption { default = 4; type = lib.types.int; }; passes = lib.mkOption { default = 4; type = lib.types.int; };
brightness = lib.mkOption { default = 1.0; type = lib.types.float; }; brightness = lib.mkOption { default = 1.0; type = lib.types.float; };
contrast = lib.mkOption { default = 1.2; type = lib.types.float; }; contrast = lib.mkOption { default = 1.2; type = lib.types.float; };
size = lib.mkOption { default = 10.0; type = lib.types.float; }; size = lib.mkOption { default = 10; type = lib.types.int; };
}; };
get = lib.mkOption { get = lib.mkOption {
@ -49,7 +49,7 @@ in
}; };
config.satellite.theming = { config.satellite.theming = {
rounding.enable = cfg.rounding.radius > 0.0; rounding.enable = cfg.rounding.radius > 0;
blur.enable = cfg.blur.passes > 0; blur.enable = cfg.blur.passes > 0;
get = themeMap: get = themeMap:

View file

@ -0,0 +1,9 @@
# Home-manager modules
| Name | Attribute | Description |
| ---------------------------------- | ----------------------- | -------------------------------------------- |
| [discord](discord.nix) | `programs.discord` | Additional discord options |
| [firefox](firefox) | `programs.firefox.apps` | Hack for wrapping websites into desktop apps |
| [monitors](monitors.nix) | `satellite.monitors` | WM generic monitor configuration |
| [persistence](persistence.nix) | `satellite.persistence` | Syntactic wrapper around impermanence |
| [satellite-dev](satellite-dev.nix) | `satellite.dev` | Manage in-development dotfiles |

View file

@ -1,54 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.bemenu;
in
{
meta.maintainers = [ hm.maintainers.omernaveedxyz ];
options.programs.bemenu = {
enable = mkEnableOption "bemenu";
package = mkPackageOption pkgs "bemenu" { };
settings = mkOption {
type = with types; attrsOf (oneOf [ str number bool ]);
default = { };
example = literalExpression ''
{
line-height = 28;
prompt = "open";
ignorecase = true;
fb = "#1e1e2e";
ff = "#cdd6f4";
nb = "#1e1e2e";
nf = "#cdd6f4";
tb = "#1e1e2e";
hb = "#1e1e2e";
tf = "#f38ba8";
hf = "#f9e2af";
af = "#cdd6f4";
ab = "#1e1e2e";
width-factor = 0.3;
}
'';
description =
"Configuration options for bemenu. See {manpage}`bemenu(1)`.";
};
};
config = mkIf cfg.enable {
assertions =
[ (hm.assertions.assertPlatform "programs.bemenu" pkgs platforms.linux) ];
home.packages = [ cfg.package ];
home.sessionVariables = mkIf (cfg.settings != { }) {
BEMENU_OPTS = cli.toGNUCommandLineShell { } cfg.settings;
};
};
}

View file

@ -1,135 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.hyprpaper;
toHyprconf = { attrs, indentLevel ? 0, importantPrefixes ? [ "$" ], }:
let
inherit (lib)
all concatMapStringsSep concatStrings concatStringsSep filterAttrs foldl
generators hasPrefix isAttrs isList mapAttrsToList replicate;
initialIndent = concatStrings (replicate indentLevel " ");
toHyprconf' = indent: attrs:
let
sections =
filterAttrs (n: v: isAttrs v || (isList v && all isAttrs v)) attrs;
mkSection = n: attrs:
if lib.isList attrs then
(concatMapStringsSep "\n" (a: mkSection n a) attrs)
else ''
${indent}${n} {
${toHyprconf' " ${indent}" attrs}${indent}}
'';
mkFields = generators.toKeyValue {
listsAsDuplicateKeys = true;
inherit indent;
};
allFields =
filterAttrs (n: v: !(isAttrs v || (isList v && all isAttrs v)))
attrs;
isImportantField = n: _:
foldl (acc: prev: if hasPrefix prev n then true else acc) false
importantPrefixes;
importantFields = filterAttrs isImportantField allFields;
fields = builtins.removeAttrs allFields
(mapAttrsToList (n: _: n) importantFields);
in
mkFields importantFields
+ concatStringsSep "\n" (mapAttrsToList mkSection sections)
+ mkFields fields;
in
toHyprconf' initialIndent attrs;
in
{
meta.maintainers = [ maintainers.khaneliman maintainers.fufexan ];
options.services.hyprpaper = {
enable = mkEnableOption "Hyprpaper, Hyprland's wallpaper daemon";
package = mkPackageOption pkgs "hyprpaper" { };
settings = lib.mkOption {
type = with lib.types;
let
valueType = nullOr
(oneOf [
bool
int
float
str
path
(attrsOf valueType)
(listOf valueType)
]) // {
description = "Hyprpaper configuration value";
};
in
valueType;
default = { };
description = ''
hyprpaper configuration written in Nix. Entries with the same key
should be written as lists. Variables' and colors' names should be
quoted. See <https://wiki.hyprland.org/Hypr-Ecosystem/hyprpaper/> for more examples.
'';
example = lib.literalExpression ''
{
ipc = "on";
splash = false;
splash_offset = 2.0;
preload =
[ "/share/wallpapers/buttons.png" "/share/wallpapers/cat_pacman.png" ];
wallpaper = [
"DP-3,/share/wallpapers/buttons.png"
"DP-1,/share/wallpapers/cat_pacman.png"
];
}
'';
};
importantPrefixes = lib.mkOption {
type = with lib.types; listOf str;
default = [ "$" ];
example = [ "$" ];
description = ''
List of prefix of attributes to source at the top of the config.
'';
};
};
config = mkIf cfg.enable {
xdg.configFile."hypr/hyprpaper.conf" = mkIf (cfg.settings != { }) {
text = toHyprconf {
attrs = cfg.settings;
inherit (cfg) importantPrefixes;
};
};
systemd.user.services.hyprpaper = {
Install = { WantedBy = [ "graphical-session.target" ]; };
Unit = {
ConditionEnvironment = "WAYLAND_DISPLAY";
Description = "hyprpaper";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
X-Restart-Triggers =
[ "${config.xdg.configFile."hypr/hyprpaper.conf".source}" ];
};
Service = {
ExecStart = "${getExe cfg.package}";
Restart = "always";
RestartSec = "10";
};
};
};
}

View file

@ -1,28 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
yamlFormat = pkgs.formats.yaml { };
in {
options.programs.k9s = {
skins = mkOption {
type = types.attrsOf yamlFormat.type;
default = { };
description = ''
Skin files written to {file}`$XDG_CONFIG_HOME/k9s/skins/`. See
<https://k9scli.io/topics/skins/> for supported values.
'';
example = literalExpression ''
my_blue_skin = {
k9s = {
body = {
fgColor = "dodgerblue";
};
};
};
'';
};
};
}

View file

@ -1,13 +1,6 @@
# (https://nixos.wiki/wiki/Module). # (https://nixos.wiki/wiki/Module).
{ {
# example = import ./example.nix;
# Modules not yet added to the stable branch
bemenu = import ./compat/bemenu.nix;
hyprpaper = import ./compat/hyprpaper.nix;
k9s = import ./compat/k9s.nix;
# Personal things # Personal things
dev = import ./dev.nix; dev = import ./dev.nix;
firefox = import ./firefox; firefox = import ./firefox;

11
modules/nixos/README.md Normal file
View file

@ -0,0 +1,11 @@
# Nixos modules
| Name | Attribute | Description |
| ------------------------------------ | ----------------------- | ------------------------------------ |
| [pounce](pounce.nix) | `services.pounce` | Pounce & calico configuration |
| [nginx](nginx.nix) | `satellite.nginx` | Nginx configuration |
| [ports](ports.nix) | `satellite.ports` | Global port specification |
| [cloudflared](cloudflared.nix) | `satellite.cloudflared` | Cloudflare tunnel configuration |
| [pilot](pilot.nix) | `satellite.pilot` | Defines the concept of a "main user" |
| [dns](dns.nix) | `satellite.dns` | DNS record creation |
| [dns-assertions](dns-assertions.nix) | `satellite.dns` | DNS record validation |

View file

@ -91,7 +91,7 @@ in
type = "CNAME"; type = "CNAME";
zone = cfg.domain; zone = cfg.domain;
at = subdomain; at = subdomain;
to = config.networking.hostName; to = "${config.networking.hostName}.${cfg.domain}.";
}; };
in lib.attrsets.mapAttrsToList (_: mkDnsRecord) cfg.at; in lib.attrsets.mapAttrsToList (_: mkDnsRecord) cfg.at;
}; };

View file

@ -7,9 +7,6 @@ let plymouthThemes = pkgs.callPackage (import ./plymouth-themes.nix) { }; in
# example = pkgs.callPackage (import ./example.nix) {}; # example = pkgs.callPackage (import ./example.nix) {};
vimclip = pkgs.callPackage (import ./vimclip.nix) { }; vimclip = pkgs.callPackage (import ./vimclip.nix) { };
homer = pkgs.callPackage (import ./homer.nix) { }; homer = pkgs.callPackage (import ./homer.nix) { };
octodns-cloudflare = pkgs.python3Packages.callPackage (import ./octodns-cloudflare.nix) { };
# REASON: octodns not in nixpkgs 23.11
octodns-cloudflare = upkgs.python3Packages.callPackage (import ./octodns-cloudflare.nix) { };
plymouthThemeCutsAlt = plymouthThemes.cuts_alt; plymouthThemeCutsAlt = plymouthThemes.cuts_alt;
} }

View file

@ -1,71 +0,0 @@
$ORIGIN moonythm.dev. ; designates default origin
$TTL 600 ; expiration time in ms
; ==========================================================================================
; Main dns records
; Actual (tailscale internal) IPs
lapetus IN A 100.93.136.59
lapetus IN AAAA fd7a:115c:a1e0::e75d:883b
; lapetus services
actual IN CNAME lapetus
api.intray IN CNAME lapetus
api.smos IN CNAME lapetus
cal IN CNAME lapetus
diptime IN CNAME lapetus
docs.smos IN CNAME lapetus
grafana IN CNAME lapetus
guacamole IN CNAME lapetus
intray IN CNAME lapetus
irc IN CNAME lapetus
jupyter IN CNAME lapetus
lab IN CNAME lapetus
lapetus.syncthing IN CNAME lapetus ; TODO: might change this to syncthing.lapetus
media IN CNAME lapetus
prometheus IN CNAME lapetus
qbit IN CNAME lapetus
redlib IN CNAME lapetus
rss IN CNAME lapetus
search IN CNAME lapetus
smos IN CNAME lapetus
warden IN CNAME lapetus
yt IN CNAME lapetus
*.irc IN CNAME irc
; Tunnel used by lapetus
tunnel.lapetus IN CNAME 347d9ead-a523-4f8b-bca7-3066e31e2952.cfargotunnel.com.
; lapetus services using cloudflare tunnels
bin IN CNAME tunnel.lapetus
git IN CNAME tunnel.lapetus
jupyter IN CNAME tunnel.lapetus
; github pages
doffycup IN CNAME prescientmoon.github.io.
erratic-gate IN CNAME prescientmoon.github.io.
; ==========================================================================================
; Migadu mail setup
; Mail MX records
@ IN MX 10 aspmx1.migadu.com.
@ IN MX 20 aspmx2.migadu.com.
orbit IN MX 10 aspmx1.migadu.com.
orbit IN MX 20 aspmx2.migadu.com.
; Mail CNAME records
key1._domainkey IN CNAME key1.moonythm.dev._domainkey.migadu.com.
key2._domainkey IN CNAME key2.moonythm.dev._domainkey.migadu.com.
key3._domainkey IN CNAME key3.moonythm.dev._domainkey.migadu.com.
key1._domainkey.orbit IN CNAME key1.orbit.moonythm.dev._domainkey.migadu.com.
key2._domainkey.orbit IN CNAME key2.orbit.moonythm.dev._domainkey.migadu.com.
key3._domainkey.orbit IN CNAME key3.orbit.moonythm.dev._domainkey.migadu.com.
; Other mail stuff
@ IN TXT "hosted-email-verify=kfkhyexd"
@ IN TXT "v=spf1 include:spf.migadu.com -all"
_dmarc IN TXT "v=DMARC1; p=quarantine;"
orbit IN TXT "hosted-email-verify=24s7lnum"
orbit IN TXT "v=spf1 include:spf.migadu.com -all"
_dmarc.orbit IN TXT "v=DMARC1; p=quarantine;"