Initial import
This commit is contained in:
commit
563eed2cc7
9 changed files with 1790 additions and 0 deletions
251
firefox.nix
Normal file
251
firefox.nix
Normal file
|
@ -0,0 +1,251 @@
|
||||||
|
{ config, lib, pkgs, osConfig, ... }:
|
||||||
|
let
|
||||||
|
inherit (osConfig) hardware;
|
||||||
|
|
||||||
|
graphical =
|
||||||
|
if lib.versionAtLeast osConfig.system.stateVersion "24.11"
|
||||||
|
then hardware.graphic.enable
|
||||||
|
else hardware.opengl.enable;
|
||||||
|
|
||||||
|
firefox-csshacks = pkgs.fetchFromGitHub {
|
||||||
|
owner = "MrOtherGuy";
|
||||||
|
repo = "firefox-csshacks";
|
||||||
|
rev = "7eca4b1050c4065130a2cf696302b4ef5d88d932";
|
||||||
|
sparseCheckout = [ "!/*" "/chrome" "/content" ];
|
||||||
|
hash = "sha256-rk0jC5AMw41xt5yItY7CAxuYAFhoe5Jy2tvwgh59cPI=";
|
||||||
|
};
|
||||||
|
in lib.mkIf graphical {
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.firefox;
|
||||||
|
profiles = let
|
||||||
|
extensions = with config.nur.repos.rycee.firefox-addons; [
|
||||||
|
clearurls
|
||||||
|
consent-o-matic
|
||||||
|
decentraleyes
|
||||||
|
keepassxc-browser
|
||||||
|
multi-account-containers
|
||||||
|
ublock-origin
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
# use OS locale
|
||||||
|
"intl.regional_prefs.use_os_locales" = true;
|
||||||
|
|
||||||
|
# localisation
|
||||||
|
"intl.accept_languages" = "en-gb,en,de,fr,es-es,es,pt,ja";
|
||||||
|
"intl.locale.requested" = "en-GB,en,de,fr,es-ES,es,pt,ja";
|
||||||
|
|
||||||
|
# use OS resolver
|
||||||
|
"network.trr.mode" = 5;
|
||||||
|
|
||||||
|
# force HTTPS
|
||||||
|
"dom.security.https_only_mode" = true;
|
||||||
|
"dom.security.https_only_mode_ever_enabled" = true;
|
||||||
|
|
||||||
|
# enable EME
|
||||||
|
"media.eme.enabled" = true;
|
||||||
|
|
||||||
|
# founts
|
||||||
|
"font.default.x-unicode" = "sans-serif";
|
||||||
|
"font.default.x-western" = "sans-serif";
|
||||||
|
"font.name.sans-serif.x-unicode" = "Lato";
|
||||||
|
"font.name.sans-serif.x-western" = "Lato";
|
||||||
|
"font.name.monospace.x-unicode" = "Fira Code";
|
||||||
|
"font.name.monospace.x-western" = "Fira Code";
|
||||||
|
|
||||||
|
# hardware acceleration
|
||||||
|
"gfx.webrender.all" = true;
|
||||||
|
"layers.acceleration.force-enabled" = true;
|
||||||
|
"media.ffmpeg.vaapi.enabled" = true;
|
||||||
|
|
||||||
|
# always ask for download location
|
||||||
|
"browser.download.useDownloadDir" = false;
|
||||||
|
|
||||||
|
# disable firefox tab
|
||||||
|
"browser.tabs.firefox-view" = false;
|
||||||
|
|
||||||
|
# disable firefox intro tab
|
||||||
|
"browser.startup.homepage_override.mstone" = "ignore";
|
||||||
|
|
||||||
|
# disable default browser check
|
||||||
|
"browser.shell.checkDefaultBrowser" = false;
|
||||||
|
|
||||||
|
# private containor for new tab page thumbnails
|
||||||
|
"privacy.usercontext.about_newtab_segregation.enabled" = true;
|
||||||
|
|
||||||
|
# disable Beacons API
|
||||||
|
"beacon.enabled" = false;
|
||||||
|
|
||||||
|
# disable pings
|
||||||
|
"browser.send_pings" = false;
|
||||||
|
|
||||||
|
# strip query parameters
|
||||||
|
"privacy.query_stripping" = true;
|
||||||
|
|
||||||
|
# disable access to device sensors
|
||||||
|
"device.sensors.enabled" = false;
|
||||||
|
"dom.battery.enabled" = false;
|
||||||
|
|
||||||
|
# disable media auto‐play
|
||||||
|
"media.autoplay.enabled" = false;
|
||||||
|
|
||||||
|
# block third‐party cookies
|
||||||
|
"network.cookie.cookieBehavior" = 1;
|
||||||
|
|
||||||
|
# spoof referrer header
|
||||||
|
"network.http.referer.spoofSource" = true;
|
||||||
|
|
||||||
|
# isolate all browser identifier sources
|
||||||
|
"privacy.firstparty.isolate" = true;
|
||||||
|
|
||||||
|
# resist fingerprinting
|
||||||
|
#"privacy.resistFingerprinting" = true;
|
||||||
|
|
||||||
|
# enable built‐in tracking protection
|
||||||
|
"privacy.trackingprotection.enabled" = true;
|
||||||
|
"privacy.trackingprotection.emailtracking.enabled" = true;
|
||||||
|
"privacy.trackingprotection.socialtracking.enabled" = true;
|
||||||
|
|
||||||
|
# disable data sharing
|
||||||
|
"app.normandy.enabled" = false;
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"datareporting.healthreport.uploadEnabled" = false;
|
||||||
|
|
||||||
|
# disable safebrowsing
|
||||||
|
"browser.safebrowsing.downloads.enabled" = false;
|
||||||
|
"browser.safebrowsing.malware.enabled" = false;
|
||||||
|
"browser.safebrowsing.phishing.enabled" = false;
|
||||||
|
|
||||||
|
# disable firefox account
|
||||||
|
"identity.fxaccounts.enabled" = false;
|
||||||
|
|
||||||
|
# disable sponsored items
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
"browser.newtabpage.enhanced" = false;
|
||||||
|
|
||||||
|
# disable Pocket
|
||||||
|
"extensions.pocket.enabled" = false;
|
||||||
|
|
||||||
|
# disable crash reporting
|
||||||
|
"browser.tabs.crashReporting.sendReport" = false;
|
||||||
|
"breakpad.reportURL" = "";
|
||||||
|
|
||||||
|
# disable accessibility services
|
||||||
|
"accessibility.force_disabled" = true;
|
||||||
|
|
||||||
|
# disable password auto‐fill
|
||||||
|
"signon.autofillForms" = false;
|
||||||
|
|
||||||
|
# enable user profile customisation
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
|
};
|
||||||
|
userChrome = lib.concatMapStrings (css:
|
||||||
|
"@import url('${firefox-csshacks}/chrome/${css}.css');\n"
|
||||||
|
) [
|
||||||
|
"hide_tabs_with_one_tab"
|
||||||
|
"autohide_bookmarks_and_main_toolbars"
|
||||||
|
];
|
||||||
|
search = {
|
||||||
|
default = "Google Search";
|
||||||
|
force = true;
|
||||||
|
engines = {
|
||||||
|
"Google Search" = {
|
||||||
|
urls = [{ template = "https://www.google.com/search?q={searchTerms}"; }];
|
||||||
|
definedAliases = [ "g" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Nix Packages" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://search.nixos.org/packages";
|
||||||
|
params = [
|
||||||
|
{ name = "channel"; value = "unstable"; }
|
||||||
|
{ name = "type"; value = "packages"; }
|
||||||
|
{ name = "query"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
|
||||||
|
definedAliases = [ "np" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Gentoo Packages" = {
|
||||||
|
urls = [{ template = "https://packages.gentoo.org/packages/search?q={searchTerms}"; }];
|
||||||
|
definedAliases = [ "gp" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Alpine Packages" = {
|
||||||
|
urls = [{ template = "https://pkgs.alpinelinux.org/packages?name={searchTerms}"; }];
|
||||||
|
definedAliases = [ "ap" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"NixOS Wiki" = {
|
||||||
|
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
|
||||||
|
definedAliases = [ "nw" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Wikipedia (eng)" = {
|
||||||
|
urls = [{ template = "https://en.wikipedia.org/wiki/Special:Search?search={searchTerms}"; }];
|
||||||
|
definedAliases = [ "w" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Wikipedia (deu)" = {
|
||||||
|
urls = [{ template = "https://de.wikipedia.org/wiki/Spezial:Suche?search={searchTerms}"; }];
|
||||||
|
definedAliases = [ "wd" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Wiktionary (eng)" = {
|
||||||
|
urls = [{ template = "https://en.wiktionary.org/wiki/Special:Search?search={searchTerms}"; }];
|
||||||
|
definedAliases = [ "k" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Wiktionary (deu)" = {
|
||||||
|
urls = [{ template = "https://de.wiktionary.org/wiki/Spezial:Suche?search={searchTerms}"; }];
|
||||||
|
definedAliases = [ "kd" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Linguee (en‐de)" = {
|
||||||
|
urls = [{ template = "https://www.linguee.com/english-german/search?query={searchTerms}"; }];
|
||||||
|
definedAliases = [ "en" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Linguee (en‐fr)" = {
|
||||||
|
urls = [{ template = "https://www.linguee.com/english-french/search?query={searchTerms}"; }];
|
||||||
|
definedAliases = [ "fr" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Linguee (en‐es)" = {
|
||||||
|
urls = [{ template = "https://www.linguee.com/english-spanish/search?query={searchTerms}"; }];
|
||||||
|
definedAliases = [ "es" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Linguee (en‐pt)" = {
|
||||||
|
urls = [{ template = "https://www.linguee.com/english-portuguese/search?query={searchTerms}"; }];
|
||||||
|
definedAliases = [ "pt" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Jisho" = {
|
||||||
|
urls = [{ template = "https://jisho.org/search/{searchTerms}"; }];
|
||||||
|
definedAliases = [ "ja" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"DeepL" = {
|
||||||
|
urls = [{ template = "https://www.deepl.com/translator#en//{searchTerms}"; }];
|
||||||
|
definedAliases = [ "dpl" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
default = {
|
||||||
|
inherit extensions settings userChrome search;
|
||||||
|
isDefault = true;
|
||||||
|
};
|
||||||
|
sneaky = {
|
||||||
|
inherit extensions settings userChrome search;
|
||||||
|
id = 1;
|
||||||
|
};
|
||||||
|
vanilla = {
|
||||||
|
inherit userChrome search;
|
||||||
|
id = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
314
flake.lock
Normal file
314
flake.lock
Normal file
|
@ -0,0 +1,314 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"base16": {
|
||||||
|
"inputs": {
|
||||||
|
"fromYaml": "fromYaml"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708890466,
|
||||||
|
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"rev": "665b3c6748534eb766c777298721cece9453fdae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-fish": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1622559957,
|
||||||
|
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696725948,
|
||||||
|
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-foot",
|
||||||
|
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-foot",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-helix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720809814,
|
||||||
|
"narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"rev": "34f41987bec14c0f3f6b2155c19787b1f6489625",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1665001328,
|
||||||
|
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
|
||||||
|
"owner": "kdrag0n",
|
||||||
|
"repo": "base16-kitty",
|
||||||
|
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kdrag0n",
|
||||||
|
"repo": "base16-kitty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696725902,
|
||||||
|
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-tmux",
|
||||||
|
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1716150083,
|
||||||
|
"narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"en_EU": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722354766,
|
||||||
|
"narHash": "sha256-eKlTozf7vrmsNGwNFWOn+epavcvCyRqK94ZgV9vKe1A=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "733ceccbfc70345610573334612e6589688d4f5d",
|
||||||
|
"revCount": 5,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://woof.rip/mikael/en_EU.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://woof.rip/mikael/en_EU.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1673956053,
|
||||||
|
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fromYaml": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689549921,
|
||||||
|
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gnome-shell": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1713702291,
|
||||||
|
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
|
||||||
|
"owner": "GNOME",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "GNOME",
|
||||||
|
"ref": "46.1",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722321190,
|
||||||
|
"narHash": "sha256-WeVWVRqkgrbLzmk6FfJoloJ7Xe7HWD27Pv950IUG2kI=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "4fcd54df7cbb1d79cbe81209909ee8514d6b17a4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-index-database": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722136042,
|
||||||
|
"narHash": "sha256-x3FmT4QSyK28itMiR5zfYhUrG5nY+2dv+AIcKfmSp5A=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "c0ca47e8523b578464014961059999d8eddd4aae",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722141560,
|
||||||
|
"narHash": "sha256-Ul3rIdesWaiW56PS/Ak3UlJdkwBrD4UcagCmXZR9Z7Y=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "038fb464fcfa79b4f08131b07f2d8c9a6bcc4160",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722141560,
|
||||||
|
"narHash": "sha256-Ul3rIdesWaiW56PS/Ak3UlJdkwBrD4UcagCmXZR9Z7Y=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "038fb464fcfa79b4f08131b07f2d8c9a6bcc4160",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722350417,
|
||||||
|
"narHash": "sha256-1MNpE3S9W7F1+2wg1WonX1+55c4j0WKFRPYq8JD7WxU=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"rev": "51808228e58e636d4b59228ed3881f7f971e7bf1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"en_EU": "en_EU",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nix-index-database": "nix-index-database",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nur": "nur",
|
||||||
|
"stylix": "stylix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"base16-fish": "base16-fish",
|
||||||
|
"base16-foot": "base16-foot",
|
||||||
|
"base16-helix": "base16-helix",
|
||||||
|
"base16-kitty": "base16-kitty",
|
||||||
|
"base16-tmux": "base16-tmux",
|
||||||
|
"base16-vim": "base16-vim",
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"gnome-shell": "gnome-shell",
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722295291,
|
||||||
|
"narHash": "sha256-3XpT9GMw50NCGT1Gd2YAwEjrEcFtDqnuQ7sRUcuU/Pc=",
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"rev": "feb2973dfa8232c07efbd2b48f11a5cfa2276570",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
29
flake.nix
Normal file
29
flake.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||||
|
nur.url = "github:nix-community/NUR";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
en_EU.url = "git+https://woof.rip/mikael/en_EU.git";
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
url = "github:danth/stylix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-index-database = {
|
||||||
|
url = "github:nix-community/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, ... }@inputs: {
|
||||||
|
nixosModules.default = import ./module.nix inputs;
|
||||||
|
homeConfigurations.default = import ./home.nix inputs;
|
||||||
|
};
|
||||||
|
}
|
73
greedy.xkb
Normal file
73
greedy.xkb
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
xkb_symbols "greedy" {
|
||||||
|
name[Group1]= "Greedy";
|
||||||
|
|
||||||
|
// Modifier keys
|
||||||
|
include "ctrl(nocaps)"
|
||||||
|
include "altwin(alt_super_win)"
|
||||||
|
include "level3(ralt_switch)"
|
||||||
|
include "level5(rctrl_switch)"
|
||||||
|
|
||||||
|
include "compose(lwin-altgr)"
|
||||||
|
include "compose(102)"
|
||||||
|
include "nbsp(level3n)"
|
||||||
|
include "keypad(future)"
|
||||||
|
|
||||||
|
key <TAB> { [ Escape ] };
|
||||||
|
key <ESC> { [ Tab ] };
|
||||||
|
|
||||||
|
key <TLDE> { [ dollar, asciitilde, EuroSign, dead_tilde ] };
|
||||||
|
key <AE01> { [ ampersand, percent, dead_breve, dead_caron ] };
|
||||||
|
key <AE02> { [ bracketleft, 7, 0x100201E, 0x100201A ] };
|
||||||
|
key <AE03> { [ braceleft, 5, 0x100201C, 0x1002018 ] };
|
||||||
|
key <AE04> { [ braceright, 3, 0x100201D, 0x1002019 ] };
|
||||||
|
key <AE05> { [ parenleft, 1, 0x1002039, NoSymbol ] };
|
||||||
|
key <AE06> { [ equal, 9, 0x1002260, NoSymbol ] };
|
||||||
|
key <AE07> { [ asterisk, 0, 0x10022C5, NoSymbol ] };
|
||||||
|
key <AE08> { [ parenright, 2, 0x100203A, NoSymbol ] };
|
||||||
|
key <AE09> { [ plus, 4, plusminus, NoSymbol ] };
|
||||||
|
key <AE10> { [ bracketright, 6, endash, emdash ] };
|
||||||
|
key <AE11> { [ exclam, 8, exclamdown, infinity ] };
|
||||||
|
key <AE12> { [ numbersign, grave, numerosign, dead_grave ] };
|
||||||
|
|
||||||
|
key <AD01> { [ k, K, odiaeresis, Odiaeresis ] };
|
||||||
|
key <AD02> { [ comma, less, dead_cedilla, guillemotleft ] };
|
||||||
|
key <AD03> { [ u, U, oacute, Oacute ] };
|
||||||
|
key <AD04> { [ y, Y, udiaeresis, Udiaeresis ] };
|
||||||
|
key <AD05> { [ p, P, NoSymbol, NoSymbol ] };
|
||||||
|
key <AD06> { [ w, W, NoSymbol, NoSymbol ] };
|
||||||
|
key <AD07> { [ l, L, NoSymbol, NoSymbol ] };
|
||||||
|
key <AD08> { [ m, M, mu, NoSymbol ] };
|
||||||
|
key <AD09> { [ f, F, NoSymbol, NoSymbol ] };
|
||||||
|
key <AD10> { [ c, C, copyright, NoSymbol ] };
|
||||||
|
key <AD11> { [ slash, question, division, questiondown ] };
|
||||||
|
key <AD12> { [ at, asciicircum, 0x100203D, dead_circumflex ] };
|
||||||
|
|
||||||
|
key <AC01> { [ o, O, oacute, Oacute ] };
|
||||||
|
key <AC02> { [ a, A, aacute, Aacute ] };
|
||||||
|
key <AC03> { [ e, E, eacute, Eacute ] };
|
||||||
|
key <AC04> { [ i, I, iacute, Iacute ] };
|
||||||
|
key <AC05> { [ d, D, eth, ETH ] };
|
||||||
|
key <AC06> { [ r, R, NoSymbol, NoSymbol ] };
|
||||||
|
key <AC07> { [ n, N, ntilde, Ntilde ] };
|
||||||
|
key <AC08> { [ t, T, thorn, Thorn ] };
|
||||||
|
key <AC09> { [ h, H, NoSymbol, NoSymbol ] };
|
||||||
|
key <AC10> { [ s, S, ssharp, section ] };
|
||||||
|
key <AC11> { [ minus, underscore, 0x1002010, dead_macron ] };
|
||||||
|
key <BKSL> { [ backslash, bar, NoSymbol, NoSymbol ] };
|
||||||
|
|
||||||
|
key <AB01> { [ q, Q, adiaeresis, Adiaeresis ] };
|
||||||
|
key <AB02> { [ period, greater, ellipsis, guillemotright ] };
|
||||||
|
key <AB03> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
|
||||||
|
key <AB04> { [ semicolon, colon, periodcentered, NoSymbol ] };
|
||||||
|
key <AB05> { [ z, Z, NoSymbol, NoSymbol ] };
|
||||||
|
key <AB06> { [ x, X, multiply, NoSymbol ] };
|
||||||
|
key <AB07> { [ v, V, NoSymbol, NoSymbol ] };
|
||||||
|
key <AB08> { [ g, G, NoSymbol, NoSymbol ] };
|
||||||
|
key <AB09> { [ b, B, NoSymbol, NoSymbol ] };
|
||||||
|
key <AB10> { [ j, J, NoSymbol, NoSymbol ] };
|
||||||
|
|
||||||
|
key <UP> { [ Up, NoSymbol, uparrow, 0x10021D1 ] };
|
||||||
|
key <LEFT> { [ Left, NoSymbol, leftarrow, 0x10021D0 ] };
|
||||||
|
key <DOWN> { [ Down, NoSymbol, downarrow, 0x10021D3 ] };
|
||||||
|
key <RGHT> { [ Right, NoSymbol, rightarrow, 0x10021D2 ] };
|
||||||
|
};
|
337
home.nix
Normal file
337
home.nix
Normal file
|
@ -0,0 +1,337 @@
|
||||||
|
inputs: { config, lib, pkgs, osConfig, ... }:
|
||||||
|
let
|
||||||
|
inherit (osConfig) hardware;
|
||||||
|
|
||||||
|
graphical =
|
||||||
|
if lib.versionAtLeast osConfig.system.stateVersion "24.11"
|
||||||
|
then hardware.graphic.enable
|
||||||
|
else hardware.opengl.enable;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
inputs.nur.hmModules.nur
|
||||||
|
inputs.en_EU.homeModules.default
|
||||||
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
|
inputs.stylix.homeManagerModules.stylix
|
||||||
|
|
||||||
|
./firefox.nix
|
||||||
|
./wayland.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.stateVersion = "24.11";
|
||||||
|
home.enableNixpkgsReleaseCheck = false;
|
||||||
|
|
||||||
|
home.activation = {
|
||||||
|
fish = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||||
|
run ${lib.getExe config.programs.fish.package} -c 'set -U fish_greeting'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Terminfo
|
||||||
|
kitty.terminfo
|
||||||
|
|
||||||
|
# Core utilities
|
||||||
|
(lib.meta.setPrio 0 uutils-coreutils-noprefix)
|
||||||
|
|
||||||
|
# Text manipulation
|
||||||
|
delta
|
||||||
|
sd
|
||||||
|
skim
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
dogdns
|
||||||
|
whois
|
||||||
|
xh
|
||||||
|
|
||||||
|
# Filesystem
|
||||||
|
file
|
||||||
|
#xcp
|
||||||
|
|
||||||
|
# Development
|
||||||
|
pijul
|
||||||
|
|
||||||
|
# Calculator
|
||||||
|
fend
|
||||||
|
];
|
||||||
|
|
||||||
|
editorconfig = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
"*" = {
|
||||||
|
indent_style = "tab";
|
||||||
|
tab_width = 4;
|
||||||
|
end_of_line = "lf";
|
||||||
|
charset = "utf-8";
|
||||||
|
trim_trailing_whitespace = true;
|
||||||
|
insert_final_newline = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"*.nix" = {
|
||||||
|
indent_style = "space";
|
||||||
|
indent_size = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.shellAliases = {
|
||||||
|
cat = "${pkgs.libarchive}/bin/bsdcat";
|
||||||
|
icat = "kitten icat";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.preferXdgDirectories = true;
|
||||||
|
|
||||||
|
programs.aria2 = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
max-concurrent-downloads = 4;
|
||||||
|
max-connection-per-server = 2;
|
||||||
|
min-split-size = "16M";
|
||||||
|
remote-time = true;
|
||||||
|
split = 4;
|
||||||
|
http-accept-gzip = true;
|
||||||
|
max-overall-upload-limit = "256K";
|
||||||
|
dscp = 8;
|
||||||
|
enable-mmap = true;
|
||||||
|
file-allocation = "falloc";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.bat.enable = true;
|
||||||
|
|
||||||
|
programs.bottom = {
|
||||||
|
enable = true;
|
||||||
|
settings.flags = {
|
||||||
|
group = true;
|
||||||
|
battery = true;
|
||||||
|
color = "gruvbox";
|
||||||
|
mem_as_value = true;
|
||||||
|
network_use_binary_prefix = true;
|
||||||
|
network_use_bytes = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
icons = true;
|
||||||
|
git = true;
|
||||||
|
|
||||||
|
extraOptions = [
|
||||||
|
"--binary"
|
||||||
|
"--colour=automatic"
|
||||||
|
"--colour-scale=all"
|
||||||
|
"--colour-scale-mode=gradient"
|
||||||
|
"--group-directories-first"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fd.enable = true;
|
||||||
|
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
functions = {
|
||||||
|
fish_prompt = ''
|
||||||
|
set -l user_colour 'green'
|
||||||
|
if fish_is_root_user
|
||||||
|
set user_colour 'red'
|
||||||
|
end
|
||||||
|
|
||||||
|
echo -n -s (set_color $user_colour --bold) $USER@ (prompt_hostname) \
|
||||||
|
(set_color blue --bold) ' ' (prompt_pwd) ' ❯ ' (set_color normal)
|
||||||
|
'';
|
||||||
|
|
||||||
|
fish_right_prompt = ''
|
||||||
|
set -l st $status
|
||||||
|
|
||||||
|
if test $st -ne 0
|
||||||
|
set_color red --bold
|
||||||
|
printf "%s " (sysexit $st)
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
|
fish_title = "prompt_pwd";
|
||||||
|
|
||||||
|
sysexit = builtins.readFile ./sysexit.fish;
|
||||||
|
};
|
||||||
|
|
||||||
|
interactiveShellInit = ''
|
||||||
|
if type -q tabs
|
||||||
|
tabs -4
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
delta.enable = true;
|
||||||
|
|
||||||
|
userName = "Mikael Voss";
|
||||||
|
userEmail = "mvs@nyantec.com";
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
core = {
|
||||||
|
eol = "lf";
|
||||||
|
fsync = "committed";
|
||||||
|
};
|
||||||
|
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
pull.rebase = true;
|
||||||
|
push.autoSetupRemote = true;
|
||||||
|
rebase.autoStash = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gpg = {
|
||||||
|
enable = hardware.gpgSmartcards.enable;
|
||||||
|
scdaemonSettings.disable-ccid = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
settings = {
|
||||||
|
editor.auto-pairs = {
|
||||||
|
"“" = "”";
|
||||||
|
"‘" = "’";
|
||||||
|
"„" = "“";
|
||||||
|
"‚" = "‘";
|
||||||
|
};
|
||||||
|
|
||||||
|
editor.whitespace.render = {
|
||||||
|
nbsp = "all";
|
||||||
|
nnbsp = "all";
|
||||||
|
tab = "all";
|
||||||
|
};
|
||||||
|
|
||||||
|
editor.whitespace.characters = {
|
||||||
|
nbsp = "␣";
|
||||||
|
nnbsp = "⍽";
|
||||||
|
tab = "»";
|
||||||
|
tabpad = "·";
|
||||||
|
};
|
||||||
|
|
||||||
|
keys.normal = {
|
||||||
|
minus = "command_mode";
|
||||||
|
r = "move_char_left";
|
||||||
|
n = "move_visual_line_down";
|
||||||
|
t = "move_visual_line_up";
|
||||||
|
h = "move_char_right";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.jq.enable = true;
|
||||||
|
programs.man.generateCaches = osConfig.documentation.man.generateCaches;
|
||||||
|
programs.ripgrep.enable = true;
|
||||||
|
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
compression = true;
|
||||||
|
matchBlocks = {
|
||||||
|
"*.nyantec.com".user = "mvs";
|
||||||
|
"solitary.social" = {
|
||||||
|
user = "nil";
|
||||||
|
forwardAgent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
serverAliveInterval = 10;
|
||||||
|
serverAliveCountMax = 60;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.vim = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
background = "dark";
|
||||||
|
expandtab = false;
|
||||||
|
number = true;
|
||||||
|
shiftwidth = 4;
|
||||||
|
tabstop = 4;
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
" no Vi compatibility
|
||||||
|
set nocompatible
|
||||||
|
|
||||||
|
" Unicode support
|
||||||
|
set encoding=utf-8
|
||||||
|
|
||||||
|
" special characters
|
||||||
|
set list
|
||||||
|
set listchars=tab:»·,trail:·,extends:…
|
||||||
|
|
||||||
|
set ruler
|
||||||
|
|
||||||
|
" movement
|
||||||
|
noremap r h
|
||||||
|
noremap R H
|
||||||
|
noremap n j
|
||||||
|
noremap t k
|
||||||
|
noremap h l
|
||||||
|
noremap H L
|
||||||
|
|
||||||
|
" beginning of previous word
|
||||||
|
noremap p b
|
||||||
|
|
||||||
|
" end of word
|
||||||
|
noremap l e
|
||||||
|
noremap L E
|
||||||
|
|
||||||
|
" change one char
|
||||||
|
noremap X s
|
||||||
|
|
||||||
|
" repeat search
|
||||||
|
noremap ; n
|
||||||
|
noremap : N
|
||||||
|
|
||||||
|
" paste
|
||||||
|
noremap s p
|
||||||
|
noremap S P
|
||||||
|
|
||||||
|
" join lines
|
||||||
|
noremap N J
|
||||||
|
|
||||||
|
" change
|
||||||
|
noremap e c
|
||||||
|
noremap E C
|
||||||
|
|
||||||
|
" replace
|
||||||
|
noremap z r
|
||||||
|
noremap Z R
|
||||||
|
|
||||||
|
" inclusive jump
|
||||||
|
noremap m f
|
||||||
|
noremap M F
|
||||||
|
|
||||||
|
" exlusive jump
|
||||||
|
noremap f t
|
||||||
|
noremap F T
|
||||||
|
|
||||||
|
" command mode
|
||||||
|
noremap - :
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = hardware.gpgSmartcards.enable;
|
||||||
|
enableSshSupport = true;
|
||||||
|
pinentryPackage =
|
||||||
|
if graphical
|
||||||
|
then pkgs.pinentry-gtk2
|
||||||
|
else pkgs.pinentry-curses;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.userDirs =
|
||||||
|
let
|
||||||
|
home = config.home.homeDirectory;
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
desktop = "${home}/tmp";
|
||||||
|
documents = "${home}/var";
|
||||||
|
download = "${home}/tmp";
|
||||||
|
pictures = "${home}/img";
|
||||||
|
music = "${home}/msc";
|
||||||
|
publicShare = null;
|
||||||
|
templates = null;
|
||||||
|
videos = null;
|
||||||
|
};
|
||||||
|
}
|
30
module.nix
Normal file
30
module.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
inputs: user: { config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (config) hardware;
|
||||||
|
|
||||||
|
graphical =
|
||||||
|
if lib.versionAtLeast config.system.stateVersion "24.11"
|
||||||
|
then hardware.graphic.enable
|
||||||
|
else hardware.opengl.enable;
|
||||||
|
in {
|
||||||
|
imports = [ inputs.home-manager.nixosModules.home-manager ];
|
||||||
|
|
||||||
|
environment.etc."xkb/symbols/greedy" = lib.mkIf graphical
|
||||||
|
{ source = ./greedy.xkb; };
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useUserPackages = lib.mkDefault true;
|
||||||
|
useGlobalPkgs = lib.mkDefault true;
|
||||||
|
users.${user} = inputs.self.homeConfigurations.default;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
|
||||||
|
users.users.${user} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
shell = config.programs.fish.package;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGOTvXiNHTXq9wkcxdVOblHVyvcAaCfxmJp/CXI4rzMj"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
104
sysexit.fish
Normal file
104
sysexit.fish
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
if status is-interactive
|
||||||
|
function sysexit
|
||||||
|
switch $argv[1]
|
||||||
|
case 0
|
||||||
|
echo OK
|
||||||
|
case 64
|
||||||
|
echo USAGE
|
||||||
|
case 65
|
||||||
|
echo DATAERR
|
||||||
|
case 66
|
||||||
|
echo NOINPUT
|
||||||
|
case 67
|
||||||
|
echo NOUSER
|
||||||
|
case 68
|
||||||
|
echo NOHOST
|
||||||
|
case 69
|
||||||
|
echo UNAVAILABLE
|
||||||
|
case 70
|
||||||
|
echo SOFTWARE
|
||||||
|
case 71
|
||||||
|
echo OSERR
|
||||||
|
case 72
|
||||||
|
echo OSFILE
|
||||||
|
case 73
|
||||||
|
echo CANTCREAT
|
||||||
|
case 74
|
||||||
|
echo IOERR
|
||||||
|
case 75
|
||||||
|
echo TEMPFAIL
|
||||||
|
case 76
|
||||||
|
echo PROTOCOL
|
||||||
|
case 77
|
||||||
|
echo NOPERM
|
||||||
|
case 78
|
||||||
|
echo CONFIG
|
||||||
|
case 127
|
||||||
|
echo NOTFOUND
|
||||||
|
case 129
|
||||||
|
echo SIGHUP
|
||||||
|
case 130
|
||||||
|
echo SIGINT
|
||||||
|
case 131
|
||||||
|
echo SIGQUIT
|
||||||
|
case 132
|
||||||
|
echo SIGILL
|
||||||
|
case 133
|
||||||
|
echo SIGTRAP
|
||||||
|
case 134
|
||||||
|
echo SIGABRT
|
||||||
|
case 135
|
||||||
|
echo SIGBUS
|
||||||
|
case 136
|
||||||
|
echo SIGFPE
|
||||||
|
case 137
|
||||||
|
echo SIGKILL
|
||||||
|
case 138
|
||||||
|
echo SIGUSR1
|
||||||
|
case 139
|
||||||
|
echo SIGSEGV
|
||||||
|
case 140
|
||||||
|
echo SIGUSR2
|
||||||
|
case 141
|
||||||
|
echo SIGPIPE
|
||||||
|
case 142
|
||||||
|
echo SIGALRM
|
||||||
|
case 143
|
||||||
|
echo SIGTERM
|
||||||
|
case 144
|
||||||
|
echo SIGSTKFLT
|
||||||
|
case 145
|
||||||
|
echo SIGCHLD
|
||||||
|
case 146
|
||||||
|
echo SIGCONT
|
||||||
|
case 147
|
||||||
|
echo SIGSTOP
|
||||||
|
case 148
|
||||||
|
echo SIGTSTP
|
||||||
|
case 149
|
||||||
|
echo SIGTTIN
|
||||||
|
case 150
|
||||||
|
echo SIGTTOU
|
||||||
|
case 151
|
||||||
|
echo SIGURG
|
||||||
|
case 152
|
||||||
|
echo SIGXCPU
|
||||||
|
case 153
|
||||||
|
echo SIGXFSZ
|
||||||
|
case 154
|
||||||
|
echo SIGVTALRM
|
||||||
|
case 155
|
||||||
|
echo SIGPROF
|
||||||
|
case 156
|
||||||
|
echo SIGWINCH
|
||||||
|
case 157
|
||||||
|
echo SIGIO
|
||||||
|
case 158
|
||||||
|
echo SIGPWR
|
||||||
|
case 159
|
||||||
|
echo SIGSYS
|
||||||
|
case '*'
|
||||||
|
echo $argv[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
BIN
wallpaper.png
Normal file
BIN
wallpaper.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
652
wayland.nix
Normal file
652
wayland.nix
Normal file
|
@ -0,0 +1,652 @@
|
||||||
|
{ config, lib, pkgs, osConfig, ... }:
|
||||||
|
let
|
||||||
|
inherit (osConfig) hardware;
|
||||||
|
|
||||||
|
graphical =
|
||||||
|
if lib.versionAtLeast osConfig.system.stateVersion "24.11"
|
||||||
|
then hardware.graphic.enable
|
||||||
|
else hardware.opengl.enable;
|
||||||
|
|
||||||
|
cmd = {
|
||||||
|
brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl";
|
||||||
|
fish = "${osConfig.programs.fish.package}/bin/fish";
|
||||||
|
grim = "${pkgs.grim}/bin/grim";
|
||||||
|
hyprctl = "${config.wayland.windowManager.hyprland.finalPackage}/bin/hyprctl";
|
||||||
|
hyprlock = "${config.programs.hyprlock.package}/bin/hyprlock";
|
||||||
|
jq = "${config.programs.jq.package}/bin/jq";
|
||||||
|
keepassxc = "${pkgs.keepassxc}/bin/keepassxc";
|
||||||
|
kitty = ''${config.programs.kitty.package}/bin/kitty --single-instance --instance-group "$XDG_SESSION_ID"'';
|
||||||
|
loginctl = "${osConfig.systemd.package}/bin/loginctl";
|
||||||
|
mpv = "${config.programs.mpv.package}/bin/mpv";
|
||||||
|
pidof = "${pkgs.procps}/bin/pidof";
|
||||||
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||||
|
slurp = "${pkgs.slurp}/bin/slurp";
|
||||||
|
tofi-run = "${config.programs.tofi.package}/bin/tofi-run";
|
||||||
|
wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy";
|
||||||
|
wpctl = "${osConfig.services.pipewire.wireplumber.package}/bin/wpctl";
|
||||||
|
xdg-open = "${pkgs.xdg-utils}/bin/xdg-open";
|
||||||
|
};
|
||||||
|
in lib.mkIf graphical {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Image processing
|
||||||
|
oxipng
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
linux-manual
|
||||||
|
man-pages
|
||||||
|
man-pages-posix
|
||||||
|
|
||||||
|
# System operations
|
||||||
|
restic
|
||||||
|
|
||||||
|
# Cryptography
|
||||||
|
age
|
||||||
|
|
||||||
|
# Messaging
|
||||||
|
element-desktop
|
||||||
|
#signal-desktop
|
||||||
|
|
||||||
|
# Audio control
|
||||||
|
pwvucontrol
|
||||||
|
|
||||||
|
evince
|
||||||
|
#inkscape
|
||||||
|
obsidian
|
||||||
|
|
||||||
|
kicad
|
||||||
|
calibre
|
||||||
|
#enpass
|
||||||
|
keepassxc
|
||||||
|
|
||||||
|
# fonts
|
||||||
|
fira-code
|
||||||
|
font-awesome
|
||||||
|
lato
|
||||||
|
|
||||||
|
# Multimedia
|
||||||
|
jellyfin-mpv-shim
|
||||||
|
|
||||||
|
libreoffice
|
||||||
|
];
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
home.keyboard = {
|
||||||
|
layout = "greedy";
|
||||||
|
options = "ctrl:nocaps";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.beets = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
directory = "~/msc";
|
||||||
|
import.reflink = "auto";
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
"chroma"
|
||||||
|
"spotify"
|
||||||
|
"fromfilename"
|
||||||
|
|
||||||
|
"fetchart"
|
||||||
|
"lyrics"
|
||||||
|
"replaygain"
|
||||||
|
|
||||||
|
"duplicates"
|
||||||
|
"hook"
|
||||||
|
];
|
||||||
|
|
||||||
|
hook.hooks = [
|
||||||
|
{
|
||||||
|
event = "import";
|
||||||
|
command = "systemctl --user start mopidy-scan.service";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
hide_cursor = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
background = {
|
||||||
|
path = "screenshot";
|
||||||
|
blur_passes = 3;
|
||||||
|
contrast = 1.25;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.imv.enable = true;
|
||||||
|
|
||||||
|
programs.kitty =
|
||||||
|
let
|
||||||
|
font-features = "+ss01 +ss06 +zero +onum";
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
theme = "Catppuccin-Mocha";
|
||||||
|
settings = {
|
||||||
|
disable_ligatures = "cursor";
|
||||||
|
"font_features FiraCodeRoman_400wght" = font-features;
|
||||||
|
"font_features FiraCodeRoman_500wght" = font-features;
|
||||||
|
"font_features FiraCodeRoman_600wght" = font-features;
|
||||||
|
"font_features FiraCodeRoman_700wght" = font-features;
|
||||||
|
|
||||||
|
cursor_blink_interval = 0;
|
||||||
|
|
||||||
|
scrollback_lines = 65536;
|
||||||
|
|
||||||
|
enable_audio_bell = false;
|
||||||
|
|
||||||
|
close_on_child_death = true;
|
||||||
|
|
||||||
|
clear_all_shortcuts = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
keybindings = {
|
||||||
|
"ctrl+shift+c" = "copy_to_clipboard";
|
||||||
|
"ctrl+shift+v" = "paste_from_clipboard";
|
||||||
|
"ctrl+shift+s" = "paste_from_selection";
|
||||||
|
"shift+insert" = "paste_from_selection";
|
||||||
|
"ctrl+up" = "scroll_line_up";
|
||||||
|
"ctrl+down" = "scroll_line_down";
|
||||||
|
"ctrl+page_up" = "scroll_page_up";
|
||||||
|
"ctrl+page_down" = "scroll_page_down";
|
||||||
|
"shift+page_up" = "scroll_page_up";
|
||||||
|
"shift+page_down" = "scroll_page_down";
|
||||||
|
"ctrl+home" = "scroll_home";
|
||||||
|
"ctrl+end" = "scroll_end";
|
||||||
|
"ctrl+print_screen" = "show_scrollback";
|
||||||
|
|
||||||
|
"ctrl+equal" = "change_font_size all 0";
|
||||||
|
"ctrl+plus" = "change_font_size all +1";
|
||||||
|
"ctrl+minus" = "change_font_size all -1";
|
||||||
|
|
||||||
|
"ctrl+shift+u" = "kitten unicode_input";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.mpv = {
|
||||||
|
enable = true;
|
||||||
|
defaultProfiles = [ "high-quality" ];
|
||||||
|
config = {
|
||||||
|
#access-references = false;
|
||||||
|
|
||||||
|
# video output
|
||||||
|
vo = "gpu";
|
||||||
|
#gpu-api = "vulkan";
|
||||||
|
hwdec = "vulkan,vaapi,auto-safe";
|
||||||
|
vd-lavc-dr = true;
|
||||||
|
|
||||||
|
scale = "ewa_lanczos4sharpest";
|
||||||
|
cscale = "spline64";
|
||||||
|
dscale = "mitchell";
|
||||||
|
tscale = "oversample";
|
||||||
|
|
||||||
|
# A/V sync
|
||||||
|
video-sync = "display-resample";
|
||||||
|
interpolation = true;
|
||||||
|
|
||||||
|
# audio
|
||||||
|
volume = 100;
|
||||||
|
volume-max = 100;
|
||||||
|
|
||||||
|
# subtitles
|
||||||
|
sub-auto = "fuzzy";
|
||||||
|
|
||||||
|
# screenshots
|
||||||
|
screenshot-format = "avif";
|
||||||
|
|
||||||
|
# cache
|
||||||
|
demuxer-max-bytes = "768MiB";
|
||||||
|
demuxer-max-back-bytes = "256MiB";
|
||||||
|
};
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
highres = {
|
||||||
|
scale = "spline64";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
scripts = with pkgs.mpvScripts; [
|
||||||
|
mpris
|
||||||
|
#autocrop
|
||||||
|
autodeint
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.texlive = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = tpkgs: {
|
||||||
|
inherit (tpkgs)
|
||||||
|
texlive-scripts
|
||||||
|
|
||||||
|
xelatex-dev
|
||||||
|
fontspec
|
||||||
|
polyglossia
|
||||||
|
|
||||||
|
hyphen-english
|
||||||
|
hyphen-french
|
||||||
|
hyphen-german
|
||||||
|
hyphen-portuguese
|
||||||
|
hyphen-spanish
|
||||||
|
|
||||||
|
koma-script
|
||||||
|
|
||||||
|
amsmath
|
||||||
|
csquotes
|
||||||
|
hyperref
|
||||||
|
paralist
|
||||||
|
realscripts
|
||||||
|
unicode-math
|
||||||
|
units
|
||||||
|
xecjk
|
||||||
|
xecolor
|
||||||
|
xltxtra
|
||||||
|
;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.thunderbird;
|
||||||
|
profiles = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
target = "hyprland-session.target";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "bottom";
|
||||||
|
spacing = 4;
|
||||||
|
modules-left = [ "hyprland/workspaces" ];
|
||||||
|
modules-center = [ "hyprland/window" ];
|
||||||
|
modules-right = [ "tray" "network" "pulseaudio" "backlight" "battery" "temperature" "cpu" "memory" "clock" ];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
#format = "{icon}";
|
||||||
|
#format-icons.urgent = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/window".max-length = 64;
|
||||||
|
temperature = {
|
||||||
|
critical-threshold = 80;
|
||||||
|
format = "{icon} {temperatureC} °C";
|
||||||
|
format-icons = [ "" "" "" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu.format = " {} %";
|
||||||
|
memory.format = " {} %";
|
||||||
|
battery = {
|
||||||
|
format = "{icon} {capacity} %";
|
||||||
|
format-icons = [ "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
network.format = " {essid} ({signalStrength} %)";
|
||||||
|
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume} %";
|
||||||
|
format-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = [ "" "" "" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
backlight = {
|
||||||
|
format = "{icon} {percent} %";
|
||||||
|
format-icons = [ "" "" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
format = " {:%H:%M %Z}";
|
||||||
|
format-alt = " {:%Y-%m-%d}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.yt-dlp.enable = true;
|
||||||
|
|
||||||
|
services.gammastep = {
|
||||||
|
enable = true;
|
||||||
|
provider = "geoclue2";
|
||||||
|
settings = {
|
||||||
|
general.adjustment-method = "wayland";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = with cmd; {
|
||||||
|
lock_cmd = "${pidof} hyprlock || ${hyprlock}";
|
||||||
|
before_sleep_cmd = "${loginctl} lock-session";
|
||||||
|
after_sleep_cmd = "${hyprctl} dispatch dpms on";
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = with cmd; [
|
||||||
|
{
|
||||||
|
timeout = 210;
|
||||||
|
on-timeout = "${brightnessctl} --save -e set 20%-";
|
||||||
|
on-resume = "${brightnessctl} --save -e set +20%";
|
||||||
|
} {
|
||||||
|
timeout = 240;
|
||||||
|
on-timeout = "${loginctl} lock-session";
|
||||||
|
} {
|
||||||
|
timeout = 270;
|
||||||
|
on-timeout = "${hyprctl} dispatch dpms off";
|
||||||
|
on-resume = "${hyprctl} dispatch dpms on";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.hyprpaper =
|
||||||
|
let
|
||||||
|
wallpaper = toString ./wallpaper.png;
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ipc = false;
|
||||||
|
preload = [ wallpaper ];
|
||||||
|
wallpaper = [ wallpaper ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mako = {
|
||||||
|
enable = true;
|
||||||
|
defaultTimeout = 5000;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mopidy = {
|
||||||
|
enable = true;
|
||||||
|
extensionPackages = with pkgs; [
|
||||||
|
mopidy-iris
|
||||||
|
mopidy-local
|
||||||
|
mopidy-mpd
|
||||||
|
mopidy-mpris
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
core = {
|
||||||
|
cache_dir = "$XDG_CACHE_DIR/mopidy";
|
||||||
|
config_dir = "$XDG_CONFIG_DIR/mopidy";
|
||||||
|
data_dir = "$XDG_DATA_DIR/mopidy";
|
||||||
|
};
|
||||||
|
|
||||||
|
audio.mixer = "none";
|
||||||
|
file.media_dirs = [ "$XDG_MUSIC_DIR" ];
|
||||||
|
local.media_dir = "$XDG_MUSIC_DIR";
|
||||||
|
|
||||||
|
mpd.hostname = "localhost";
|
||||||
|
|
||||||
|
http = {
|
||||||
|
hostname = "localhost";
|
||||||
|
port = 6680;
|
||||||
|
default_app = "iris";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.pasystray.enable = true;
|
||||||
|
|
||||||
|
services.syncthing = {
|
||||||
|
enable = true;
|
||||||
|
tray.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udiskie = {
|
||||||
|
enable = true;
|
||||||
|
automount = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
image = ./wallpaper.png;
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-macchiato.yaml";
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
sansSerif = {
|
||||||
|
package = pkgs.lato;
|
||||||
|
name = "Lato";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = {
|
||||||
|
package = pkgs.fira-code;
|
||||||
|
name = "Fira Code";
|
||||||
|
};
|
||||||
|
|
||||||
|
sizes.terminal = 11;
|
||||||
|
};
|
||||||
|
|
||||||
|
targets = {
|
||||||
|
hyprpaper.enable = lib.mkForce false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.targets.tray = {
|
||||||
|
Unit = {
|
||||||
|
BindsTo = "waybar.service";
|
||||||
|
After = "waybar.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
monitor = [
|
||||||
|
#"desc:LG Display 0x06AA, 1440x900, 0x0, 1, bitdepth, 10"
|
||||||
|
"desc:LG Display 0x06AA, highres, 0x2160, 1, bitdepth, 10"
|
||||||
|
"desc:Lenovo Group Limited P40w-20 V9084N0R, highres, 0x0, 1, bitdepth, 10"
|
||||||
|
];
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "greedy";
|
||||||
|
kb_options = "ctrl:nocaps";
|
||||||
|
};
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 4;
|
||||||
|
gaps_out = 8;
|
||||||
|
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
|
||||||
|
gestures.workspace_swipe = true;
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
vrr = 1;
|
||||||
|
no_direct_scanout = false;
|
||||||
|
background_color = lib.mkForce "0x181825";
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 8;
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle.preserve_split = true;
|
||||||
|
|
||||||
|
workspace = [
|
||||||
|
"name:0, monitor:desc:LG Display 0x06AA, default:true"
|
||||||
|
"name:A, monitor:desc:LG Display 0x06AA"
|
||||||
|
];
|
||||||
|
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
bind = with cmd; [
|
||||||
|
# exit
|
||||||
|
"$mod SHIFT, code:28, exit"
|
||||||
|
|
||||||
|
# window state
|
||||||
|
"$mod SHIFT, Space, togglefloating"
|
||||||
|
"$mod, code:32, fullscreen"
|
||||||
|
"$mod, code:48, togglesplit"
|
||||||
|
"$mod SHIFT, code:24, killactive"
|
||||||
|
|
||||||
|
# change focus
|
||||||
|
"$mod, left, movefocus, l"
|
||||||
|
"$mod, code:43, movefocus, l"
|
||||||
|
"$mod, right, movefocus, r"
|
||||||
|
"$mod, code:46, movefocus, r"
|
||||||
|
"$mod, up, movefocus, u"
|
||||||
|
"$mod, code:45, movefocus, u"
|
||||||
|
"$mod, down, movefocus, d"
|
||||||
|
"$mod, code:44, movefocus, d"
|
||||||
|
|
||||||
|
# move window
|
||||||
|
"$mod SHIFT, left, movewindow, l"
|
||||||
|
"$mod SHIFT, code:43, movewindow, l"
|
||||||
|
"$mod SHIFT, right, movewindow, r"
|
||||||
|
"$mod SHIFT, code:46, movewindow, r"
|
||||||
|
"$mod SHIFT, up, movewindow, u"
|
||||||
|
"$mod SHIFT, code:45, movewindow, u"
|
||||||
|
"$mod SHIFT, down, movewindow, d"
|
||||||
|
"$mod SHIFT, code:44, movewindow, d"
|
||||||
|
|
||||||
|
# resize window
|
||||||
|
"$mod CTRL, left, resizeactive, -20 0"
|
||||||
|
"$mod CTRL, code:43, resizeactive, -20 0"
|
||||||
|
"$mod CTRL, right, resizeactive, 20 0"
|
||||||
|
"$mod CTRL, code:46, resizeactive, 20 0"
|
||||||
|
"$mod CTRL, up, resizeactive, 0 -20"
|
||||||
|
"$mod CTRL, code:45, resizeactive, 0 -20"
|
||||||
|
"$mod CTRL, down, resizeactive, 0 20"
|
||||||
|
"$mod CTRL, code:44, resizeactive, 0 20"
|
||||||
|
|
||||||
|
# move floating
|
||||||
|
"$mod ALT, left, moveactive, -20 0"
|
||||||
|
"$mod ALT, code:43, moveactive, -20 0"
|
||||||
|
"$mod ALT, right, moveactive, 20 0"
|
||||||
|
"$mod ALT, code:46, moveactive, 20 0"
|
||||||
|
"$mod ALT, up, moveactive, 0 -20"
|
||||||
|
"$mod ALT, code:45, moveactive, 0 -20"
|
||||||
|
"$mod ALT, down, moveactive, 0 20"
|
||||||
|
"$mod ALT, code:44, moveactive, 0 20"
|
||||||
|
|
||||||
|
# switch workspaces
|
||||||
|
"$mod, code:49, workspace, name:0"
|
||||||
|
"$mod, code:10, workspace, name:1"
|
||||||
|
"$mod, code:11, workspace, name:2"
|
||||||
|
"$mod, code:12, workspace, name:3"
|
||||||
|
"$mod, code:13, workspace, name:4"
|
||||||
|
"$mod, code:14, workspace, name:5"
|
||||||
|
"$mod, code:15, workspace, name:6"
|
||||||
|
"$mod, code:16, workspace, name:7"
|
||||||
|
"$mod, code:17, workspace, name:8"
|
||||||
|
"$mod, code:18, workspace, name:9"
|
||||||
|
"$mod, code:19, workspace, name:A"
|
||||||
|
"$mod, code:20, togglespecialworkspace"
|
||||||
|
|
||||||
|
"$mod, mouse_down, workspace, e+1"
|
||||||
|
"$mod, mouse_up, workspace, e-1"
|
||||||
|
|
||||||
|
# send to workspaces
|
||||||
|
"$mod SHIFT, code:49, movetoworkspacesilent, name:0"
|
||||||
|
"$mod SHIFT, code:10, movetoworkspacesilent, name:1"
|
||||||
|
"$mod SHIFT, code:11, movetoworkspacesilent, name:2"
|
||||||
|
"$mod SHIFT, code:12, movetoworkspacesilent, name:3"
|
||||||
|
"$mod SHIFT, code:13, movetoworkspacesilent, name:4"
|
||||||
|
"$mod SHIFT, code:14, movetoworkspacesilent, name:5"
|
||||||
|
"$mod SHIFT, code:15, movetoworkspacesilent, name:6"
|
||||||
|
"$mod SHIFT, code:16, movetoworkspacesilent, name:7"
|
||||||
|
"$mod SHIFT, code:17, movetoworkspacesilent, name:8"
|
||||||
|
"$mod SHIFT, code:18, movetoworkspacesilent, name:9"
|
||||||
|
"$mod SHIFT, code:19, movetoworkspacesilent, name:A"
|
||||||
|
"$mod SHIFT, code:20, movetoworkspacesilent, special"
|
||||||
|
|
||||||
|
# function keys
|
||||||
|
", XF86MonBrightnessUp, exec, ${brightnessctl} -e set +5%"
|
||||||
|
", XF86MonBrightnessDown, exec, ${brightnessctl} -e set 5%-"
|
||||||
|
", XF86AudioRaiseVolume, exec, ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ +2dB"
|
||||||
|
", XF86AudioLowerVolume, exec, ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ -2dB"
|
||||||
|
", XF86AudioMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
", XF86AudioMicMute, exec, ${wpctl} set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||||
|
", XF86AudioNext, exec, ${playerctl} next"
|
||||||
|
", XF86AudioPrev, exec, ${playerctl} previous"
|
||||||
|
", XF86AudioPlay, exec, ${playerctl} play"
|
||||||
|
", XF86AudioStop, exec, ${playerctl} pause"
|
||||||
|
", XF86Explorer, exec, ${xdg-open} https:"
|
||||||
|
|
||||||
|
# screenshots
|
||||||
|
"$mod, Print, exec, ${grim} -l 9 - | ${wl-copy}"
|
||||||
|
"$mod SHIFT, Print, exec, ${slurp} | ${grim} -g - -l 9 - | ${wl-copy}"
|
||||||
|
''$mod CTRL, Print, exec, ${grim} -g "$(${hyprctl} -j activewindow ${jq} -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" -l 9 - | ${wl-copy}''
|
||||||
|
"$mod, Return, exec, ${kitty}"
|
||||||
|
"$mod Shift, Return, exec, ${kitty} ${fish} --private"
|
||||||
|
"$mod, code:55, exec, $(${tofi-run})"
|
||||||
|
"$mod, code:56, exec, ${loginctl} lock-session"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
# move window
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
|
||||||
|
# resize window
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
"$keepassPopup" = ''class:^org\.keepassxc\.KeePassXC$, title:^(Unlock.*|.*Access Request)$'';
|
||||||
|
|
||||||
|
windowrulev2 = [
|
||||||
|
''workspace name:A silent, class:^org\.keepassxc\.KeePassXC$, title:^Vault\.kdbx''
|
||||||
|
"float, $keepassPopup"
|
||||||
|
"center, $keepassPopup"
|
||||||
|
"dimaround, $keepassPopup"
|
||||||
|
"stayfocused, $keepassPopup"
|
||||||
|
];
|
||||||
|
|
||||||
|
exec-once = with cmd; [
|
||||||
|
"${keepassxc}"
|
||||||
|
];
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"__GL_GSYNC_ALLOWED, 1"
|
||||||
|
"__GL_SYNC_TO_VBLANK, 1"
|
||||||
|
"__GL_VRR_ALLOWED, 1"
|
||||||
|
"CLUTTER_BACKEND, wayland"
|
||||||
|
"GDK_BACKEND, wayland,x11"
|
||||||
|
"QT_QPA_PLATFORM, wayland;xcb"
|
||||||
|
#"SDL_VIDEODRIVER, wayland"
|
||||||
|
"WLR_NO_HARDWARE_CURSORS, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
bezier = [
|
||||||
|
"wind, 0.2, 0.9, 0.2, 1.05"
|
||||||
|
"winMov, 0.2, 0.9, 0.2, 1.08"
|
||||||
|
"winIn, 0.2, 0.9, 0.2, 1.08"
|
||||||
|
"winOut, 0.2, 0, 0.9, 0.2"
|
||||||
|
"liner, 1, 1, 1, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 4, wind, slide"
|
||||||
|
"windowsIn, 1, 4, winIn, slide"
|
||||||
|
"windowsOut, 1, 4, winOut, slide"
|
||||||
|
"windowsMove, 1, 4, winMov, slide"
|
||||||
|
"fade, 1, 4, default"
|
||||||
|
"fadeOut, 1, 4, default"
|
||||||
|
"workspaces, 1, 4, wind"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor.no_hardware_cursors = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Reference in a new issue