summaryrefslogtreecommitdiff
path: root/modules/nixos
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos')
-rw-r--r--modules/nixos/default.nix2
-rw-r--r--modules/nixos/emacs.nix2
-rw-r--r--modules/nixos/firefox/default.nix279
-rw-r--r--modules/nixos/firefox/userChrome.css210
-rw-r--r--modules/nixos/firefox/userContent.css323
-rw-r--r--modules/nixos/git/default.nix57
-rw-r--r--modules/nixos/mpd.nix212
-rw-r--r--modules/nixos/openssh.nix18
-rw-r--r--modules/nixos/profiles/headful.nix1
9 files changed, 1038 insertions, 66 deletions
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
index 188a999..850d93e 100644
--- a/modules/nixos/default.nix
+++ b/modules/nixos/default.nix
@@ -12,6 +12,7 @@ _: {
./endlessh-go.nix
./endlessh.nix
./fail2ban.nix
+ ./firefox
./fonts.nix
./games
./git
@@ -27,6 +28,7 @@ _: {
./lxc.nix
./matrix
./monitoring
+ ./mpd.nix
./nextcloud.nix
./nginx.nix
./node-exporter.nix
diff --git a/modules/nixos/emacs.nix b/modules/nixos/emacs.nix
index 2db8120..e348398 100644
--- a/modules/nixos/emacs.nix
+++ b/modules/nixos/emacs.nix
@@ -17,7 +17,7 @@ in {
nixfiles.modules.x11.enable = true;
hm = {
- programs.doom-emacs.extraConfig = mkAfter ''
+ programs.emacs.extraConfig = mkAfter ''
(appendq! auth-sources '("${config.secrets.authinfo.path}"))
'';
diff --git a/modules/nixos/firefox/default.nix b/modules/nixos/firefox/default.nix
new file mode 100644
index 0000000..7038773
--- /dev/null
+++ b/modules/nixos/firefox/default.nix
@@ -0,0 +1,279 @@
+{
+ config,
+ inputs,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.firefox;
+in {
+ options.nixfiles.modules.firefox.enable = mkEnableOption "Firefox";
+
+ config = mkIf cfg.enable {
+ hm = {
+ imports = [inputs.arkenfox-nixos.hmModules.arkenfox];
+
+ home.packages = with pkgs; [profile-cleaner];
+
+ programs.firefox = {
+ enable = true;
+
+ package = pkgs.firefox;
+
+ arkenfox.enable = true;
+
+ profiles.default = let
+ mkCssWithRoot = css:
+ mkMerge [
+ (with config.colourScheme; ''
+ :root {
+ --black: ${black};
+ --red: ${red};
+ --green: ${green};
+ --yellow: ${yellow};
+ --blue: ${blue};
+ --magenta: ${magenta};
+ --cyan: ${cyan};
+ --white: ${white};
+ --bright-black: ${brightBlack};
+ --bright-red: ${brightRed};
+ --bright-green: ${brightGreen};
+ --bright-yellow: ${brightYellow};
+ --bright-blue: ${brightBlue};
+ --bright-magenta: ${brightMagenta};
+ --bright-cyan: ${brightCyan};
+ --bright-white: ${brightWhite};
+ --background: ${background};
+ --foreground: ${foreground};
+ '')
+ (with config.fontScheme; ''
+ --sans-serif-font-family: "${sansSerifFont.family}", "${sansSerifFontFallback.family}", sans-serif;
+ --sans-serif-font-size: ${toString sansSerifFont.size}px;
+ --serif-font-family: "${serifFont.family}", "${serifFontFallback.family}", serif;
+ --serif-font-size: ${toString serifFont.size}px;
+ --monospace-font-family: "${monospaceFont.family}", "${monospaceFontFallback.family}", monospace;
+ --monospace-font-size: ${toString monospaceFont.size}px;
+ }
+ '')
+ (builtins.readFile css)
+ ];
+ in {
+ id = 0;
+
+ isDefault = true;
+
+ userChrome = mkCssWithRoot ./userChrome.css;
+
+ userContent = mkCssWithRoot ./userContent.css;
+
+ extensions = with pkgs.nur.repos.rycee.firefox-addons; [
+ bitwarden
+ consent-o-matic
+ darkreader
+ localcdn
+ noscript
+ privacy-redirect
+ ublock-origin
+ violentmonkey
+ ];
+
+ # https://github.com/arkenfox/user.js/blob/master/user.js
+ arkenfox = {
+ enable = true;
+ "0000".enable = true;
+ "0100" = {
+ enable = true;
+ "0102" = {
+ enable = true;
+ "browser.startup.page" = {
+ enable = true;
+ value = 3;
+ };
+ };
+ };
+ "0200".enable = true;
+ "0300".enable = true;
+ "0400" = {
+ enable = false;
+ "0401" = {
+ enable = true;
+ "browser.safebrowsing.malware.enabled" = {
+ enable = true;
+ value = false;
+ };
+ "browser.safebrowsing.phishing.enabled" = {
+ enable = true;
+ value = false;
+ };
+ };
+ "0402" = {
+ enable = true;
+ "browser.safebrowsing.downloads.enabled" = {
+ enable = true;
+ value = false;
+ };
+ };
+ "0404" = {
+ enable = true;
+ "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = {
+ enable = true;
+ value = false;
+ };
+ "browser.safebrowsing.downloads.remote.block_uncommon" = {
+ enable = true;
+ value = false;
+ };
+ };
+ };
+ "0600".enable = true;
+ "0700" = {
+ enable = true;
+ "0701" = {
+ enable = true;
+ "network.dns.disableIPv6" = {
+ enable = true;
+ value = false;
+ };
+ };
+ "0710" = {
+ enable = true;
+ "network.trr.mode" = {
+ enable = true;
+ value = 5;
+ };
+ };
+ };
+ "0800" = {
+ enable = true;
+ "0801" = {
+ enable = true;
+ "keyword.enabled" = {
+ enable = true;
+ value = true;
+ };
+ };
+ "0808" = {
+ enable = true;
+ "browser.urlbar.suggest.engines" = {
+ enable = true;
+ value = false;
+ };
+ };
+ "0810" = {
+ enable = true;
+ "browser.formfill.enable" = {
+ enable = true;
+ value = true;
+ };
+ };
+ };
+ "0900".enable = true;
+ "1000" = {
+ enable = true;
+ "1001"."browser.cache.disk.enable" = {
+ enable = true;
+ value = true;
+ };
+ };
+ "1200" = {
+ enable = true;
+ };
+ "1700" = {
+ enable = false;
+ "1701" = {
+ enable = true;
+ "privacy.userContext.enabled" = {
+ enable = true;
+ value = false;
+ };
+ "privacy.userContext.ui.enabled" = {
+ enable = true;
+ value = false;
+ };
+ };
+ "1702" = {
+ enable = true;
+ "privacy.userContext.newTabContainerOnLeftClick.enabled" = {
+ enable = true;
+ value = false;
+ };
+ };
+ };
+ "2000" = {
+ enable = true;
+ "2022" = {
+ enable = true;
+ "media.eme.enabled" = {
+ enable = true;
+ value = false;
+ };
+ "browser.eme.ui.enabled" = {
+ enable = true;
+ value = false;
+ };
+ };
+ };
+ "2400".enable = false;
+ "2600" = {
+ enable = true;
+ "2615" = {
+ enable = true;
+ "permissions.default.shortcuts" = {
+ enable = true;
+ value = 2;
+ };
+ };
+ };
+ "2700".enable = true;
+ "2800".enable = true;
+ };
+
+ settings = {
+ "app.update.auto" = false;
+ "browser.backspace_action" = 0;
+ "browser.bookmarks.max_backups" = 1;
+ "browser.disableResetPrompt" = true;
+ "browser.download.autohideButton" = false;
+ "browser.newtabpage.activity-stream.feeds.system.topsites" = false;
+ "browser.newtabpage.activity-stream.feeds.topsites" = false;
+ "browser.newtabpage.introShown" = true;
+ "browser.onboarding.enabled" = false;
+ "browser.search.update" = false;
+ "browser.startup.homepage_welcome_url" = "";
+ "browser.startup.homepage_welcome_url.additional" = "";
+ "browser.tabs.closeWindowWithLastTab" = true;
+ "browser.tabs.firefox-view" = false;
+ "browser.tabs.inTitlebar" =
+ if config.nixfiles.modules.kde.enable
+ then 1
+ else 0;
+ "browser.tabs.warnOnClose" = false;
+ "browser.tabs.warnOnCloseOtherTabs" = false;
+ "browser.tabs.warnOnOpen" = false;
+ "browser.toolbars.bookmarks.visibility" = "never";
+ "browser.urlbar.decodeURLsOnCopy" = true;
+ "browser.warnOnQuitShortcut" = false;
+ "extensions.pocket.enabled" = false;
+ "extensions.screenshots.disabled" = true;
+ "extensions.update.autoUpdateDefault" = false;
+ "extensions.update.enabled" = false;
+ "full-screen-api.warning.delay" = 0;
+ "full-screen-api.warning.timeout" = 0;
+ "general.autoScroll" = true;
+ "general.smoothScroll" = true;
+ "gfx.font_rendering.opentype_svg.enabled" = false;
+ "identity.fxaccounts.enabled" = false;
+ "media.autoplay.blocking_policy" = 2;
+ "media.autoplay.default" = 5;
+ "media.autoplay.enabled" = false;
+ "media.hardwaremediakeys.enabled" = false;
+ "reader.parse-on-load.enabled" = false;
+ "signon.rememberSignons" = false;
+ "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/modules/nixos/firefox/userChrome.css b/modules/nixos/firefox/userChrome.css
new file mode 100644
index 0000000..58e450e
--- /dev/null
+++ b/modules/nixos/firefox/userChrome.css
@@ -0,0 +1,210 @@
+@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml)
+{
+ /* :root { */
+ /* /\* */
+ /* * Helper colours. */
+ /* *\/ */
+ /* --background: var(--black) !important; */
+ /* --foreground: var(--white) !important; */
+ /* --background-alt: var(--bright-black) !important; */
+ /* --foreground-alt: var(--bright-white) !important; */
+
+ /* /\* */
+ /* * Various root values that can be redefined. */
+ /* *\/ */
+ /* --arrowpanel-border-radius: 0 !important; */
+ /* --autocomplete-popup-highlight-background: var(--background) !important; */
+ /* --autocomplete-popup-highlight-color: var(--foreground) !important; */
+ /* --backbutton-background: transparent !important; */
+ /* --backbutton-border-color: transparent !important; */
+ /* --tab-block-margin: 0 !important; */
+ /* --tab-border-radius: 0 !important; */
+ /* --tabs-border-color: transparent !important; */
+ /* --tabs-top-border-width: 0 !important; */
+ /* --toolbar-field-focus-border-color: var(--background) !important; */
+ /* --toolbar-non-lwt-bgcolor: var(--background) !important; */
+ /* --toolbar-non-lwt-bgimage: none !important; */
+ /* --toolbar-non-lwt-textcolor: var(--foreground) !important; */
+ /* --toolbarbutton-border-radius: 0 !important; */
+ /* } */
+
+ /*
+ ***
+ * Tabbar
+ ***
+ */
+
+ /*
+ * Apply colours and fonts.
+ */
+ /* .tabbrowser-tab { */
+ /* color: var(--background-alt) !important; */
+ /* font-family: var(--sans-serif-font-family) !important; */
+ /* font-size: var(--sans-serif-font-size) !important; */
+ /* } */
+ /* .tabbrowser-tab[visuallyselected="true"] { */
+ /* background: var(--background) !important; */
+ /* color: var(--foreground) !important; */
+ /* } */
+
+ /*
+ * Not sure why is this shit even exists...
+ */
+ .titlebar-spacer {
+ display: none !important;
+ }
+
+ /*
+ * Disable borders and margins.
+ */
+ #tabbrowser-tabs {
+ border-inline-start: 0 !important;
+ /* padding-inline-start: 0 !important; */
+ margin-inline-start: 0 !important;
+ }
+ #tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs])
+ > #tabbrowser-arrowscrollbox
+ > .tabbrowser-tab[first-visible-unpinned-tab] {
+ margin-inline-start: none !important;
+ }
+ .tabbrowser-tab::after,
+ .tabbrowser-tab::before {
+ border: none !important;
+ }
+
+ /*
+ * Make tabs backgroundless.
+ */
+ /* .tab-background, */
+ /* .tab-line { */
+ /* display: none !important; */
+ /* } */
+
+ /*
+ * Stretch tabs to the max by default.
+ */
+ .tabbrowser-tab[fadein]:not([pinned="true"]) {
+ max-width: 100% !important;
+ }
+
+ /*
+ * Fix favicon location.
+ */
+ /* .tab-icon-image { */
+ /* margin-inline-end: 10px !important; */
+ /* margin-top: 0px !important; */
+ /* } */
+
+ /*
+ * "C-t" exists.
+ */
+ /* #tabs-newtab-button, */
+ /* #TabsToolbar #new-tab-button { */
+ /* display: none !important; */
+ /* } */
+
+ /*
+ * "C-w" exists.
+ */
+ .tab-close-button {
+ display: none !important;
+ }
+
+ /*
+ ***
+ * Navbar & urlbar.
+ ***
+ */
+
+ /*
+ * Remove useless buttons.
+ */
+ /* #forward-button, */
+ /* #back-button, */
+ /* #reload-button, */
+ /* #stop-button { */
+ /* display: none !important; */
+ /* } */
+
+ /*
+ * Remove padding between urlbar and side elements.
+ */
+ #customizableui-special-spring1,
+ #customizableui-special-spring2 {
+ display: none !important;
+ }
+
+ /* #urlbar { */
+ /* background: var(--background) !important; */
+ /* color: var(--forground) !important; */
+ /* font-family: var(--sans-serif-font-family) !important; */
+ /* font-size: var(--sans-serif-font-size) !important; */
+ /* border-color: transparent !important; */
+ /* } */
+
+ /* #urlbar:not(:-moz-lwtheme):not([focused="true"]) > #urlbar-background, */
+ /* #searchbar:not(:-moz-lwtheme):not(:focus-within) { */
+ /* border: none !important; */
+ /* } */
+
+ /* #urlbar *|*.textbox-input::-moz-placeholder { */
+ /* color: transparent !important; */
+ /* } */
+
+ /* .urlbar-icon:hover:not([disabled]), */
+ /* .urlbar-icon-wrapper:hover:not([disabled]) { */
+ /* background-color: var(--background-alt) !important; */
+ /* } */
+
+ /* #urlbar-background { */
+ /* background: transparent !important; */
+ /* } */
+
+ /* .urlbarView-tags, */
+ /* .urlbarView-url, */
+ /* .urlbarView-title:not(:empty) ~ .urlbarView-action { */
+ /* font-size: var(--sans-serif-font-size) !important; */
+ /* } */
+
+ .urlbarView-row[label="Firefox Suggest"] {
+ margin-block-start: 0 !important;
+ }
+ .urlbarView-row[label="Firefox Suggest"]::before {
+ display: none !important;
+ }
+
+ /*
+ ***
+ * Misc.
+ ***
+ */
+
+ /*
+ * Call indicator that some "designer" decided to make floating and
+ * impossible to hide.
+ */
+ #webrtcIndicator {
+ display: none !important;
+ }
+
+ /*
+ * Disable some context menu entries.
+ */
+ #context-navigation {
+ display: none !important;
+ }
+
+ /*
+ * Disable all animations.
+ */
+ /* * { */
+ /* transition: none !important; */
+ /* } */
+
+ /*
+ * Remove dumb websites that Mozilla is forced to include.
+ */
+ .search-one-offs {
+ display: none !important;
+ }
+}
diff --git a/modules/nixos/firefox/userContent.css b/modules/nixos/firefox/userContent.css
new file mode 100644
index 0000000..2de8cde
--- /dev/null
+++ b/modules/nixos/firefox/userContent.css
@@ -0,0 +1,323 @@
+@-moz-document media-document(all) {
+ body {
+ background-image: none !important;
+ background-color: var(--background) !important;
+ }
+}
+
+@-moz-document regexp("about:(blank|home|newtab|privatebrowsing|welcome)") {
+ html,
+ body {
+ background: var(--background) !important;
+ }
+
+ body {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://(www)?yandex\.(com|ru)/search/.*")
+{
+ #search-result-aside,
+ .RelatedAbove {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://music\.yandex\.ru.*")
+{
+ .bar-below.bar-below_plus,
+ .footer,
+ .notify,
+ .teaser {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://(.*.)?gitlab(\..*)?\.(com|org).*")
+{
+ body {
+ font-family: var(--sans-serif-font-family) !important;
+ font-size: var(--sans-serif-font-size) !important;
+ }
+
+ code {
+ font-family: var(--monospace-font-family) !important;
+ font-size: var(--monospace-font-size) !important;
+ }
+}
+
+@-moz-document regexp("https?://(.*\.)?github.com.*")
+{
+ #org-repo-pin-select-menu,
+ #sponsor-button,
+ .dropdown-divider,
+ .footer,
+ .octicon.octicon-info,
+ .pt-3.mt-3.d-none.d-md-block, /* Profile achievements. */
+ .starring-container,
+ .user-following-container,
+ .user-profile-link,
+ .user-status-circle-badge-container,
+ .user-status-container,
+ a[href^="/account/choose?action=upgrade"],
+ a[href^="/codespaces"],
+ a[href^="/collections"],
+ a[href^="/events"],
+ a[href^="/explore"],
+ a[href^="/marketplace"],
+ a[href^="/organizations/enterprise"],
+ a[href^="/sponsors"],
+ a[href^="/topics"],
+ a[href^="/trending"] {
+ display: none !important;
+ }
+
+ .application-main {
+ padding-bottom: 20px !important;
+ }
+
+ .blob-num,
+ .blob-code-inner {
+ font-family: var(--monospace-font-family) !important;
+ font-size: var(--monospace-font-size) !important;
+ }
+}
+
+@-moz-document regexp("https?://github.com/?")
+{
+ .application-main {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://.*(stack(exchange|overflow)|askubuntu|superuser|serverfault)\.com/questions/.*")
+{
+ html,
+ body {
+ --ff-mono: var(--monospace-font-family) !important;
+ --ff-sans: var(--sans-serif-font-family) !important;
+ --ff-serif: var(--serif-font-family) !important;
+ }
+
+ #announcement-banner,
+ #footer,
+ #left-sidebar,
+ #noscript-warning,
+ #notify-container,
+ #post-form,
+ #sidebar,
+ .ai-start,
+ .bottom-notice,
+ .comment-user,
+ .d-flex.g4,
+ .d-flex.s-btn-group,
+ .js-add-link.comments-link,
+ .js-consent-banner,
+ .js-dismissable-hero,
+ .js-post-issue,
+ .js-show-link.comments-link,
+ .post-taglist,
+ .s-notice,
+ .s-topbar,
+ .site-header,
+ a.ws-nowrap {
+ display: none !important;
+ }
+
+ #mainbar {
+ width: 100% !important;
+ }
+
+ #content {
+ margin-top: -50px !important;
+ border-width: 0 0 0 0 !important;
+ }
+}
+
+@-moz-document regexp("https?://kubernetes\.io/docs/.*")
+{
+ .announcement,
+ .announcement-main,
+ .d-none {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://min\.io/docs/.*")
+{
+ #cookie {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://werf\.io/documentation/.*")
+{
+ .guides-banner {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://habr\.com/(ru|en)/(article|company/.*/news|blog|post)/.*")
+{
+ .Vue-Toastification__container,
+ .tm-article-presenter__footer,
+ .tm-article-presenter__meta,
+ .tm-article-snippet__labels,
+ .tm-article-sticky-panel,
+ .tm-base-layout__header,
+ .tm-block.tm-block_spacing-bottom,
+ .tm-block_spacing-around,
+ .tm-comment-footer,
+ .tm-comment__header,
+ .tm-editoral-subscription,
+ .tm-footer,
+ .tm-footer-menu,
+ .tm-header,
+ .tm-notice,
+ .tm-page__header,
+ .tm-page__sidebar,
+ .tm-placeholder-inset,
+ .tm-placeholder-promo,
+ .tm-user-info,
+ vue-portal-target {
+ display: none !important;
+ }
+
+ * {
+ transition: none !important;
+ }
+
+ html,
+ body {
+ font-family: var(--sans-serif-font-family) !important;
+ font-size: var(--sans-serif-font-size) !important;
+ }
+
+ #app {
+ height: auto !important;
+ }
+
+ .tm-article-presenter__footer,
+ .tm-page__main_has-sidebar {
+ margin-left: auto !important;
+ margin-right: auto !important;
+ max-width: 100% !important;
+ }
+
+ .tm-page {
+ padding: 0 !important;
+ }
+
+ .tm-comment__buttons {
+ margin: 0 !important;
+ }
+
+ html,
+ body {
+ font-family: var(--sans-serif-font-family) !important;
+ font-size: var(--sans-serif-font-size) !important;
+ }
+
+ code {
+ font-family: var(--monospace-font-family) !important;
+ font-size: var(--monospace-font-size) !important;
+ }
+}
+
+@-moz-document regexp("https?://jisho\.org.*")
+{
+ header,
+ footer {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?:\/\/gog\.com.*") {
+ .galaxy-section-wrapper,
+ footer {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://steamdb\.info.*")
+{
+ #steamdb-extension-protip {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://(.*\.)?hh\.ru.*")
+{
+ .HH-Supernova-Footer,
+ .index-dashboard-applicant__banners,
+ .notification-manager,
+ .resume-sidebar-background,
+ .supernova-overlay {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://www\.songsterr\.com.*")
+{
+ #favorite,
+ #fullscreen,
+ #logo,
+ #menu-favorites,
+ #menu-help,
+ #menu-plus,
+ #menu-signin,
+ #menu-submit,
+ #promo,
+ #revisions,
+ #showroom,
+ #showroom_sidebar,
+ #text-showroom,
+ footer {
+ display: none !important;
+ }
+}
+
+@-moz-document regexp("https?://developer\.mozilla\.org.*")
+{
+ #nav-footer,
+ .main-document-header-container.top-navigation,
+ .mdn-cta-container {
+ display: none !important;
+ }
+
+ .sidebar {
+ --offset: default !important;
+ }
+
+ html,
+ body {
+ font-family: var(--sans-serif-font-family) !important;
+ font-size: var(--sans-serif-font-size) !important;
+ }
+}
+
+@-moz-document regexp("https?://(.*\.)?wikipedia\.org/wiki/.*")
+{
+ #footer,
+ #mp-topbanner,
+ #siteNotice,
+ #siteSub,
+ .mw-footer-container,
+ .mw-header,
+ .vector-page-toolbar {
+ display: none !important;
+ }
+
+ html,
+ body {
+ font-family: var(--sans-serif-font-family) !important;
+ font-size: var(--sans-serif-font-size) !important;
+ }
+
+ .k-player,
+ body.mediawiki,
+ #dialogEngineContainer #dialogEngineDialog {
+ background: inherit !important;
+ }
+}
diff --git a/modules/nixos/git/default.nix b/modules/nixos/git/default.nix
index 86891ae..1bf63c7 100644
--- a/modules/nixos/git/default.nix
+++ b/modules/nixos/git/default.nix
@@ -20,7 +20,7 @@ in {
package = mkOption {
description = "Package.";
type = types.package;
- default = pkgs.cgit-pink;
+ default = pkgs.cgit;
};
};
@@ -58,6 +58,8 @@ in {
root-desc=Homo sum, humani a me nihil alienum puto.
footer=
+ clone-url=https://${cfg.server.domain}/$CGIT_REPO_URL
+
logo=/cgit-custom-logo.gif
favicon=/cgit-custom-favicon.gif
css=/cgit-custom-style.css
@@ -68,7 +70,6 @@ in {
enable-git-config=1
enable-gitweb-owner=1
- enable-index-owner=0
remove-suffix=1
readme=:README
@@ -106,63 +107,11 @@ in {
pkgs.writeText "custom.css" ''
@import url("cgit.css");
- form {
- display: none;
- }
-
div#cgit {
- max-width: 157ch;
- margin: auto;
font-family: "${config.fontScheme.monospaceFont.family}", monospace;
-moz-tab-size: 4;
tab-size: 4;
}
-
- div#cgit table#header td.sub {
- border-top: none;
- }
-
- div#cgit table#header td.sub.right {
- padding-right: 1em;
- }
-
- div#cgit table.tabs {
- border-bottom: none;
- }
-
- div#cgit div.content {
- border-bottom: none;
- }
-
- div#cgit table.list th a {
- color: inherit;
- }
-
- div#cgit table.list tr:nth-child(even) {
- background: inherit;
- }
-
- div#cgit table.list tr:hover {
- background: inherit;
- }
-
- div#cgit table.list tr.nohover-highlight:hover:nth-child(even) {
- background: inherit;
- }
-
- div#cgit table.blob td.linenumbers a:target {
- color: goldenrod;
- text-decoration: underline;
- outline: none;
- }
-
- div#cgit div#summary {
- max-width: 80ch;
- }
-
- div#cgit a.permalink {
- color: inherit;
- }
'';
in ''
alias ${css};
diff --git a/modules/nixos/mpd.nix b/modules/nixos/mpd.nix
new file mode 100644
index 0000000..4b49213
--- /dev/null
+++ b/modules/nixos/mpd.nix
@@ -0,0 +1,212 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.mpd;
+in {
+ options.nixfiles.modules.mpd.enable =
+ mkEnableOption "Wether to enable MPD and its clients.";
+
+ config = mkIf cfg.enable {
+ hm = {
+ home.packages = with pkgs; [mpc_cli];
+
+ services.mpd = {
+ enable = true;
+ musicDirectory = "${config.my.home}/music";
+ extraConfig = ''
+ restore_paused "yes"
+
+ auto_update "no"
+
+ replaygain "album"
+ replaygain_preamp "0"
+ replaygain_limit "yes"
+
+ volume_normalization "no"
+
+ zeroconf_enabled "no"
+
+ audio_output {
+ type "pipewire"
+ name "piepwire"
+ }
+ '';
+ };
+
+ programs.ncmpcpp = {
+ enable = true;
+
+ settings = rec {
+ ncmpcpp_directory = "${config.dirs.data}/ncmpcpp";
+ lyrics_directory = "${ncmpcpp_directory}/lyrics";
+
+ playlist_disable_highlight_delay = 1;
+ message_delay_time = 1;
+
+ song_window_title_format = "{%a - }{%t}|{%f}";
+ song_list_format = "{$6%t}|{$2%f}$1 $R{$8%b}$1 {$5%a}";
+ song_columns_list_format = "(20)[red]{a} (30)[cyan]{b} (50)[blue]{t|f}";
+ song_status_format = "{{$8%a$9{ $b-$/b $6%b$9 {(%y)} } - } '{%t}}|{%f}'";
+ song_library_format = "{%n - }{%t}|{%f}";
+
+ now_playing_prefix = "$b";
+ now_playing_suffix = "$/b";
+
+ selected_item_prefix = "$0";
+ selected_item_suffix = "$9";
+ modified_item_prefix = "$3> $9";
+
+ browser_playlist_prefix = "$2playlist$9 ";
+ browser_sort_format = "{%a - }{%t}|{%f} {(%l)}";
+
+ playlist_show_mpd_host = false;
+ playlist_show_remaining_time = false;
+ playlist_shorten_total_times = false;
+ playlist_separate_albums = false;
+
+ playlist_display_mode = "classic";
+ browser_display_mode = "classic";
+ search_engine_display_mode = "classic";
+ playlist_editor_display_mode = "classic";
+
+ incremental_seeking = true;
+ seek_time = 1;
+
+ volume_change_step = 5;
+
+ autocenter_mode = true;
+ centered_cursor = true;
+
+ progressbar_look = "=*-";
+
+ default_place_to_search_in = "database";
+ search_engine_default_search_mode = 1;
+ data_fetching_delay = false;
+ media_library_primary_tag = "album_artist";
+ browser_sort_mode = "name";
+ default_find_mode = "wrapped";
+ default_tag_editor_pattern = "%n - %t";
+ empty_tag_marker = "<blank>";
+ tags_separator = " | ";
+ tag_editor_extended_numeration = true;
+ media_library_sort_by_mtime = false;
+ regular_expressions = "none";
+ block_search_constraints_change_if_items_found = true;
+
+ ignore_leading_the = true;
+
+ enable_window_title = false;
+
+ header_visibility = false;
+ statusbar_visibility = false;
+ titles_visibility = false;
+
+ display_volume_level = false;
+ display_bitrate = false;
+ display_remaining_time = false;
+
+ cyclic_scrolling = true;
+ lines_scrolled = 1;
+
+ follow_now_playing_lyrics = false;
+ fetch_lyrics_for_current_song_in_background = false;
+ store_lyrics_in_song_dir = false;
+
+ generate_win32_compatible_filenames = false;
+ allow_for_physical_item_deletion = false;
+ show_hidden_files_in_local_browser = false;
+
+ screen_switcher_mode = "playlist, browser";
+ startup_screen = "playlist";
+ startup_slave_screen = "";
+ startup_slave_screen_focus = false;
+ locked_screen_width_part = 50;
+ ask_for_locked_screen_width_part = true;
+
+ jump_to_now_playing_song_at_start = false;
+
+ ask_before_clearing_playlists = false;
+
+ clock_display_seconds = false;
+
+ mouse_support = false;
+
+ external_editor = "${config.programs.vim.package}/bin/vim";
+ use_console_editor = true;
+
+ colors_enabled = true;
+ discard_colors_if_item_is_selected = true;
+
+ empty_tag_color = "cyan";
+ header_window_color = "cyan";
+ volume_color = "cyan";
+ state_line_color = "cyan";
+ state_flags_color = "green";
+ main_window_color = "blue";
+ color1 = "cyan";
+ color2 = "red";
+ progressbar_color = "cyan";
+ progressbar_elapsed_color = "white";
+ statusbar_color = "yellow";
+ window_border_color = "green";
+ active_window_border = "red";
+ };
+
+ bindings = [
+ {
+ key = "j";
+ command = "scroll_down";
+ }
+ {
+ key = "k";
+ command = "scroll_up";
+ }
+ {
+ key = "J";
+ command = ["select_item" "scroll_down"];
+ }
+ {
+ key = "K";
+ command = ["select_item" "scroll_up"];
+ }
+ {
+ key = "h";
+ command = ["previous_column" "master_screen"];
+ }
+ {
+ key = "l";
+ command = ["next_column" "slave_screen"];
+ }
+ {
+ key = "g";
+ command = "move_home";
+ }
+ {
+ key = "G";
+ command = "move_end";
+ }
+ {
+ key = "d";
+ command = [
+ "delete_playlist_items"
+ "delete_browser_items"
+ "delete_stored_playlist"
+ ];
+ }
+ {
+ key = "L";
+ command = "show_lyrics";
+ }
+ {
+ key = "H";
+ command = "toggle_lyrics_fetcher";
+ }
+ ];
+ };
+ };
+ };
+}
diff --git a/modules/nixos/openssh.nix b/modules/nixos/openssh.nix
index c7a144e..6f4614c 100644
--- a/modules/nixos/openssh.nix
+++ b/modules/nixos/openssh.nix
@@ -18,16 +18,14 @@ in {
};
config = mkIf cfg.server.enable {
- # FIXME This is mounted after the activation script is launched.
- ark = {
- files = [
- "/etc/ssh/ssh_host_ed25519_key"
- "/etc/ssh/ssh_host_ed25519_key.pub"
- "/etc/ssh/ssh_host_rsa_key"
- "/etc/ssh/ssh_host_rsa_key.pub"
- ];
- # directories = ["/etc/ssh/authorized_keys.d"];
- };
+ # authorized_keys is not added here because it only contains my SSH keys and
+ # all non-declarative ones are located in the home directory.
+ ark.files = [
+ "/etc/ssh/ssh_host_ed25519_key"
+ "/etc/ssh/ssh_host_ed25519_key.pub"
+ "/etc/ssh/ssh_host_rsa_key"
+ "/etc/ssh/ssh_host_rsa_key.pub"
+ ];
programs.mosh.enable = true;
diff --git a/modules/nixos/profiles/headful.nix b/modules/nixos/profiles/headful.nix
index ca604cb..ede921a 100644
--- a/modules/nixos/profiles/headful.nix
+++ b/modules/nixos/profiles/headful.nix
@@ -13,7 +13,6 @@ in {
chromium.enable = true;
firefox.enable = true;
sound.enable = true;
- x11.enable = true;
dwm.enable = mkDefault false;
kde.enable = mkDefault true;