chore: massive cleanup

This commit is contained in:
Malte Tammena 2023-10-30 00:31:58 +01:00
parent 12835fa38f
commit 518513e354
37 changed files with 277 additions and 18606 deletions

View file

@ -1,21 +1,5 @@
{
"nodes": {
"2i-emulator": {
"flake": false,
"locked": {
"lastModified": 1654439869,
"narHash": "sha256-zQdnDZwFd7KkSoLyu3Ty/YDn7qosTIf2n02PHitGf2g=",
"owner": "klemens",
"repo": "2i-emulator",
"rev": "dbd022bce6ef22a798c36c2b22915ab72b64822d",
"type": "github"
},
"original": {
"owner": "klemens",
"repo": "2i-emulator",
"type": "github"
}
},
"all-cabal-json": {
"flake": false,
"locked": {
@ -2515,41 +2499,8 @@
"type": "github"
}
},
"radicale_infcloud": {
"flake": false,
"locked": {
"lastModified": 1650318334,
"narHash": "sha256-xzBWIx2OOkCtBjlff1Z0VqgMhxWtgiOKutXUadT3tIo=",
"owner": "Unrud",
"repo": "RadicaleInfCloud",
"rev": "53d3a95af5b58cfa3242cef645f8d40c731a7d95",
"type": "github"
},
"original": {
"owner": "Unrud",
"repo": "RadicaleInfCloud",
"type": "github"
}
},
"rip": {
"flake": false,
"locked": {
"lastModified": 1609816820,
"narHash": "sha256-fkrWIysGJRscos+/dxCpNzfSgRiugKV+JZSZro1JIQI=",
"owner": "nivekuil",
"repo": "rip",
"rev": "11f0b8d018975f78d922038efc7f60bf9fffafd0",
"type": "github"
},
"original": {
"owner": "nivekuil",
"repo": "rip",
"type": "github"
}
},
"root": {
"inputs": {
"2i-emulator": "2i-emulator",
"colmena": "colmena",
"custom-udev-rules": "custom-udev-rules",
"devshell": "devshell",
@ -2569,8 +2520,6 @@
"nixpkgs-wayland": "nixpkgs-wayland",
"pre-commit-hooks-nix": "pre-commit-hooks-nix_4",
"qmk-udev-rules": "qmk-udev-rules",
"radicale_infcloud": "radicale_infcloud",
"rip": "rip",
"sops-nix": "sops-nix",
"treefmt-nix": "treefmt-nix_5",
"xdg-desktop-portal-hyprland": "xdg-desktop-portal-hyprland"

View file

@ -58,18 +58,6 @@
url = "github:hyprwm/xdg-desktop-portal-hyprland";
};
rip = {
url = "github:nivekuil/rip";
flake = false;
};
"2i-emulator" = {
url = "github:klemens/2i-emulator";
flake = false;
};
radicale_infcloud = {
url = "github:Unrud/RadicaleInfCloud";
flake = false;
};
qmk-udev-rules = {
url = "github:qmk/qmk_firmware";
flake = false;
@ -93,14 +81,11 @@
inputs.xdg-desktop-portal-hyprland.overlays.default
inputs.hyprland-contrib.overlays.default
(_: super: {
# Add fonts
hackNerdLigatures = super.callPackage ./pkgs/hack.nix {};
# Add the emulator
"2a-emulator" =
inputs.emulator-2a.packages.x86_64-linux."2a-emulator";
# Add my mensa tool
inherit (inputs.mensa.packages.x86_64-linux) mensa;
darkman = super.callPackage ./pkgs/darkman.nix {};
# TODO: Replace with upstream
inherit (inputs.fend.packages.x86_64-linux) fend;
hydra = inputs.hydra.packages.x86_64-linux.default;
@ -109,9 +94,6 @@
netcat-openbsd = super.libressl.nc;
})
(import ./overlays/qmk-udev-rules.nix)
(import ./overlays/logisim.nix)
(import ./overlays/fzf-kak.nix)
(import ./overlays/prometheus-fritzbox-exporter.nix)
(import ./overlays/waybar-hypr.nix)
];
# Modules useful to most of my systems

View file

@ -1,4 +1,8 @@
{pkgs, ...}: {
{
config,
pkgs,
...
}: {
imports = [
../hardware/intel-nuc.nix
];
@ -23,18 +27,17 @@
REpo-AiO = pkgs.fetchFromGitHub {
owner = "Collabsvito";
repo = "REpo-AiO";
rev = "c88a6de";
hash = "sha256-3FeMPAMXvVwbQXmjz6HYo5QAbrI4x3mkVNTLIco56K4=";
inherit (config.state.hashes.REpo-AiO) rev hash;
};
rtlGroupPlugin = pkgs.kodiPackages.buildKodiAddon rec {
pname = "rtl+";
namespace = "plugin.video.rtlgroup.de";
version = "1.1.6";
version = config.state.hashes.rtlGroupPlugin.version;
src = pkgs.fetchzip {
url = "file://${REpo-AiO}/MATRIX/${namespace}/${namespace}-${version}+matrix.1.zip";
hash = "sha256-tknTHae9dRQ1oO8rtgqSzxC7DzbVHa2VhbddWBqNVOI=";
hash = config.state.hashes.rtlGroupPlugin.hash;
};
patchPhase = ''
@ -43,12 +46,12 @@
};
netflixPlugin = pkgs.kodiPackages.netflix.overrideAttrs rec {
version = "1.22.3";
inherit (config.state.hashes.netflixPlugin) version;
src = pkgs.fetchFromGitHub {
owner = "CastagnaIT";
repo = "plugin.video.netflix";
rev = "v${version}";
sha256 = "sha256-8NGj8n1p8euqYYdPDSeFh2ZE9lly5ThSmg69yXY3Te8=";
inherit (config.state.hashes.netflixPlugin) hash;
};
};
in

View file

@ -7,13 +7,6 @@
}: let
sopsPath = key: config.sops.secrets.${key}.path;
scrapedExporters = lib.attrsets.mapAttrsToList (expName: conf: {
job_name = expName;
static_configs = lib.singleton {
targets = lib.singleton "localhost:${builtins.toString conf.port}";
};
});
mkVirtHost = certificateName:
lib.attrsets.recursiveUpdate {
addSSL = true;
@ -23,9 +16,9 @@
sslCertificate = pkgs.writeText "${certificateName}.crt" (builtins.readFile ../secrets/pub/${certificateName}.crt);
};
vpnInterface = config.services.tailscale.interfaceName;
vpnIPv4 = "100.108.135.4";
vpnIPv6 = "fd7a:115c:a1e0:ab12:4843:cd96:626c:8704";
vpnIPv4 = config.state.vpn.ipv4;
vpnIPv6 = config.state.vpn.ipv6;
in {
imports = [
inputs.nixos-hardware.nixosModules.common-cpu-intel #-cpu-only
@ -46,7 +39,6 @@ in {
# === Settings ===
settings.ssh.openOutsideVPN = true;
settings.printing.enable = true;
# === ZFS services ===
services.zfs.trim.enable = true;
@ -72,33 +64,6 @@ in {
stateDir = "/data/dirty/gogs";
};
# === Extend printing settings because sharing is caring ===
services.printing = {
listenAddresses = ["*:631"];
allowFrom = ["all" "@IF(${vpnInterface})"];
defaultShared = true;
browsing = true;
logLevel = "debug";
};
networking.firewall.interfaces.${vpnInterface} = {
allowedUDPPorts = [631];
allowedTCPPorts = [631 config.services.hydra.port];
};
hardware.printers = {
ensureDefaultPrinter = "Local";
ensurePrinters = lib.singleton {
description = "The fastest Boi in town!";
deviceUri = "usb://Samsung/ML-1640%20Series?serial=144QBAHS600499T.";
location = "@Home";
model = "samsung/ML-1640.ppd";
name = "Local";
ppdOptions = {
PageSize = "A4";
Resolution = "600dpi";
};
};
};
virtualisation.oci-containers.backend = "podman";
virtualisation.podman = {
enable = true;
@ -172,41 +137,6 @@ in {
# For SONOS
networking.firewall.allowedTCPPorts = [1400];
# === Dim ===
# virtualisation.oci-containers.containers."dim" = {
# environment = {};
# image = "ghcr.io/dusk-labs/dim:dev";
# ports = lib.singleton "7999:8000";
# volumes = [
# # TODO: https://github.com/Dusk-Labs/dim/blob/master/docker-compose-template.yml
# "/srv/media.deletemesoon:/media:ro"
# ];
# #user = "${config.users.users.dim.name}:${config.users.groups.dim.name}";
# };
# === SheetAble ===
# virtualisation.oci-containers.containers."sheetable" = {
# environment = {
# CONFIG_PATH = "/app/config/";
# };
# image = "vallezw/sheetable";
# ports = lib.singleton "7998:8080";
# volumes = [
# # TODO: https://sheetable.net/docs/Installation/installation-docker
# ];
# };
# === Seafile ===
# services.seafile = {
# enable = true;
# adminEmail = "malte.tammena@pm.me";
# initialAdminPassword = "test";
# seafileSettings = {
# fileserver.host = "::1";
# };
# ccnetSettings.General.SERVICE_URL = "http://file.home";
# };
# === HYDRA & Friends. ===
services.hydra = {
enable = true;
@ -385,106 +315,6 @@ in {
openFirewall = true;
};
# === Grafana ===
services.grafanaHome = {
enable = true;
nginx.listenAddresses = [vpnIPv4 "[${vpnIPv6}]"];
nginx.sslCertificate = sopsPath "nginx-cert-crt";
nginx.sslCertificateKey = sopsPath "nginx-cert-key";
grafana.adminPasswordFile = sopsPath "grafana-admin-password";
};
# === Prometheus ===
services.prometheus = {
enable = true;
enableReload = true;
exporters = {
fritzbox = {
enable = true;
gatewayAddress = "spof";
};
node = {
enable = true;
enabledCollectors = ["systemd"];
disabledCollectors = ["diskstats"];
};
};
scrapeConfigs = scrapedExporters {inherit (config.services.prometheus.exporters) fritzbox node;};
};
systemd.services."prometheus-fritzbox-exporter".serviceConfig.EnvironmentFile = sopsPath "fritzbox-exporter-env";
# TODO: Yikes
systemd.services."prometheus-fritzbox-exporter".serviceConfig.ExecStart = let
cfg = config.services.prometheus.exporters.fritzbox;
in
lib.mkForce ''
${pkgs.prometheus-fritzbox-exporter}/bin/fritzbox_exporter \
-listen-address ${cfg.listenAddress}:${toString cfg.port} \
-gateway-url http://${cfg.gatewayAddress}:${toString cfg.gatewayPort} \
-gateway-luaurl http://${cfg.gatewayAddress} \
-metrics-file ${pkgs.prometheus-fritzbox-exporter}/share/metrics.json \
-lua-metrics-file ${pkgs.prometheus-fritzbox-exporter}/share/metrics-lua_cable.json
'';
# services.nginx.virtualHosts."media.home" = {
# locations."/" = {
# proxyPass = "http://127.0.0.1:7999";
# proxyWebsockets = true;
# };
# };
# services.nginx.virtualHosts."file.home" = {
# locations."/" = {
# proxyPass = "http://[::1]:${builtins.toString config.services.seafile.seafileSettings.fileserver.port}";
# proxyWebsockets = true;
# };
# };
# networking.firewall.allowedTCPPorts = [config.services.seafile.seafileSettings.fileserver.port];
# === Print Service ===
systemd.paths."print-all-files" = {
requires = ["printer.target"];
after = ["printer.target"];
wantedBy = ["default.target"];
pathConfig = {
DirectoryNotEmpty = "/srv/to-be-printed";
MakeDirectory = true;
DirectoryMode = "777";
Unit = "print-all-files.service";
};
};
systemd.services."print-all-files" = let
printAndDeleteFile = pkgs.writeShellApplication {
name = "print-and-delete-file";
runtimeInputs = [
pkgs.coreutils
pkgs.cups
];
text = ''
echo Printing "$1"
lp -- "$1"
rm "$1"
'';
};
script = pkgs.writeShellApplication {
name = "print-all-files-script";
runtimeInputs = [
pkgs.coreutils
printAndDeleteFile
];
text = ''
find . -type f -exec print-and-delete-file "{}" \;
'';
};
in {
requires = ["printer.target"];
after = ["printer.target"];
serviceConfig = {
WorkingDirectory = "/srv/to-be-printed";
ExecStart = "${script}/bin/print-all-files-script";
# Wait 15 seconds before restart to let the file load, if not present yet
RestartSec = "15";
};
};
users.users.sftp = {
description = "User used for all sftp stuff";
isNormalUser = true;
@ -539,10 +369,6 @@ in {
"certificate-key-git-home" = nginxSecret;
"paperless-admin-password" = {};
"photoprism-admin-password" = {};
"grafana-admin-password" = {
owner = config.users.users.grafana.name;
mode = "0400";
};
"nginx-cert-key" = nginxSecret;
"nginx-cert-crt" = nginxSecret;
"fritzbox-exporter-env" = {};

View file

@ -40,6 +40,38 @@ in {
# Run radicale with infcloud interface for me and Marie
services.radicaleWithInfcloud.enable = true;
sops.secrets = let
nginxSecret = {
owner = "nginx";
mode = "0400";
};
in {
certificate-key-config-tammena-me = nginxSecret;
certificate-key-todo-tammena-me = nginxSecret;
certificate-key-time-tammena-me = nginxSecret;
};
services.nginx.virtualHosts = {
"config.tammena.me" = mkVirtHost "config-tammena-me" {
locations."/" = {
proxyPass = "https://config.home";
proxyWebsockets = true;
};
};
"todo.tammena.me" = mkVirtHost "todo-tammena-me" {
locations."/" = {
proxyPass = "https://todo.home";
proxyWebsockets = true;
};
};
"time.tammena.me" = mkVirtHost "time-tammena-me" {
locations."/" = {
proxyPass = "https://time.home";
proxyWebsockets = true;
};
};
};
services.qemuGuest.enable = true;
services.bind = {
@ -49,17 +81,11 @@ in {
listenOn = ["any"];
listenOnIpv6 = ["any"];
zones."home" = let
granodomus-lima = {
v4 = "100.66.69.111";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:6242:456f";
};
faunus-ater = {
v4 = "100.108.135.4";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:626c:8704";
};
granodomus-lima = config.state.vpn.machine.granodomus-lima;
faunus-ater = config.state.vpn.machine.faunus-ater;
point = domain: host: ''
${domain} AAAA ${host.v6}
${domain} A ${host.v4}
${domain} AAAA ${host.ipv6}
${domain} A ${host.ipv4}
'';
in {
master = true;
@ -91,6 +117,7 @@ in {
${point "todo" faunus-ater}
${point "support" faunus-ater}
${point "config" faunus-ater}
${point "listen" faunus-ater}
'';
};
};

View file

@ -36,7 +36,6 @@
system.fsPackages = [pkgs.sshfs];
settings.minimalGnome.enable = true;
settings.printing.enable = true;
settings.batteryStuff.enable = true;
# Pipewire for my wayland

View file

@ -32,7 +32,6 @@
];
settings.minimalGnome.enable = true;
settings.printing.enable = true;
sound.enable = true;
security.rtkit.enable = true;

View file

@ -54,7 +54,7 @@
environment.systemPackages = with pkgs; [
steam-rom-manager
(pkgs.callPackage ../pkgs/boilr.nix {})
boilr
electron
];

View file

@ -20,7 +20,6 @@
networking.interfaces.wlp2s0.useDHCP = true;
settings.minimalGnome.enable = true;
settings.printing.enable = true;
hardware = {
opengl = {

View file

@ -17,7 +17,6 @@
in {
imports = [
./7-days-to-die.nix
./grafana.nix
./hdparm.nix
./malte.nix
./marie.nix
@ -28,12 +27,12 @@ in {
./wakeup.nix
./darkman.nix
./gogs.nix
./state.nix
];
options.settings = with lib; {
nvidiaUsed = mkEnableOption "NVIDIA graphic card usage";
minimalGnome.enable = mkEnableOption "basic gnome stuff";
printing.enable = mkEnableOption "the printing/printers configuration";
ssh.openOutsideVPN = mkEnableOption "an additional ssh port outside the VPN";
batteryStuff.enable = mkEnableOption "battery-related things";
hiDPI.enable = mkEnableOption "High-DPI display";
@ -46,6 +45,16 @@ in {
allowUnfreePredicate = _: true;
joypixels.acceptLicense = true;
};
# Some overlays
nixpkgs.overlays = [
(_: super: {
darkman = super.callPackage ../pkgs/darkman.nix {hashes = config.state.hashes.darkman;};
"2i-emulator" = super.callPackage ../pkgs/2i-emulator.nix {hashes = config.state.hashes."2i-emulator";};
boilr = super.callPackage ../pkgs/boilr.nix {hashes = config.state.hashes.boilr;};
# Add fonts
hackNerdLigatures = super.callPackage ../pkgs/hack.nix {hashes = config.state.hashes.hack;};
})
];
# This includes the firmware, oc
hardware.enableRedistributableFirmware = true;
# Add certificate authority used for my servers
@ -172,26 +181,6 @@ in {
dates = ["04:00"];
};
# Printing!
services.printing = lib.mkIf cfg.printing.enable {
enable = true;
drivers = [pkgs.samsung-unified-linux-driver];
};
hardware.printers = lib.mkIf cfg.printing.enable {
ensureDefaultPrinter = mkDefault "Laser-Boi";
ensurePrinters = lib.singleton {
description = "The fastest Boi in town!";
deviceUri = "usb://Samsung/ML-1640%20Series?serial=144QBAHS600499T.";
location = "@Home";
model = "samsung/ML-1640.ppd";
name = "Laser-Boi";
ppdOptions = {
PageSize = "A4";
Resolution = "600dpi";
};
};
};
# GNOME
# Don't forget to import DISPLAY into dbus variables
programs.dconf.enable = mkDefault cfg.minimalGnome.enable;

View file

@ -1,82 +0,0 @@
{
pkgs,
lib,
config,
...
}: let
cfg = config.services.grafanaHome;
grafanaDashboards = pkgs.stdenv.mkDerivation {
name = "grafana-dashboards";
src = ../raw;
installPhase = ''
mkdir $out
cp grafana-dashboard-fritzbox.json \
grafana-dashboard-node.json \
grafana-dashboard-home.json \
$out/
'';
};
in {
options.services."grafanaHome" = with lib; {
enable = mkEnableOption "Configured grafana + nginx + provisioning";
nginx = {
listenAddresses = mkOption {
type = with types; listOf str;
};
sslCertificateKey = mkOption {
type = types.str;
};
sslCertificate = mkOption {
type = types.str;
};
};
grafana.adminPasswordFile = mkOption {
type = types.str;
};
};
config = lib.mkIf cfg.enable {
# === Grafana ===
services.grafana = {
enable = true;
settings = {
dashboards.default_home_dashboard_path = "${grafanaDashboards}/grafana-dashboard-home.json";
security.admin_password = "$__file{${cfg.grafana.adminPasswordFile}}";
"auth.anonymous".enabled = true;
server.domain = "stats.home";
server.http_port = 9387;
server.http_add = "[::1]";
};
provision = {
enable = true;
datasources.settings.datasources = [
{
name = "local-prometheus";
type = "prometheus";
editable = false;
url = "http://localhost:${builtins.toString config.services.prometheus.port}";
isDefault = true;
}
];
dashboards.settings.providers = [
{
name = "Dashboards";
options.path = grafanaDashboards;
}
];
};
};
# === Nginx ===
services.nginx.virtualHosts.${config.services.grafana.settings.server.domain} = {
inherit (cfg.nginx) listenAddresses sslCertificate sslCertificateKey;
addSSL = true;
sslTrustedCertificate = pkgs.writeText "ca.crt" (builtins.readFile ../secrets/ca.crt);
locations."/" = {
proxyPass = "http://[::1]:${toString config.services.grafana.settings.server.http_port}";
proxyWebsockets = true;
};
};
};
}

76
modules/state.nix Normal file
View file

@ -0,0 +1,76 @@
{
lib,
config,
...
}: let
state = builtins.import ../state.nix;
ty = {
ipv4 = lib.types.strMatching "[0-9]{1,3}(\\.[0-9]{1,3}){3}";
};
in {
options.state = with lib; {
vpn.ipv4 = mkOption {
type = ty.ipv4;
description = "VPN IPv4";
readOnly = true;
};
vpn.ipv6 = mkOption {
type = types.str;
description = "VPN IPv6";
readOnly = true;
};
vpn.machine = mkOption {
type = with types;
attrsOf (submodule {
options = {
ipv4 = mkOption {
type = ty.ipv4;
description = "VPN IPv4";
};
ipv6 = mkOption {
type = str;
description = "VPN IPv6";
};
};
});
description = "VPN IP definitions for all available machines";
readOnly = true;
};
vpn.dns = mkOption {
type = ty.ipv4;
description = "VPN internal DNS server address";
readOnly = true;
};
hashes = mkOption {
type = with types; attrsOf (either (attrsOf str) str);
description = "Hashes in use";
readOnly = true;
};
};
config.state = let
host = config.networking.hostName;
in {
vpn.ipv4 =
if state ? vpn.${host}.v4
then state.vpn.${host}.v4
else builtins.throw "VPN IPv4 not defined for ${host}";
vpn.ipv6 =
if state ? vpn.${host}.v6
then state.vpn.${host}.v6
else builtins.throw "VPN IPv6 not defined for ${host}";
vpn.machine =
if state ? vpn
then
builtins.mapAttrs (machine: conf: {
ipv4 = conf.v4;
ipv6 = conf.v6;
})
state.vpn
else builtins.throw "No VPN definitions";
hashes =
if state ? hashes
then state.hashes
else {};
};
}

View file

@ -1,13 +0,0 @@
_self: super: {
kakounePlugins = super.lib.recursiveUpdate super.kakounePlugins {
fzf-kak = super.kakounePlugins.fzf-kak.overrideAttrs (_old: {
version = "95b12b1fe93c6db0441c61062823231a28eed037";
src = super.fetchFromGitHub {
owner = "andreyorst";
repo = "fzf.kak";
rev = "95b12b1fe93c6db0441c61062823231a28eed037";
sha256 = "bxpS5Xndn0patWDI2ENC/mgZyoAdMelhRryXzclFZ3E=";
};
});
};
}

View file

@ -1,15 +0,0 @@
_self: super: let
font-flags = "-Dawt.useSystemAAFontSettings=lcd -Dswing.aatext=true";
in {
logisim = super.logisim.overrideAttrs (_old: {
pname = "logisim-evolution";
src = super.fetchurl {
url = "https://mathcs.holycross.edu/~kwalsh/logisim-evolution-4.0.4hc.jar";
sha256 = "0nmvzpdhgfrzx0x6799a1jnsbgipbszd312crf865nzvsi2p046i";
};
installPhase = ''
mkdir -pv $out/bin
makeWrapper ${super.jre}/bin/java $out/bin/logisim --add-flags "${font-flags} -jar $src"
'';
});
}

View file

@ -1,20 +0,0 @@
_self: super: {
prometheus-fritzbox-exporter = super.buildGoModule {
pname = "fritzbox-exporter";
version = "git-6b8ced0";
src = super.fetchFromGitHub {
rev = "6b8ced028749036b31215168ebf1879727d32a19";
owner = "sberk42";
repo = "fritzbox_exporter";
sha256 = "sha256-CUDk4mpjYtUW1HcM6Xbgo5p560P/roe+lppRHfw0FmY=";
};
vendorSha256 = "sha256-jcHJNTdiYRQcjJr9VcABY5Ark4bmzqsJcn1iMW09Xl0=";
postInstall = ''
mkdir -p $out/share
cp metrics*.json $out/share/
'';
};
}

View file

@ -1,32 +0,0 @@
diff --git a/radicale_infcloud/web/config.js b/radicale_infcloud/web/config.js
index 560c1d1..798b22b 100644
--- a/radicale_infcloud/web/config.js
+++ b/radicale_infcloud/web/config.js
@@ -476,7 +476,7 @@ var globalEnableKbNavigation=true;
// uk_UA (Українська [Ukrainian]; thanks Serge Yakimchuck)
// zh_CN (中国 [Chinese]; thanks Fandy)
// Example:
-var globalInterfaceLanguage='en_US';
+var globalInterfaceLanguage='de_DE';
// globalInterfaceCustomLanguages
@@ -665,7 +665,7 @@ var globalActiveTodoCollections=[];
// - 'agendaDay'
// NOTE: we use custom and enhanced version of fullcalendar!
// Example:
-var globalActiveView='multiWeek';
+var globalActiveView='month';
// globalOpenFormMode
diff --git a/setup.py b/setup.py
index 0e1bf2a..c3bae30 100755
--- a/setup.py
+++ b/setup.py
@@ -23,4 +23,4 @@ setup(
platforms="Any",
packages=["radicale_infcloud"],
package_data={"radicale_infcloud": web_data},
- install_requires=["radicale>=3.1.6"])
+ install_requires=[])

View file

@ -2,20 +2,27 @@
lib,
fetchFromGitHub,
rustPlatform,
hashes,
}: let
lock = builtins.fromJSON (builtins.readFile ../flake.lock);
src = fetchFromGitHub {
owner = "klemens";
repo = "2i-emulator";
inherit (hashes) rev hash;
};
in
rustPlatform.buildRustPackage {
pname = lock.nodes."2i-emulator".original.repo;
version = lock.nodes."2i-emulator".locked.rev;
pname = "2i-emulator";
version = hashes.rev;
src = fetchFromGitHub {
inherit (lock.nodes."2i-emulator".locked) owner repo rev;
sha256 = lock.nodes."2i-emulator".locked.narHash;
inherit src;
cargoLock = {
lockFile = src + /Cargo.lock;
outputHashes = {
"rustyline-1.0.0" = hashes."rustyline-1.0.0";
};
};
cargoSha256 = "sha256-6mtCSjWHvz438yfnBuGaNxFxldyf3S7ZqsiKjh2CSyw=";
meta = with lib; {
description = "Cli emulator for the micro computer 2i used in the computer science hardware course at Leipzig University";
homepage = "https://github.com/klemens/2i-emulator";

View file

@ -11,11 +11,8 @@
libxkbcommon,
libGL,
wayland,
hashes,
}: let
version = "1.9.1";
hash = "sha256-mdkRuEzfWhdbX0DD6uwc1o8kXjqk1Y0+FFKHrM2m81w=";
cargoHash = "sha256-5nhtGqukZ8tp7gPV+JiUEHTzWUj6JtsB2i7bODcXJSc=";
rpathLibs = [
speechd
openssl
@ -36,18 +33,18 @@
in
rustPlatform.buildRustPackage.override {stdenv = clangStdenv;} {
pname = "BoilR";
inherit version;
inherit (hashes) version;
src = fetchFromGitHub {
owner = "PhilipK";
repo = "BoilR";
rev = "v.${version}";
inherit hash;
rev = "v.${hashes.version}";
inherit (hashes) hash;
};
warning = builtins.trace "Is boilr part of nixpkgs? https://github.com/NixOS/nixpkgs/pull/247991" "";
inherit cargoHash;
inherit (hashes) cargoHash;
nativeBuildInputs = [perl];

View file

@ -5,45 +5,41 @@
scdoc,
geoclue2,
bash,
}: let
name = "darkman";
rev = "b4c9bbcd41dfa22e85a01e6c70b57591b8b233fa";
sha256 = "sha256-/r3mcwkdFyZQZV3jRJQladujBFvBmm8XhncbePTFlLA=";
vendorSha256 = "sha256-CGgWEaHztWeCQPIrobwLHuDkFauJM19hBU7JsA3HMic=";
in
buildGoModule {
pname = name;
version = rev;
hashes,
}:
buildGoModule {
pname = "darkman";
version = hashes.rev;
src = fetchFromGitLab {
inherit sha256 rev;
owner = "WhyNotHugo";
repo = name;
};
src = fetchFromGitLab {
owner = "WhyNotHugo";
repo = "darkman";
inherit (hashes) hash rev;
};
nativeBuildInputs = [scdoc];
propagatedBuildInputs = [geoclue2 bash];
nativeBuildInputs = [scdoc];
propagatedBuildInputs = [geoclue2 bash];
inherit vendorSha256;
inherit (hashes) vendorSha256;
patchPhase = ''
sed -i "s|^ExecStart=/usr/bin/darkman run$|ExecStart=$out/bin/darkman run|" darkman.service
sed -i "s|bash|${bash}/bin/bash|" scripts.go
'';
patchPhase = ''
sed -i "s|^ExecStart=/usr/bin/darkman run$|ExecStart=$out/bin/darkman run|" darkman.service
sed -i "s|bash|${bash}/bin/bash|" scripts.go
'';
postBuild = ''
make build
'';
postBuild = ''
make build
'';
installPhase = ''
mkdir -p $out
make install PREFIX=/ DESTDIR=$out
'';
installPhase = ''
mkdir -p $out
make install PREFIX=/ DESTDIR=$out
'';
meta = {
description = "🌇 Framework for dark-mode and light-mode transitions on Linux desktop";
homepage = "https://gitlab.com/WhyNotHugo/darkman";
license = lib.licenses.isc;
maintainers = [];
};
}
meta = {
description = "🌇 Framework for dark-mode and light-mode transitions on Linux desktop";
homepage = "https://gitlab.com/WhyNotHugo/darkman";
license = lib.licenses.isc;
maintainers = [];
};
}

View file

@ -1,50 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
gtk3,
breeze-icons,
hicolor-icon-theme,
hiDPI ? false,
}: let
name = "gruvbox-material-gtk";
rev = "cc255d43322ad646bb35924accb0778d5e959626";
sha256 = "1O34p9iZelqRFBloOSZkxV0Z/7Jffciptpj3fwXPHbc=";
variant =
if hiDPI
then "Gruvbox-Material-Dark-HIDPI"
else "Gruvbox-Material-Dark";
in
stdenv.mkDerivation {
pname = name;
version = rev;
src = fetchFromGitHub {
inherit rev sha256;
owner = "TheGreatMcPain";
repo = name;
};
nativeBuildInputs = [gtk3];
propagatedBuildInputs = [breeze-icons hicolor-icon-theme];
installPhase = ''
rm -rf README.md LICENSE demo.png
mkdir -p $out/share/themes/Gruvbox-Material-Dark
cp -r themes/${variant}/* $out/share/themes/Gruvbox-Material-Dark
mkdir -p $out/share/icons/Gruvbox-Material-Dark
cp -r icons/Gruvbox-Material-Dark/* $out/share/icons/Gruvbox-Material-Dark
gtk-update-icon-cache $out/share/icons/Gruvbox-Material-Dark
'';
dontDropIconThemeCache = true;
meta = with lib; {
description = "Gruvbox Material for GTK";
homepage = "https://github.com/TheGreatMcPain/gruvbox-material-gtk";
license = licenses.mit;
platforms = platforms.unix;
maintainers = [];
};
}

View file

@ -2,16 +2,16 @@
lib,
fetchzip,
stdenvNoCC,
hashes,
}: let
pname = "Ligatured-Hack";
version = "v3.003+Nerdv2.1+FC3.1+JBMv2.242";
sha256 = "nCOH+48w7nEm7mXXPCsDuaRlId2hNyYdV01IbVNWuME=";
in
stdenvNoCC.mkDerivation {
inherit pname version;
inherit pname;
inherit (hashes) version;
src = fetchzip {
inherit sha256;
inherit (hashes) hash;
url = "https://github.com/gaplo917/Ligatured-Hack/releases/download/v3.003%2BNv2.1.0%2BFC%2BJBMv2.242/HackLigatured-v3.003+FC3.1+JBMv2.242.zip";
stripRoot = false;
};

View file

@ -1,28 +0,0 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
}: let
lock = builtins.fromJSON (builtins.readFile ../flake.lock);
in
rustPlatform.buildRustPackage {
pname = "rip";
version = "";
src = fetchFromGitHub {
inherit (lock.nodes.rip.locked) owner repo rev;
sha256 = lock.nodes.rip.locked.narHash;
};
cargoSha256 = "sha256-gzdmDOpWSnX0CVihMf8ODi85P3EFHqdSBVKVQ9FZH7s=";
nativeBuildInputs = [pkg-config];
meta = with lib; {
description = "A safe and ergonomic alternative to rm";
homepage = "https://github.com/nivekuil/rip";
license = with licenses; [gpl3];
maintainers = [];
};
}

View file

@ -1,6 +0,0 @@
# Node Exporter
Please checkout the original repository!
Source: [github:rfrail3/grafana-dashboards](https://github.com/rfrail3/grafana-dashboards/tree/master/prometheus)
License: Apache

File diff suppressed because it is too large Load diff

View file

@ -1,94 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": false,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 4,
"links": [],
"liveNow": false,
"panels": [
{
"gridPos": {
"h": 15,
"w": 24,
"x": 0,
"y": 0
},
"id": 3,
"links": [],
"options": {
"maxItems": 30,
"query": "",
"showHeadings": false,
"showRecentlyViewed": false,
"showSearch": true,
"showStarred": false,
"tags": []
},
"pluginVersion": "8.4.5",
"tags": [],
"title": "Dashboards",
"type": "dashlist"
}
],
"schemaVersion": 35,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"hidden": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
],
"type": "timepicker"
},
"timezone": "browser",
"title": "Home",
"uid": "_QSuXaj7k",
"version": 1,
"weekStart": ""
}

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,6 @@
paperless-admin-password: ENC[AES256_GCM,data:6DFS/9+2K/zsiYr8kbkwrvknqtc1AOypsyoHwvg=,iv:ZdB5TN8x4917ZuIMcdazPO5GpuSq9Xi7Hu2iTFsLqvM=,tag:f8hDRMkR7C+ElA0h54l0Yw==,type:str]
gogs-database-password: ENC[AES256_GCM,data:5C3jAwBSta2P2D0/AR1cjCbLakHi3PHtUBEu,iv:LjeEmoxL9NrujxO/4jzSquZQAoVMdXNx97nXBBIMypU=,tag:9kD3LdDrBYLRGmtNcs6+ZQ==,type:str]
photoprism-admin-password: ENC[AES256_GCM,data:JPj1Mem6SfCAywUJD1ZJYZ/VFN29YPw3c6OGmaOB,iv:g2OWuyhK4UO0g25Ld/cGYcII/YeXe+2o7nMmojTgB1Y=,tag:QZ76VcVwMv9G82BacpfbUA==,type:str]
grafana-admin-password: ENC[AES256_GCM,data:/pbvx2tWzXd6JeXPHtmMpVA1BTxcjsMJDq+Z7iRXBmCD+OfKvA==,iv:eZjBtG45XZjGIQ4SQjIkC8Ky+9wloMxeMuM4OKUxqa4=,tag:V466dlV1JZfjiNaF+rjaqA==,type:str]
internal-restic-password: ENC[AES256_GCM,data:fL/kqEb4YGD3zV1IpTT30Sq3XQsQymixkiHxjx4DGWBACQ==,iv:m7cW95I2nQ7S9Iz9MICEbpe2UZZsE1DLtz2v1d3kkz4=,tag:s9226vT/KxPdnLsb5Z52Mw==,type:str]
hydra-admin-password: ENC[AES256_GCM,data:fzcFWbU6AjIVP7BaANE3RhPXYKm7HxMnNxj2Trk=,iv:VvOnYhVR3EvNatNazZZvSL7XJ8DpMn+tvGi1+SVdxkA=,tag:Nn1DPlBI2RXCwz+7CHMe9w==,type:str]
nix-store-signing-key: ENC[AES256_GCM,data:T7tgY+2q/Dy/tbFlnlm9IckeJX4p/JMcXRXd83zC+wRGTG79isPOGAH0CAxYL0tWtPowef6NbefOjUBo1t2aLNakRaSQcwxIFj5joPy2nEzaTSijPWu1I7+qn/tmMmc8ZuLN,iv:Q0/7H37u4dDVanHXS/8X3tdTlZETDdH6dBGp2+l19rM=,tag:P7bwJpEIOuNF1JBfKRdoLg==,type:str]
@ -36,8 +35,8 @@ sops:
cUZZQ1N4dGxpR2VLR1ZjTlFmTmwvTGsKzvsg2Uh2LzE5vXrdxW+H3ACP9kbFO1Rb
XUyEF6E40UGTR40J8CqV7IvnHVvaLVIekW51MyKVGNyBG1phOne10w==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-10-04T14:28:07Z"
mac: ENC[AES256_GCM,data:5ClPyK4mJ+YwcYVKyHKZnH0gCl4GYfZHATFNTRDnHZE8rY9xkDr31t1Q3brCyQcpPBzj/mL3sNWqaVZJ36rAdBgj9hCk5cOikA3J3BLDk2zyu1ugRotliYBWOYSZastu2czfBoGn+MxENqr4qT2jmBH3K1cd1mUwkKVl/C5OGkk=,iv:+j88Yba0m0KKc0DmI+8NMilIOxCYii9CysZ+2GoOc/o=,tag:OMVrXpps7x4M70HDRKkyyA==,type:str]
lastmodified: "2023-10-29T23:01:43Z"
mac: ENC[AES256_GCM,data:y1cDCPA1yvBYoMoj+nl4szMmZ9+XsLV9b4GnTQuWf4gYmwECilEPA2PpS0aZ1Q92/DtZOyHkiR9YjAHDUcRtXUYCOVGElKc6SQKbIMmEgDWLBY3kpPsek3T139b8AHTL0BMfZZyoFzw/d7vZ7+i+efZtTHLK3cE+zVvdEBg+j9Y=,iv:Zfx8lX9ozduGk2hlpqfMnObfGK4RReboyE33zmJAOpg=,tag:Mzd4mdXiZg4HI/euZDhSsQ==,type:str]
pgp:
- created_at: "2022-06-04T20:24:49Z"
enc: |

75
state.nix Normal file
View file

@ -0,0 +1,75 @@
{
vpn = {
cerithium-telescopium = {
v4 = "100.102.99.37";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:6266:6325";
};
faunus-ater = {
v4 = "100.108.135.4";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:626c:8704";
};
granodomus-lima = {
v4 = "100.66.69.111";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:6242:456f";
};
helix-texta = {
v4 = "100.77.45.59";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:624d:2d3b";
};
murex-pecten = {
v4 = "100.120.38.101";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:6278:2665";
};
polymita-picta = {
v4 = "100.87.246.86";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:6257:f656";
};
radix-balthica = {
v4 = "100.109.212.72";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:626d:d448";
};
trochulus-hispidus = {
v4 = "100.124.110.43";
v6 = "fd7a:115c:a1e0:ab12:4843:cd96:627c:6e2b";
};
};
hashes = {
timewarrior."v1.4.3" = "+HsUiU287bWZ5Ytl+N5i+STuG9YlqlaKWxd69y0PRds=";
"2i-emulator" = {
rev = "dbd022b";
hash = "sha256-zQdnDZwFd7KkSoLyu3Ty/YDn7qosTIf2n02PHitGf2g=";
"rustyline-1.0.0" = "sha256-FFuhLmBwt5e/zOJfkz4NCuI8lG/sBhGOcxst8d+oOVk=";
};
darkman = {
rev = "b4c9bbc";
hash = "sha256-/r3mcwkdFyZQZV3jRJQladujBFvBmm8XhncbePTFlLA=";
vendorSha256 = "sha256-CGgWEaHztWeCQPIrobwLHuDkFauJM19hBU7JsA3HMic=";
};
boilr = {
version = "1.9.1";
hash = "sha256-mdkRuEzfWhdbX0DD6uwc1o8kXjqk1Y0+FFKHrM2m81w=";
cargoHash = "sha256-5nhtGqukZ8tp7gPV+JiUEHTzWUj6JtsB2i7bODcXJSc=";
};
hack = {
version = "v3.003+Nerdv2.1+FC3.1+JBMv2.242";
hash = "sha256-nCOH+48w7nEm7mXXPCsDuaRlId2hNyYdV01IbVNWuME=";
};
pexel-bg.hash = "sha256-Su2UwFpZKj5sa80UrcDSX9O2GuVI6XR2gSLpp4gJZP0=";
microGPodder = {
rev = "6f68333";
hash = "sha256-yex9h6nllxdWRhCbeXNz5PyijNJ6lbc1orfU1vBcS4g=";
};
REpo-AiO = {
rev = "c88a6de";
hash = "sha256-3FeMPAMXvVwbQXmjz6HYo5QAbrI4x3mkVNTLIco56K4=";
};
rtlGroupPlugin = {
hash = "sha256-tknTHae9dRQ1oO8rtgqSzxC7DzbVHa2VhbddWBqNVOI=";
version = "1.1.6";
};
netflixPlugin = {
version = "1.22.3";
hash = "sha256-8NGj8n1p8euqYYdPDSeFh2ZE9lly5ThSmg69yXY3Te8=";
};
};
}

View file

@ -1,552 +0,0 @@
*PPD-Adobe: "4.3"
*%================================================
*%
*% Copyright Brother Industries,Ltd 2006-2015
*% "Brother HLL5100DN for CUPS"
*%
*%================================================
*%
*%BrCustomPaperSize: TRUE
*%BrPrinterType: DT3
*%
*%==== General Information Keywords ========================
*FormatVersion: "4.3"
*FileVersion: "1.00"
*LanguageEncoding: ISOLatin1
*LanguageVersion: English
*Manufacturer: "Brother"
*PCFileName: "HLL5100.PPD"
*Product: "(Brother HLL5100DN series)"
*cupsVersion: 1.1
*cupsManualCopies: True
*cupsModelNumber: 72
*cupsFilter: "application/vnd.cups-postscript 0 brother_lpdwrapper_HLL5100DN"
*cupsFilter: "application/vnd.cups-pdf 0 brother_lpdwrapper_HLL5100DN"
*PSVersion: "(3010.106) 3"
*ModelName: "HLL5100DN"
*NickName: "Brother HLL5100DN for CUPS "
*ShortNickName: "Brother HLL5100DN"
*%==== Basic Device Capabilities =============
*LanguageLevel: "3"
*TTRasterizer: Type42
*ColorDevice: False
*DefaultColorSpace: Gray
*FileSystem: True
*?FileSystem:"
save
/devname (%disk0%) def
/ret false def
0 1 7{
devname exch 48 add 5 exch put
devname devstatus {
0 ne {/ret true def}if
pop pop pop pop pop pop pop
}if
}for
ret {(True)}{(False)} ifelse = flush
restore
"
*End
*Throughput: "18"
*FreeVM: "1700000"
*HWMargins: 12 12 12 12
*VariablePaperSize: True
*MaxMediaWidth: 612
*MaxMediaHeight: 1008
*NonUIOrderDependency: 105 AnySetup *CustomPageSize
*LandscapeOrientation: Plus90
*CustomPageSize True: " "
*ParamCustomPageSize Width/Width 3.0-8.5in(76.2-215.9mm): 1 points 216 612
*ParamCustomPageSize Height/Height 5.0-14.0in(127.0-355.6mm): 2 points 360 1008
*ParamCustomPageSize Orientation: 3 int 0 0
*ParamCustomPageSize WidthOffset: 4 points 0 0
*ParamCustomPageSize HeightOffset: 5 points 0 0
*%==== Installable Options ===================
*% *OpenGroup: InstallableOptions/Options Installed
*% *OpenUI *OptionTrays/Number of Input Trays: PickOne
*% *DefaultOptionTrays: 1Trays
*% *OptionTrays 1Trays/ 1: " "
*% *OptionTrays 2Trays/ 2: " "
*% *OptionTrays 3Trays/ 3: " "
*% *CloseUI: *OptionTrays
*% *CloseGroup: InstallableOptions
*% *UIConstraints: *OptionTrays 1Trays *InputSlot TRAY2
*% *UIConstraints: *OptionTrays 1Trays *InputSlot TRAY3
*% *UIConstraints: *OptionTrays 2Trays *InputSlot TRAY3
*UIConstraints: *InputSlot AUTO *PageSize Custom
*UIConstraints: *InputSlot TRAY1 *PageSize Custom
*UIConstraints: *InputSlot TRAY2 *PageSize Custom
*UIConstraints: *InputSlot TRAY3 *PageSize Custom
*UIConstraints: *InputSlot AUTO *PageSize CUSTOM1
*UIConstraints: *InputSlot TRAY1 *PageSize CUSTOM1
*UIConstraints: *InputSlot TRAY2 *PageSize CUSTOM1
*UIConstraints: *InputSlot TRAY3 *PageSize CUSTOM1
*UIConstraints: *InputSlot AUTO *PageSize CUSTOM2
*UIConstraints: *InputSlot TRAY1 *PageSize CUSTOM2
*UIConstraints: *InputSlot TRAY2 *PageSize CUSTOM2
*UIConstraints: *InputSlot TRAY3 *PageSize CUSTOM2
*UIConstraints: *InputSlot AUTO *PageSize CUSTOM3
*UIConstraints: *InputSlot TRAY1 *PageSize CUSTOM3
*UIConstraints: *InputSlot TRAY2 *PageSize CUSTOM3
*UIConstraints: *InputSlot TRAY3 *PageSize CUSTOM3
*UIConstraints: *Duplex DuplexTumble *PageSize Custom
*UIConstraints: *Duplex DuplexNoTumble *PageSize Custom
*UIConstraints: *Duplex DuplexTumble *PageSize CUSTOM1
*UIConstraints: *Duplex DuplexNoTumble *PageSize CUSTOM1
*UIConstraints: *Duplex DuplexTumble *PageSize CUSTOM2
*UIConstraints: *Duplex DuplexNoTumble *PageSize CUSTOM2
*UIConstraints: *Duplex DuplexTumble *PageSize CUSTOM3
*UIConstraints: *Duplex DuplexNoTumble *PageSize CUSTOM3
*UIConstraints: *Duplex DuplexNoTumble *PageSize Executive
*UIConstraints: *Duplex DuplexNoTumble *PageSize A5
*UIConstraints: *Duplex DuplexNoTumble *PageSize A6
*UIConstraints: *Duplex DuplexNoTumble *PageSize Env10
*UIConstraints: *Duplex DuplexNoTumble *PageSize EnvMonarch
*UIConstraints: *Duplex DuplexNoTumble *PageSize EnvDL
*UIConstraints: *Duplex DuplexNoTumble *PageSize EnvC5
*UIConstraints: *Duplex DuplexNoTumble *PageSize ISOB5
*UIConstraints: *Duplex DuplexNoTumble *PageSize B5
*UIConstraints: *Duplex DuplexNoTumble *PageSize ISOB6
*UIConstraints: *Duplex DuplexNoTumble *PageSize B6
*UIConstraints: *Duplex DuplexNoTumble *PageSize 4x6
*UIConstraints: *Duplex DuplexNoTumble *PageSize Postcard
*UIConstraints: *Duplex DuplexNoTumble *PageSize DoublePostcardRotated
*UIConstraints: *Duplex DuplexNoTumble *PageSize EnvYou4
*UIConstraints: *Duplex DuplexNoTumble *PageSize 195x270mm
*UIConstraints: *Duplex DuplexNoTumble *PageSize 184x260mm
*UIConstraints: *Duplex DuplexNoTumble *PageSize 197x273mm
*UIConstraints: *Duplex DuplexTumble *PageSize Executive
*UIConstraints: *Duplex DuplexTumble *PageSize A5
*UIConstraints: *Duplex DuplexTumble *PageSize A6
*UIConstraints: *Duplex DuplexTumble *PageSize Env10
*UIConstraints: *Duplex DuplexTumble *PageSize EnvMonarch
*UIConstraints: *Duplex DuplexTumble *PageSize EnvDL
*UIConstraints: *Duplex DuplexTumble *PageSize EnvC5
*UIConstraints: *Duplex DuplexTumble *PageSize ISOB5
*UIConstraints: *Duplex DuplexTumble *PageSize B5
*UIConstraints: *Duplex DuplexTumble *PageSize ISOB6
*UIConstraints: *Duplex DuplexTumble *PageSize B6
*UIConstraints: *Duplex DuplexTumble *PageSize 4x6
*UIConstraints: *Duplex DuplexTumble *PageSize Postcard
*UIConstraints: *Duplex DuplexTumble *PageSize DoublePostcardRotated
*UIConstraints: *Duplex DuplexTumble *PageSize EnvYou4
*UIConstraints: *Duplex DuplexTumble *PageSize 195x270mm
*UIConstraints: *Duplex DuplexTumble *PageSize 184x260mm
*UIConstraints: *Duplex DuplexTumble *PageSize 197x273mm
*UIConstraints: *InputSlot TRAY1 *BrMediaType THICKERPAPER2
*UIConstraints: *InputSlot TRAY1 *BrMediaType BOND
*UIConstraints: *InputSlot TRAY1 *BrMediaType ENV
*UIConstraints: *InputSlot TRAY1 *BrMediaType ENVTHICK
*UIConstraints: *InputSlot TRAY1 *BrMediaType ENVTHIN
*% UIConstraints: *InputSlot TRAY1 *PageSize Letter
*% UIConstraints: *InputSlot TRAY1 *PageSize Legal
*% UIConstraints: *InputSlot TRAY1 *PageSize Executive
*% UIConstraints: *InputSlot TRAY1 *PageSize FanFoldGermanLegal
*% UIConstraints: *InputSlot TRAY1 *PageSize A4
*% UIConstraints: *InputSlot TRAY1 *PageSize A5
*%UIConstraints: *InputSlot TRAY1 *PageSize A6
*UIConstraints: *InputSlot TRAY1 *PageSize Env10
*UIConstraints: *InputSlot TRAY1 *PageSize EnvMonarch
*UIConstraints: *InputSlot TRAY1 *PageSize EnvDL
*UIConstraints: *InputSlot TRAY1 *PageSize EnvC5
*UIConstraints: *InputSlot TRAY1 *PageSize ISOB5
*%UIConstraints: *InputSlot TRAY1 *PageSize B5
*UIConstraints: *InputSlot TRAY1 *PageSize ISOB6
*UIConstraints: *InputSlot TRAY1 *PageSize B6
*UIConstraints: *InputSlot TRAY1 *PageSize 4x6
*%UIConstraints: *InputSlot TRAY1 *PageSize Postcard
*UIConstraints: *InputSlot TRAY1 *PageSize DoublePostcardRotated
*UIConstraints: *InputSlot TRAY1 *PageSize EnvYou4
*%UIConstraints: *InputSlot TRAY1 *PageSize 195x270mm
*%UIConstraints: *InputSlot TRAY1 *PageSize 184x260mm
*%UIConstraints: *InputSlot TRAY1 *PageSize 197x273mm
*UIConstraints: *InputSlot TRAY2 *BrMediaType THICKERPAPER2
*UIConstraints: *InputSlot TRAY2 *BrMediaType BOND
*UIConstraints: *InputSlot TRAY2 *BrMediaType ENV
*UIConstraints: *InputSlot TRAY2 *BrMediaType ENVTHICK
*UIConstraints: *InputSlot TRAY2 *BrMediaType ENVTHIN
*% UIConstraints: *InputSlot TRAY2 *PageSize Letter
*% UIConstraints: *InputSlot TRAY2 *PageSize Legal
*% UIConstraints: *InputSlot TRAY2 *PageSize Executive
*% UIConstraints: *InputSlot TRAY2 *PageSize FanFoldGermanLegal
*% UIConstraints: *InputSlot TRAY2 *PageSize A4
*% UIConstraints: *InputSlot TRAY2 *PageSize A5
*UIConstraints: *InputSlot TRAY2 *PageSize A6
*UIConstraints: *InputSlot TRAY2 *PageSize Env10
*UIConstraints: *InputSlot TRAY2 *PageSize EnvMonarch
*UIConstraints: *InputSlot TRAY2 *PageSize EnvDL
*UIConstraints: *InputSlot TRAY2 *PageSize EnvC5
*UIConstraints: *InputSlot TRAY2 *PageSize ISOB5
*UIConstraints: *InputSlot TRAY2 *PageSize B5
*UIConstraints: *InputSlot TRAY2 *PageSize ISOB6
*UIConstraints: *InputSlot TRAY2 *PageSize B6
*UIConstraints: *InputSlot TRAY2 *PageSize 4x6
*UIConstraints: *InputSlot TRAY2 *PageSize Postcard
*UIConstraints: *InputSlot TRAY2 *PageSize DoublePostcardRotated
*UIConstraints: *InputSlot TRAY2 *PageSize EnvYou4
*UIConstraints: *InputSlot TRAY2 *PageSize 195x270mm
*UIConstraints: *InputSlot TRAY2 *PageSize 184x260mm
*UIConstraints: *InputSlot TRAY2 *PageSize 197x273mm
*UIConstraints: *InputSlot TRAY3 *BrMediaType THICKERPAPER2
*UIConstraints: *InputSlot TRAY3 *BrMediaType BOND
*UIConstraints: *InputSlot TRAY3 *BrMediaType ENV
*UIConstraints: *InputSlot TRAY3 *BrMediaType ENVTHICK
*UIConstraints: *InputSlot TRAY3 *BrMediaType ENVTHIN
*% UIConstraints: *InputSlot TRAY3 *PageSize Letter
*% UIConstraints: *InputSlot TRAY3 *PageSize Legal
*% UIConstraints: *InputSlot TRAY3 *PageSize Executive
*% UIConstraints: *InputSlot TRAY3 *PageSize FanFoldGermanLegal
*% UIConstraints: *InputSlot TRAY3 *PageSize A4
*% UIConstraints: *InputSlot TRAY3 *PageSize A5
*UIConstraints: *InputSlot TRAY3 *PageSize A6
*UIConstraints: *InputSlot TRAY3 *PageSize Env10
*UIConstraints: *InputSlot TRAY3 *PageSize EnvMonarch
*UIConstraints: *InputSlot TRAY3 *PageSize EnvDL
*UIConstraints: *InputSlot TRAY3 *PageSize EnvC5
*UIConstraints: *InputSlot TRAY3 *PageSize ISOB5
*UIConstraints: *InputSlot TRAY3 *PageSize B5
*UIConstraints: *InputSlot TRAY3 *PageSize ISOB6
*UIConstraints: *InputSlot TRAY3 *PageSize B6
*UIConstraints: *InputSlot TRAY3 *PageSize 4x6
*UIConstraints: *InputSlot TRAY3 *PageSize Postcard
*UIConstraints: *InputSlot TRAY3 *PageSize DoublePostcardRotated
*UIConstraints: *InputSlot TRAY3 *PageSize EnvYou4
*UIConstraints: *InputSlot TRAY3 *PageSize 195x270mm
*UIConstraints: *InputSlot TRAY3 *PageSize 184x260mm
*UIConstraints: *InputSlot TRAY3 *PageSize 197x273mm
*UIConstraints: *Duplex DuplexNoTumble *BrMediaType THICK
*UIConstraints: *Duplex DuplexNoTumble *BrMediaType THICKERPAPER2
*UIConstraints: *Duplex DuplexNoTumble *BrMediaType BOND
*UIConstraints: *Duplex DuplexNoTumble *BrMediaType ENV
*UIConstraints: *Duplex DuplexNoTumble *BrMediaType ENVTHICK
*UIConstraints: *Duplex DuplexNoTumble *BrMediaType ENVTHIN
*UIConstraints: *Duplex DuplexTumble *BrMediaType THICK
*UIConstraints: *Duplex DuplexTumble *BrMediaType THICKERPAPER2
*UIConstraints: *Duplex DuplexTumble *BrMediaType BOND
*UIConstraints: *Duplex DuplexTumble *BrMediaType ENV
*UIConstraints: *Duplex DuplexTumble *BrMediaType ENVTHICK
*UIConstraints: *Duplex DuplexTumble *BrMediaType ENVTHIN
*%==== Media Selection ======================
*OpenUI *PageSize: PickOne
*OrderDependency: 30 AnySetup *PageSize
*DefaultPageSize: A4
*PageSize Letter/Letter: " "
*PageSize Legal/Legal: " "
*PageSize Executive/Executive: " "
*PageSize FanFoldGermanLegal/Folio: " "
*PageSize A4/A4: " "
*PageSize A5/A5: " "
*PageSize A6/A6: " "
*%PageSize 210x270mm/270mm Paper: " "
*PageSize Env10/Com-10: " "
*PageSize EnvMonarch/Monarch: " "
*PageSize EnvDL/DL: " "
*PageSize EnvC5/C5: " "
*PageSize ISOB5/B5(ISO): " "
*PageSize B5/B5(JIS): " "
*PageSize ISOB6/B6(ISO): " "
*PageSize B6/B6(JIS): " "
*PageSize 4x6/4x6: " "
*PageSize Postcard/Postcard: " "
*PageSize DoublePostcardRotated/Postcard(Double): " "
*PageSize EnvYou4/Y4 Envelop: " "
*PageSize 195x270mm/16K(195x270mm): " "
*PageSize 184x260mm/16K(184x260mm): " "
*PageSize 197x273mm/16K(197x273mm): " "
*PageSize CUSTOM1/[CUSTOM1]User Defined Paper Size: " "
*PageSize CUSTOM2/[CUSTOM2]User Defined Paper Size: " "
*PageSize CUSTOM3/[CUSTOM3]User Defined Paper Size: " "
*CloseUI: *PageSize
*OpenUI *PageRegion: PickOne
*OrderDependency: 40 AnySetup *PageRegion
*DefaultPageRegion: A4
*PageRegion Letter/Letter: " "
*PageRegion Legal/Legal: " "
*PageRegion Executive/Executive: " "
*PageRegion FanFoldGermanLegal/Folio: " "
*PageRegion A4/A4: " "
*PageRegion A5/A5: " "
*PageRegion A6/A6: " "
*%PageRegion 210x270mm/270mm Paper: " "
*PageRegion Env10/Com-10: " "
*PageRegion EnvMonarch/Monarch: " "
*PageRegion EnvDL/DL: " "
*PageRegion EnvC5/C5: " "
*PageRegion ISOB5/B5(ISO): " "
*PageRegion B5/B5(JIS): " "
*PageRegion ISOB6/B6(ISO): " "
*PageRegion B6/B6(JIS): " "
*PageRegion 4x6/4x6: " "
*PageRegion Postcard/Postcard: " "
*PageRegion DoublePostcardRotated/Postcard(Double): " "
*PageRegion EnvYou4/Y4 Envelop: " "
*PageRegion 195x270mm/16K(195x270mm): " "
*PageRegion 184x260mm/16K(184x260mm): " "
*PageRegion 197x273mm/16K(197x273mm): " "
*PageRegion CUSTOM1/[CUSTOM1]User Defined Paper Size: " "
*PageRegion CUSTOM2/[CUSTOM2]User Defined Paper Size: " "
*PageRegion CUSTOM3/[CUSTOM3]User Defined Paper Size: " "
*CloseUI: *PageRegion
*DefaultImageableArea: A4
*ImageableArea Letter/Letter: "12 12 600 780"
*ImageableArea Legal/Legal: "12 12 600 996"
*ImageableArea Executive/Executive: "12 12 510 744"
*ImageableArea FanFoldGermanLegal/Folio: "12 12 600 924"
*ImageableArea A4/A4: "12 12 583 830"
*ImageableArea A5/A5: "12 12 409 583"
*ImageableArea A6/A6: "12 12 285 408"
*%ImageableArea 210x270mm/270mm Paper: "12 12 583 753"
*ImageableArea Env10/Com-10: "12 12 285 672"
*ImageableArea EnvMonarch/Monarch: "12 12 267 528"
*ImageableArea EnvDL/DL: "12 12 300 612"
*ImageableArea EnvC5/C5: "12 12 447 637"
*ImageableArea ISOB5/B5(ISO): "12 12 487 697"
*ImageableArea B5/B5(JIS): "12 12 504 717"
*ImageableArea ISOB6/B6(ISO): "12 12 342 487"
*ImageableArea B6/B6(JIS): "12 12 351 504"
*ImageableArea 4x6/4x6: "12 12 277 419"
*ImageableArea Postcard/Postcard: "12 12 271 408"
*ImageableArea DoublePostcardRotated/Postcard(Double): "12 12 555 408"
*ImageableArea EnvYou4/Y4 Envelop: "12 12 286 654"
*ImageableArea 195x270mm/16K(195x270mm): "12 12 541 753"
*ImageableArea 184x260mm/16K(184x260mm): "12 12 510 725"
*ImageableArea 197x273mm/16K(197x273mm): "12 12 546 762"
*ImageableArea CUSTOM1/[CUSTOM1]User Defined Paper Size: "12 12 583 830"
*ImageableArea CUSTOM2/[CUSTOM2]User Defined Paper Size: "12 12 583 830"
*ImageableArea CUSTOM3/[CUSTOM3]User Defined Paper Size: "12 12 583 830"
*%==== Information About Media Sizes ========
*DefaultPaperDimension: A4
*PaperDimension Letter/Letter: "612 792"
*PaperDimension Legal/Legal: "612 1008"
*PaperDimension Executive/Executive: "522 756"
*PaperDimension FanFoldGermanLegal/Folio: "612 936"
*PaperDimension A4/A4: "595 842"
*PaperDimension A5/A5: "420 595"
*PaperDimension A6/A6: "297 420"
*%PaperDimension 210x270mm/270mm Paper: "595 765"
*PaperDimension Env10/Com-10: "297 684"
*PaperDimension EnvMonarch/Monarch: "279 540"
*PaperDimension EnvDL/DL: "312 624"
*PaperDimension EnvC5/C5: "459 649"
*PaperDimension ISOB5/B5(ISO): "499 709"
*PaperDimension B5/B5(JIS): "516 729"
*PaperDimension ISOB6/B6(ISO): "354 498"
*PaperDimension B6/B6(JIS): "363 516"
*PaperDimension 4x6/4x6: "289 431"
*PaperDimension Postcard/Postcard: "283 420"
*PaperDimension DoublePostcardRotated/Postcard(Double): "567 420"
*PaperDimension EnvYou4/Y4 Envelop: "298 666"
*PaperDimension 195x270mm/16K(195x270mm): "553 765"
*PaperDimension 184x260mm/16K(184x260mm): "522 737"
*PaperDimension 197x273mm/16K(197x273mm): "558 774"
*PaperDimension CUSTOM1/[CUSTOM1]User Defined Paper Size: "595 842"
*PaperDimension CUSTOM2/[CUSTOM2]User Defined Paper Size: "595 842"
*PaperDimension CUSTOM3/[CUSTOM3]User Defined Paper Size: "595 842"
*%==== 5.13 Media Handling Features ============================
*OpenUI *BrMediaType/MediaType: PickOne
*OrderDependency: 28 AnySetup *BrMediaType
*DefaultBrMediaType: PLAIN
*BrMediaType PLAIN/Plain Paper: " "
*BrMediaType THIN/Thin Paper: " "
*BrMediaType THICK/Thick Paper: " "
*BrMediaType THICKERPAPER2/Thicker Paper: " "
*BrMediaType BOND/Bond Paper: " "
*BrMediaType ENV/Envelopes: " "
*BrMediaType ENVTHICK/Env. Thick: " "
*BrMediaType ENVTHIN/Env. Thin: " "
*BrMediaType RECYCLED/Recycled Paper: " "
*CloseUI: *BrMediaType
*OpenUI *InputSlot/InputSlot: PickOne
*OrderDependency: 29 AnySetup *InputSlot
*DefaultInputSlot: AUTO
*InputSlot MPTRAY/MP Tray: " "
*InputSlot TRAY1/Tray1: " "
*InputSlot TRAY2/Tray2: " "
*InputSlot TRAY3/Tray3: " "
*InputSlot AUTO/Auto Select: " "
*CloseUI: *InputSlot
*RequiresPageRegion All:True
*%=== Duplex ================================
*OpenUI *Duplex: PickOne
*OrderDependency: 25 AnySetup *Duplex
*DefaultDuplex: None
*Duplex DuplexTumble: " "
*Duplex DuplexNoTumble: " "
*Duplex None: " "
*CloseUI: *Duplex
*%=== Output Bin =============================
*% === Collate ==========
*%==== 5.14 Finishing Features =================================
*%%%%% Resolution and Appearance Control %%%%%
*OpenUI *Resolution: PickOne
*OrderDependency: 11 AnySetup *Resolution
*DefaultResolution: 600dpi
*Resolution 300dpi: " "
*Resolution 600dpi: " "
*%Resolution 2400x600dpi/HQ1200: " "
*Resolution 1200dpi: " "
*CloseUI: *Resolution
*OpenUI *BRPassword/SecurePrint: PickOne
*OrderDependency: 33 AnySetup *BRPassword
*DefaultBRPassword: False
*BRPassword False/Off: " "
*BRPassword 1122: " "
*BRPassword 8519: " "
*BRPassword 3956: " "
*BRPassword 2186: " "
*BRPassword 3315: " "
*BRPassword 0896: " "
*CloseUI: *BRPassword
*CustomBRPassword True/NNNN: ""
*ParamCustomBRPassword Password: 1 passcode 4 4
*OpenUI *TonerSaveMode/Toner Save: PickOne
*DefaultTonerSaveMode: OFF
*OrderDependency: 10 AnySetup *TonerSaveMode
*TonerSaveMode OFF/Off: "statusdict begin false tonersave end"
*TonerSaveMode ON/On: "statusdict begin true tonersave end"
*CloseUI: *TonerSaveMode
*OpenUI *Sleep/Sleep Time [Min.]: PickOne
*DefaultSleep: PrinterDefault
*OrderDependency: 10 AnySetup *Sleep
*Sleep PrinterDefault/Printer Default: " "
*Sleep 2minutes/2: "statusdict begin 2 powersavetime end"
*Sleep 10minutes/10: "statusdict begin 10 powersavetime end"
*Sleep 30minutes/30: "statusdict begin 30 powersavetime end"
*CloseUI: *Sleep
*%==== 5.20 Font Related Keywords ==============================
*DefaultFont: Courier
*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM
*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM
*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM
*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM
*Font Bookman-Demi: Standard "(001.004S)" Standard ROM
*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM
*Font Bookman-Light: Standard "(001.004S)" Standard ROM
*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM
*Font Courier: Standard "(002.004S)" Standard ROM
*Font Courier-Bold: Standard "(002.004S)" Standard ROM
*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM
*Font Courier-Oblique: Standard "(002.004S)" Standard ROM
*Font Helvetica: Standard "(001.006S)" Standard ROM
*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM
*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM
*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM
*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM
*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM
*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM
*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM
*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM
*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM
*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM
*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM
*Font Palatino-Bold: Standard "(001.005S)" Standard ROM
*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM
*Font Palatino-Italic: Standard "(001.005S)" Standard ROM
*Font Palatino-Roman: Standard "(001.005S)" Standard ROM
*Font Times-Bold: Standard "(001.007S)" Standard ROM
*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM
*Font Times-Italic: Standard "(001.007S)" Standard ROM
*Font Times-Roman: Standard "(001.007S)" Standard ROM
*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
*Font ZapfDingbats: Special "(001.004S)" Special ROM
*Font Symbol: Special "(001.007S)" Special ROM
*Font Alaska: Standard "(001.005)" Standard ROM
*Font AlaskaExtrabold: Standard "(001.005)" Standard ROM
*Font AntiqueOakland: Standard "(001.005)" Standard ROM
*Font AntiqueOakland-Bold: Standard "(001.005)" Standard ROM
*Font AntiqueOakland-Oblique: Standard "(001.005)" Standard ROM
*Font ClevelandCondensed: Standard "(001.005)" Standard ROM
*Font Connecticut: Standard "(001.005)" Standard ROM
*Font Guatemala-Antique: Standard "(001.005)" Standard ROM
*Font Guatemala-Bold: Standard "(001.005)" Standard ROM
*Font Guatemala-Italic: Standard "(001.005)" Standard ROM
*Font Guatemala-BoldItalic: Standard "(001.005)" Standard ROM
*Font LetterGothic: Standard "(001.005)" Standard ROM
*Font LetterGothic-Bold: Standard "(001.005)" Standard ROM
*Font LetterGothic-Oblique: Standard "(001.005)" Standard ROM
*Font Maryland: Standard "(001.005)" Standard ROM
*Font Oklahoma: Standard "(001.005)" Standard ROM
*Font Oklahoma-Bold: Standard "(001.005)" Standard ROM
*Font Oklahoma-Oblique: Standard "(001.005)" Standard ROM
*Font Oklahoma-BoldOblique: Standard "(001.005)" Standard ROM
*Font Utah: Standard "(001.005)" Standard ROM
*Font Utah-Bold: Standard "(001.005)" Standard ROM
*Font Utah-Oblique: Standard "(001.005)" Standard ROM
*Font Utah-BoldOblique: Standard "(001.005)" Standard ROM
*Font UtahCondensed: Standard "(001.005)" Standard ROM
*Font UtahCondensed-Bold: Standard "(001.005)" Standard ROM
*Font UtahCondensed-Oblique: Standard "(001.004)" Standard ROM
*Font UtahCondensed-BoldOblique: Standard "(001.005)" Standard ROM
*Font BermudaScript: Standard "(001.005)" Standard ROM
*Font Germany: Standard "(001.005)" Standard ROM
*Font SanDiego: Standard "(001.005)" Standard ROM
*Font US-Roman: Standard "(001.005)" Standard ROM
*?FontQuery: "
save
count 1 gt
{exch dup dup
=string cvs (/) print print (:) print
FontDirectory exch known
{pop(Yes)}
{(fonts/)AppendName exch pop mark exch
{}=string filenameforall counttomark
0 gt
{cleartomark(Yes)}
{cleartomark(No)}ifelse
}ifelse
=
}if
(*) = flush
restore
"
*End
*?FontList: "
save
FontDirectory{pop ==}forall
(fonts/*)
{dup length 6 sub 6 exch getinterval cvn ==
}=string filenameforall
(*) = flush
restore
"
*End

View file

@ -1,6 +1,5 @@
{
pkgs,
config,
nixosConfig,
nix-colors,
...
@ -47,7 +46,6 @@ in {
./zathura.nix
./taskwarrior.nix
./scarlett-solo.nix
./kakoune.nix
./helix.nix
./mpv.nix
./broot.nix
@ -87,7 +85,7 @@ in {
(fixGdk "Discord" discord)
(fixGdk "losslesscut" losslesscut-bin)
(fixGdk "skypeforlinux" skypeforlinux)
(pkgs.callPackage ../../pkgs/2i-emulator.nix {})
pkgs."2i-emulator"
(fixElectron "mattermost-desktop" mattermost-desktop)
colmena
feh
@ -102,7 +100,6 @@ in {
kbdlight
libnotify
libreoffice
logisim
mensa
nickel
patchelf
@ -114,8 +111,6 @@ in {
pulseeffects-pw
python3
qt5ct
qucs
qucs-s
rtorrent
screenfetch
sshfs
@ -131,7 +126,6 @@ in {
]);
sessionVariables = {
LEDGER_FILE = "/home/${config.home.username}/ledger/current.journal";
MOZ_USE_XINPUT2 = "1";
};

View file

@ -1,333 +0,0 @@
{
pkgs,
lib,
config,
...
}: let
kakBin = "${pkgs.kakoune}/bin/kak";
configDir = "~/.config/kak";
# === Configuration for kakoune plugins ===
pluginConfigs = with pkgs.kakounePlugins; [
{
# FZF for kakoune
pkg = fzf-kak;
mappings = [
{
docstring = "FZF mode";
mode = "user";
key = "f";
effect = ":fzf-mode<ret>";
}
];
hooks = [
{
# Change fzf settings before first use
name = "ModuleLoaded";
option = "fzf";
commands = ''
set-option global fzf_use_main_selection false
'';
}
{
# Change fzf-grep settings before first use
name = "ModuleLoaded";
option = "fzf-grep";
commands = ''
set-option global fzf_grep_command 'rg'
set-option global fzf_grep_preview_command 'bat'
'';
}
{
# Change fzf-file settings before first use
name = "ModuleLoaded";
option = "fzf-file";
commands = ''
set-option global fzf_file_command "fd"
set-option global fzf_highlight_command "bat"
'';
}
];
}
{
# Extra filetypes, mainly for vuejs
pkg = pkgs.kakouneUtils.buildKakounePluginFrom2Nix {
pname = "kakoune-extra-filetypes";
version = "2021-03-16";
src = pkgs.fetchFromGitHub {
owner = "MalteT";
repo = "kakoune-extra-filetypes";
rev = "0e5f2983f4bc7620c38f7a6cea55df3525644ed6";
sha256 = "B5h5COzMVeETi/AHgVSgV0hU6F8ouT86fV1Z7FZ2dbo=";
};
meta.homepage = "https://github.com/kakoune-editor/kakoune-extra-filetypes/";
};
mappings = [];
hooks = [];
}
{
# Languange Server Config
pkg = kak-lsp;
config = ''
eval %sh{kak-lsp --kakoune -s $kak_session}
hook global WinSetOption filetype=rust %{
hook window -group rust-inlay-hints BufReload .* rust-analyzer-inlay-hints
hook window -group rust-inlay-hints NormalIdle .* rust-analyzer-inlay-hints
hook window -group rust-inlay-hints InsertIdle .* rust-analyzer-inlay-hints
hook -once -always window WinSetOption filetype=.* %{
remove-hooks window rust-inlay-hints
}
}
'';
mappings = [
{
# Enter LSP Usermode
docstring = "LSP mode";
mode = "user";
key = "l";
effect = ":enter-user-mode lsp<ret>";
}
{
# Next placeholder in template
docstring = "Select next snippet placeholder";
mode = "insert";
key = "<tab>";
effect = "<a-;>:try lsp-snippets-select-next-placeholders catch %{ execute-keys -with-hooks <lt>tab> }<ret>";
}
];
hooks = [
{
# Start kak-lsp for specific windows
name = "WinSetOption";
commands = "lsp-enable-window";
option = "filetype=(rust|nix|python|latex|typescript|javascript|vuejs)";
}
];
}
];
# === Additional mappings for kakoune ===
additionalMappings = [
{
# Toggle whitespace highlighter
docstring = "Toggle whitespace";
mode = "user";
key = "w";
effect = ":togglewhitespace<ret>";
}
];
# === Light/Dark mode ===
lightModeConfig = config.myLib.mkKakouneTheme config.colorsLight;
darkModeConfig = config.myLib.mkKakouneTheme config.colorsDark;
currentThemeName = "current-theme";
installTheme = file: ''
ln -sf ${file} ${configDir}/colors/${currentThemeName}.kak
'';
# === Additional configuration for kakoune ===
additionalConfig = ''
add-highlighter global/ number-lines -relative
add-highlighter global/ wrap -word -indent
add-highlighter global/ regex '\h*(//|#|;|%)\h*(TODO:|FIXME:)([^\n]*)' 2:black,bright-red+Fb 3:default+b
# Highlighter for headers in the comments
add-highlighter global/ regex '^\h*(//|#|;|%)\h*=== ([^\n]+) ===' 2:yellow+bf
# Do something about tabs..
map global insert <tab> ' '
hook global BufSetOption filetype=nix %{
map buffer insert <tab> ' '
}
set-option global tabstop 4
# Disable info boxes
set-option global autoinfo onkey
set-option global startup_info_version 20211107
# Toggle whitespaces!
declare-option -docstring "Whether whitespaces are visible" bool whitespacesshown
define-command -docstring "Toggle whitespace highlighter" togglewhitespace %{
execute-keys %sh{
if [ $kak_opt_whitespacesshown = "true" ]; then
printf ':remove-highlighter buffer/whitespace<ret>'
printf ':set-option buffer whitespacesshown false<ret>'
else
printf ':add-highlighter buffer/whitespace show-whitespaces<ret>'
printf ':set-option buffer whitespacesshown true<ret>'
fi
}
}
# Initialize theme
colorscheme ${currentThemeName}
'';
# === Configuration for kakoune LSP ===
kakLspConfigGen = pkgs.formats.toml {};
kakLspConfig = {
language = {
latex = {
command = "${pkgs.texlab}/bin/texlab";
filetypes = ["latex"];
roots = [".git" ".hg"];
settings = {
texlab = {
forwardSearch = {
args = [
"%p"
"--synctex-forward"
"%l:1:%f"
"--synctex-editor-command"
''
sh -c '
echo "
evaluate-commands -client $kak_client %{
evaluate-commands -try-client %opt{jumpclient} %{
edit -- %{input} %{line}
}
}
" | kak -p $kak_session
'
''
];
executable = "${pkgs.zathura}/bin/zathura";
};
};
};
settings_section = "texlab";
};
nix = {
command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
filetypes = ["nix"];
roots = ["flake.nix" "shell.nix" ".git" ".hg"];
};
python = {
command = "${pkgs.python3.pkgs.python-lsp-server}/bin/pylsp";
filetypes = ["python"];
roots = ["requirements.txt" "setup.py" ".git" ".hg"];
settings.pylsp.pylsp.configurationSources = ["flake8"];
settings_section = "pylsp";
};
rust = {
command = "${pkgs.rust-analyzer}/bin/rust-analyzer";
filetypes = ["rust"];
roots = ["Cargo.toml"];
settings = {
rust-analyzer = {
cargo = {loadOutDirsFromCheck = true;};
hoverActions = {enable = true;};
procMacro = {enable = true;};
};
};
settings_section = "rust-analyzer";
};
typescript = {
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
args = ["--stdio" "--tsserver-path=${pkgs.nodePackages.typescript}/lib/node_modules/typescript/lib"];
filetypes = ["typescript" "javascript"];
roots = ["package.json" "tsconfig.json" ".git" ".hg"];
};
vuejs = {
args = ["--stdio"];
command = "${pkgs.nodePackages.vls}/bin/vls";
filetypes = ["vuejs"];
roots = ["package.json" "tsconfig.json" ".git" ".hg"];
};
};
semantic_tokens = let
mkToken = {
token,
face ? null,
modifiers ? [],
}: {
inherit token modifiers;
face =
if face != null
then face
else token;
};
in [
(mkToken {token = "comment";})
(mkToken {token = "function";})
(mkToken {token = "keyword";})
(mkToken {token = "operator";})
(mkToken {token = "string";})
(mkToken {token = "type";})
(mkToken {token = "variable";})
{
face = "module";
token = "namespace";
}
{
face = "documentation";
modifiers = ["documentation"];
token = "comment";
}
{
face = "default+d";
modifiers = ["readonly"];
token = "variable";
}
{
face = "default+d";
modifiers = ["constant"];
token = "variable";
}
];
};
selectOr = attr: default: map (conf: conf.${attr} or default) pluginConfigs;
selectList = attr: lib.flatten (selectOr attr []);
in {
programs.kakoune = {
enable = true;
config = {
ui.enableMouse = true;
ui.assistant = "none";
showMatching = true;
hooks = selectList "hooks";
keyMappings = (selectList "mappings") ++ additionalMappings;
};
extraConfig = (toString (selectOr "config" "")) + additionalConfig;
plugins = map (conf: conf.pkg) pluginConfigs;
};
# home.sessionVariables = {
# EDITOR = kakBin;
# VISUAL = "${pkgs.kitty}/bin/kitty ${kakBin}";
# };
xdg.configFile."kak-lsp/kak-lsp.toml".source = kakLspConfigGen.generate "kak-lsp.toml" kakLspConfig;
services.darkman.scripts."kakoune.sh" = {
onLight = pkgs.writeScript "kakoune-light" ''
#!${pkgs.runtimeShell}
${installTheme lightModeConfig}
for id in $(${kakBin} -l); do
echo 'colorscheme ${currentThemeName}' | ${kakBin} -p $id
done
'';
onDark = pkgs.writeScript "kakoune-dark" ''
#!${pkgs.runtimeShell}
${installTheme darkModeConfig}
for id in $(${kakBin} -l); do
echo 'colorscheme ${currentThemeName}' | ${kakBin} -p $id
done
'';
initialize = pkgs.writeScript "kakoune-initialize" ''
# Create the folder for custom themes
mkdir -p ${configDir}/colors
if [[ ! -e ${configDir}/colors/${currentThemeName} ]]; then
${installTheme lightModeConfig}
fi
'';
};
}

View file

@ -143,7 +143,7 @@
[general]
default_action = list
editor = kak
editor = hx
merge_editor = vimdiff
[contact table]

View file

@ -1,6 +1,5 @@
{pkgs, ...}: {
home.packages = with pkgs; [
(pkgs.callPackage ../../pkgs/rip.nix {})
bottom
fd
fishPlugins.done

View file

@ -16,11 +16,11 @@
timewarriorExtensions = pkgs.stdenvNoCC.mkDerivation {
name = "timewarrior-totals";
version = "v1.4.3";
src = pkgs.fetchFromGitHub {
src = pkgs.fetchFromGitHub rec {
owner = "GothenburgBitFactory";
repo = "timewarrior";
rev = "v1.4.3";
sha256 = "+HsUiU287bWZ5Ytl+N5i+STuG9YlqlaKWxd69y0PRds=";
sha256 = nixosConfig.state.hashes.timewarrior."${rev}";
};
buildInputs = [pkgs.coreutils];
propagatedBuildInputs = [pythonWithLibs];

View file

@ -1,4 +1,5 @@
{
nixosConfig,
pkgs,
lib,
...
@ -6,7 +7,7 @@
inherit (lib.hm.gvariant) mkTuple;
bg = pkgs.fetchurl {
url = "https://images.pexels.com/photos/2559941/pexels-photo-2559941.jpeg";
sha256 = "sha256-Su2UwFpZKj5sa80UrcDSX9O2GuVI6XR2gSLpp4gJZP0=";
hash = nixosConfig.state.hashes.pexel-bg.hash;
};
in {
imports = [../modules/restic-backup.nix];

View file

@ -11,7 +11,7 @@ in {
package = lib.mkOption {
description = "Boilr package to use";
default = pkgs.callPackage ../../pkgs/boilr.nix {};
default = pkgs.boilr;
type = lib.types.package;
};

View file

@ -173,54 +173,6 @@ in {
set recolor-darkcolor "${color "base06"}"
'';
mkKakouneTheme = colorscheme: let
color = name: "rgb:${colorscheme.colors.${name}}";
in
pkgs.writeText "kakoune-theme-${colorscheme.slug}" ''
# https://github.com/leira/base16-kakoune/blob/2f93127b420328d9c11ffa1ffa1837ac009a6f7d/templates/default.mustache
## code
face global value ${color "base09"}
face global type ${color "base0A"}+b
face global identifier ${color "base08"}
face global string ${color "base0B"}
face global keyword ${color "base0E"}+b
face global operator ${color "base05"}
face global attribute ${color "base0C"}
face global comment ${color "base03"}
face global meta ${color "base0D"}
face global builtin ${color "base0D"}+b
## markup
face global title ${color "base0D"}+b
face global header ${color "base0D"}+b
face global bold ${color "base0A"}+b
face global italic ${color "base0E"}
face global mono ${color "base0B"}
face global block ${color "base0C"}
face global link ${color "base09"}
face global bullet ${color "base08"}
face global list ${color "base08"}
## builtin
face global Default ${color "base05"},${color "base00"}
face global PrimarySelection ${color "base06"},${color "base0D"}
face global SecondarySelection ${color "base06"},${color "base0F"}
face global PrimaryCursor ${color "base00"},${color "base05"}
face global SecondaryCursor ${color "base06"},${color "base0C"}
face global LineNumbers ${color "base02"},${color "base00"}
face global LineNumberCursor ${color "base0A"},${color "base00"}
face global MenuForeground ${color "base05"},${color "base02"}
face global MenuBackground ${color "base05"},${color "base01"}
face global MenuInfo ${color "base02"}
face global Information Default
face global Error ${color "base00"},${color "base08"}
face global StatusLine ${color "base04"},${color "base01"}
face global StatusLineMode ${color "base0B"}
face global StatusLineInfo ${color "base0D"}
face global StatusLineValue ${color "base0C"}
face global StatusCursor ${color "base00"},${color "base05"}
face global Prompt ${color "base0D"},${color "base01"}
face global MatchingChar ${color "base06"},${color "base02"}+b
face global BufferPadding ${color "base03"},${color "base00"}
'';
# https://github.com/mnussbaum/base16-waybar
mkCSSVariables = colorscheme: let
color = name: "#${colorscheme.colors.${name}}";