mirror of
https://github.com/gburd/nix-config.git
synced 2024-07-06 17:57:20 +00:00
updates
This commit is contained in:
parent
b50af7a6e0
commit
7993d5619c
|
@ -2,6 +2,7 @@ keys:
|
||||||
# Users
|
# Users
|
||||||
- &users:
|
- &users:
|
||||||
- &gburd D4BB42BE729AEFBD2EFEBF8822931AF7895E82DF
|
- &gburd D4BB42BE729AEFBD2EFEBF8822931AF7895E82DF
|
||||||
|
- &greg D4BB42BE729AEFBD2EFEBF8822931AF7895E82DF
|
||||||
# Hosts
|
# Hosts
|
||||||
- &hosts:
|
- &hosts:
|
||||||
- &floki age1z2x0g05q2erpux006vwhul70d8akj9avrj67s9p27fm4ce32ly8qt8nllz
|
- &floki age1z2x0g05q2erpux006vwhul70d8akj9avrj67s9p27fm4ce32ly8qt8nllz
|
||||||
|
@ -16,21 +17,25 @@ creation_rules:
|
||||||
- *floki
|
- *floki
|
||||||
pgp:
|
pgp:
|
||||||
- *gburd
|
- *gburd
|
||||||
|
- *greg
|
||||||
- path_regex: nixos/iso-console/secrets.ya?ml$
|
- path_regex: nixos/iso-console/secrets.ya?ml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *iso-console
|
- *iso-console
|
||||||
pgp:
|
pgp:
|
||||||
- *gburd
|
- *gburd
|
||||||
|
- *greg
|
||||||
- path_regex: nixos/iso-desktop/secrets.ya?ml$
|
- path_regex: nixos/iso-desktop/secrets.ya?ml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *iso-desktop
|
- *iso-desktop
|
||||||
pgp:
|
pgp:
|
||||||
- *gburd
|
- *gburd
|
||||||
|
- *greg
|
||||||
- path_regex: nixos/_mixins/secrets.ya?ml$
|
- path_regex: nixos/_mixins/secrets.ya?ml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *floki
|
- *floki
|
||||||
pgp:
|
pgp:
|
||||||
- *gburd
|
- *gburd
|
||||||
|
- *greg
|
||||||
|
|
|
@ -52,7 +52,13 @@ nix develop
|
||||||
|
|
||||||
`nix build` (or shell or run) To build and use packages
|
`nix build` (or shell or run) To build and use packages
|
||||||
|
|
||||||
`sops` To manage secrets
|
`sops` To manage secrets, example:
|
||||||
|
|
||||||
|
```
|
||||||
|
export GPG_TTY=$(tty)
|
||||||
|
gpgconf --reload gpg-agent
|
||||||
|
EDITOR=vi sops --config .sops.yaml nixos/_mixins/secrets.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Secrets
|
## Secrets
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [ pkgs.alacritty ];
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./deluge.nix
|
|
||||||
./discord.nix
|
|
||||||
./firefox.nix
|
|
||||||
./alacritty.nix
|
|
||||||
./font.nix
|
|
||||||
./gtk.nix
|
|
||||||
# ./kdeconnect.nix
|
|
||||||
./pavucontrol.nix
|
|
||||||
./playerctl.nix
|
|
||||||
./qt.nix
|
|
||||||
./slack.nix
|
|
||||||
./sublime-music.nix
|
|
||||||
./protonmail-bridge.nix
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
home.packages = with pkgs; [ deluge ];
|
|
||||||
}
|
|
|
@ -1,221 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let inherit (config.colorscheme) colors;
|
|
||||||
in {
|
|
||||||
home.packages = with pkgs; [ discord discocss ];
|
|
||||||
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/gburd".directories = [ ".config/discord" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."discocss/custom.css".text = ''
|
|
||||||
.theme-dark {
|
|
||||||
--header-primary: #${colors.base05};
|
|
||||||
--header-secondary: #${colors.base04};
|
|
||||||
--text-normal: #${colors.base05};
|
|
||||||
--text-muted: #${colors.base04};
|
|
||||||
--text-link: #${colors.base08};
|
|
||||||
--channels-default: #${colors.base05};
|
|
||||||
--interactive-normal: #${colors.base04};
|
|
||||||
--interactive-hover: #${colors.base05};
|
|
||||||
--interactive-active: #${colors.base05};
|
|
||||||
--interactive-muted: #${colors.base03};
|
|
||||||
--background-primary: #${colors.base00};
|
|
||||||
--background-secondary: #${colors.base01};
|
|
||||||
--background-secondary-alt: #${colors.base02};
|
|
||||||
--background-tertiary: #${colors.base01};
|
|
||||||
--background-accent: #${colors.base01};
|
|
||||||
--background-floating: #${colors.base00};
|
|
||||||
--background-mobile-primary: var(--background-primary);
|
|
||||||
--background-mobile-secondary: var(--background-secondary);
|
|
||||||
--background-modifier-selected: var(--background-secondary);
|
|
||||||
--scrollbar-thin-thumb: #${colors.base02};
|
|
||||||
--scrollbar-auto-thumb: #${colors.base02};
|
|
||||||
--scrollbar-auto-track: #${colors.base01};
|
|
||||||
--scrollbar-auto-scrollbar-color-thumb: #${colors.base02};
|
|
||||||
--scrollbar-auto-scrollbar-color-track: #${colors.base01};
|
|
||||||
--focus-primary: #${colors.base08};
|
|
||||||
--channeltextarea-background: #${colors.base01};
|
|
||||||
--deprecated-card-bg: #${colors.base01};
|
|
||||||
--deprecated-quickswitcher-input-background: #${colors.base01};
|
|
||||||
--deprecated-quickswitcher-input-placeholder: #${colors.base05};
|
|
||||||
--background-modifier-hover: var(--background-secondary);
|
|
||||||
--background-modifier-active: var(--background-secondary-alt);
|
|
||||||
--activity-card-background: var(--background-secondary);
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
font-family: ${config.fontProfiles.regular.family}, sans serif;
|
|
||||||
}
|
|
||||||
.scroller-1Bvpku {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.scroller-2FKFPG {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.headerPlaying-j0WQBV, .headerStreaming-2FjmGz {
|
|
||||||
background: var(--background-secondary-alt);
|
|
||||||
}
|
|
||||||
.theme-dark .headerNormal-T_seeN {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .body-3iLsc4, .theme-dark .footer-1fjuF6 {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
color: var(--header-secondary);
|
|
||||||
}
|
|
||||||
.theme-dark .quickMessage-1yeL4E {
|
|
||||||
background-color: var(--background-secondary);
|
|
||||||
border-color: var(--background-secondary);
|
|
||||||
}
|
|
||||||
.theme-dark .inset-3sAvek {
|
|
||||||
background-color: var(--background-secondary);
|
|
||||||
}
|
|
||||||
.theme-dark .userSettingsAccount-2eMFVR .viewBody-2Qz-jg {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .modal-yWgWj- {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .footer-2gL1pp {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .lookLink-9FtZy-.colorPrimary-3b3xI6 {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .notDetected-33MY4s, .theme-light .notDetected-33MY4s {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .notDetected-33MY4s .gameName-1RiWHm, .theme-light .notDetected-33MY4s .gameName-1RiWHm {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .gameName-1RiWHm {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .notDetected-33MY4s .lastPlayed-3bQ7Bo, .theme-light .notDetected-33MY4s .lastPlayed-3bQ7Bo {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .nowPlayingAdd-1Kdmh_, .theme-light .nowPlayingAdd-1Kdmh_ {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.css-1k00wn6-singleValue {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .codeRedemptionRedirect-1wVR4b {
|
|
||||||
color: var(--header-primary);
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
border-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .emptyStateHeader-248f_b {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .emptyStateSubtext-2hdA9c {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .root-1gCeng {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .date-EErlv4 {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .content-8bidB ol, .theme-dark .content-8biNdB p, .theme-dark .content-8biNdB ul li {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.headerName-fajvi9, .headerTagUsernameNoNickname-2_H881 {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.headerTag-2pZJzA {
|
|
||||||
color: var(--header-secondary);
|
|
||||||
}
|
|
||||||
.theme-dark .activityProfile-2bJRaP .headerText-1HLrL7, .theme-dark .activityUserPopout-2yItg2 .headerText-1HLrL7, .theme-light .activityProfile-2bJRaP .headerText-1HLrL7, .theme-light .activityUserPopout-2yItg2 .headerText-1HLrL7 {
|
|
||||||
color: var(--header-secondary);
|
|
||||||
}
|
|
||||||
.activityName-1IaRLn, .nameNormal-2lqVQK, .nameWrap-3Z4G_9 {
|
|
||||||
color: var(--header-secondary);
|
|
||||||
}
|
|
||||||
.theme-dark .activityProfile-2bJRaP .content-3JfFJh, .theme-dark .activityProfile-2bJRaP .details-38sfDr, .theme-dark .activityProfile-2bJRaP .name-29ETJS, .theme-dark .activityUserPopout-2yItg2 .content-3JfFJh, .theme-dark .activityUserPopout-2yItg2 .details-38sfDr, .theme-dark .activityUserPopout-2yItg2 .name-29ETJS, .theme-light .activityProfile-2bJRaP .content-3JfFJh, .theme-light .activityProfile-2bJRaP .details-38sfDr, .theme-light .activityProfile-2bJRaP .name-29ETJS, .theme-light .activityUserPopout-2yItg2 .content-3JfFJh, .theme-light .activityUserPopout-2yItg2 .details-38sfDr, .theme-light .activityUserPopout-2yItg2 .name-29ETJS {
|
|
||||||
color: var(--header-secondary);
|
|
||||||
}
|
|
||||||
.topSectionPlaying-1J5E4n {
|
|
||||||
background: var(--background-secondary-alt);
|
|
||||||
}
|
|
||||||
.username-3gJmXY {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.discriminator-xUhQkU {
|
|
||||||
color: var(--header-secondary);
|
|
||||||
}
|
|
||||||
.tabBarItem-1b8RUP.item-PXvHYJ {
|
|
||||||
color: var(--header-secondary) !important;
|
|
||||||
border-color: transparent !important;
|
|
||||||
}
|
|
||||||
.theme-dark .keybind-KpFkfr {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.theme-dark .closeButton-1tv5uR {
|
|
||||||
border-color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.barFill-23-gu- {
|
|
||||||
background: var(--text-link);
|
|
||||||
}
|
|
||||||
.focused-3afm-j {
|
|
||||||
background-color: var(--background-secondary) !important;
|
|
||||||
color: var(--text-link) !important;
|
|
||||||
}
|
|
||||||
.colorDefault-2K3EoJ .checkbox-3s5GYZ, .colorDefault-2K3EoJ .radioSelection-1HmrQS {
|
|
||||||
color: var(--text-link);
|
|
||||||
}
|
|
||||||
.colorDefault-2K3EoJ .checkbox-3s5GYZ {
|
|
||||||
color: var(--text-link);
|
|
||||||
}
|
|
||||||
.colorDefault-2K3EoJ .check-1JyqgN {
|
|
||||||
color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.colorDefault-2K3EoJ.focused-3afm-j .checkbox-3s5GYZ {
|
|
||||||
color: var(--background-primary) !important;
|
|
||||||
}
|
|
||||||
.colorDefault-2K3EoJ.focused-3afm-j .check-1JyqgN {
|
|
||||||
color: var(--text-link);
|
|
||||||
}
|
|
||||||
.wrapper-1BJsBx.selected-bZ3Lue .childWrapper-anI2G9, .wrapper-1BJsBx:hover .childWrapper-anI2G9 {
|
|
||||||
color: var(--background-primary);
|
|
||||||
background-color: var(--header-secondary);
|
|
||||||
}
|
|
||||||
.panels-j1Uci_ {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.navButton-2gQCx- {
|
|
||||||
color: var(--interactive-normal);
|
|
||||||
}
|
|
||||||
.navButtonActive-1MkytQ {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.input-3Xdcic {
|
|
||||||
color: var(--header-primary);
|
|
||||||
}
|
|
||||||
.clickable-2ap7je .header-2o-2hj {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
.peopleColumn-29fq28 {
|
|
||||||
background-color: var(--background-tertiary);
|
|
||||||
}
|
|
||||||
.theme-dark .outer-1AjyKL.active-1xchHY, .theme-dark .outer-1AjyKL.interactive-3B9GmY:hover {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.theme-dark .popout-38lTFE {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.theme-dark .scrollerThemed-2oenus.themedWithTrack-q8E3vB>.scroller-2FKFPG::-webkit-scrollbar-track-piece {
|
|
||||||
background-color: var(--background-primary);
|
|
||||||
border: 4px solid var(--background-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.theme-dark .scrollerThemed-2oenus.themedWithTrack-q8E3vB>.scroller-2FKFPG::-webkit-scrollbar-thumb {
|
|
||||||
background-color: var(--background-secondary);
|
|
||||||
border-color: var(--background-secondary);
|
|
||||||
}
|
|
||||||
.theme-dark .header-sJd8D7 {
|
|
||||||
color: var(--text-normal)
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
home.packages = with pkgs; [ xdragon ];
|
|
||||||
}
|
|
|
@ -1,127 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.browserpass.enable = true;
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
|
|
||||||
extraPolicies = {
|
|
||||||
CaptivePortal = false;
|
|
||||||
DisableFirefoxStudies = true;
|
|
||||||
DisablePocket = true;
|
|
||||||
DisableTelemetry = true;
|
|
||||||
DisableFirefoxAccounts = false;
|
|
||||||
NoDefaultBookmarks = true;
|
|
||||||
OfferToSaveLogins = false;
|
|
||||||
OfferToSaveLoginsDefault = false;
|
|
||||||
PasswordManagerEnabled = false;
|
|
||||||
FirefoxHome = {
|
|
||||||
Search = true;
|
|
||||||
Pocket = false;
|
|
||||||
Snippets = false;
|
|
||||||
TopSites = false;
|
|
||||||
Highlights = false;
|
|
||||||
};
|
|
||||||
UserMessaging = {
|
|
||||||
ExtensionRecommendations = false;
|
|
||||||
SkipOnboarding = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
profiles.gburd = {
|
|
||||||
id = 0;
|
|
||||||
bookmarks = { };
|
|
||||||
extensions = with pkgs.inputs.firefox-addons; [
|
|
||||||
# autoplay-no-more
|
|
||||||
bypass-paywalls-clean
|
|
||||||
i-dont-care-about-cookies
|
|
||||||
# kagi-search-for-firefox
|
|
||||||
clearurls
|
|
||||||
decentraleyes
|
|
||||||
disconnect
|
|
||||||
duckduckgo-privacy-essentials
|
|
||||||
floccus
|
|
||||||
ghostery
|
|
||||||
# https-everywhere
|
|
||||||
# languagetool
|
|
||||||
# onetab
|
|
||||||
privacy-badger
|
|
||||||
privacy-badger
|
|
||||||
privacy-redirect
|
|
||||||
proton-pass
|
|
||||||
react-devtools
|
|
||||||
ublock-origin
|
|
||||||
];
|
|
||||||
search = {
|
|
||||||
force = true;
|
|
||||||
default = "Kagi";
|
|
||||||
engines = {
|
|
||||||
"Nix Packages" = {
|
|
||||||
urls = [{
|
|
||||||
template = "https://search.nixos.org/packages";
|
|
||||||
params = [
|
|
||||||
{ name = "type"; value = "packages"; }
|
|
||||||
{ name = "query"; value = "{searchTerms}"; }
|
|
||||||
];
|
|
||||||
}];
|
|
||||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
|
||||||
definedAliases = [ "@np" ];
|
|
||||||
};
|
|
||||||
"NixOS Wiki" = {
|
|
||||||
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
|
|
||||||
iconUpdateURL = "https://nixos.wiki/favicon.png";
|
|
||||||
updateInterval = 24 * 60 * 60 * 1000;
|
|
||||||
definedAliases = [ "@nw" ];
|
|
||||||
};
|
|
||||||
"Wikipedia (en)".metaData.alias = "@wiki";
|
|
||||||
"Google".metaData.hidden = true;
|
|
||||||
"Amazon.com".metaData.hidden = true;
|
|
||||||
"Bing".metaData.hidden = true;
|
|
||||||
"eBay".metaData.hidden = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
|
||||||
user_pref("full-screen-api.ignore-widgets", true);
|
|
||||||
user_pref("media.ffmpeg.vaapi.enabled", true);
|
|
||||||
user_pref("media.rdd-vpx.enabled", true);
|
|
||||||
'';
|
|
||||||
userChrome = ''
|
|
||||||
# a css
|
|
||||||
'';
|
|
||||||
userContent = ''
|
|
||||||
# Here too
|
|
||||||
'';
|
|
||||||
settings = {
|
|
||||||
"general.smoothScroll" = true;
|
|
||||||
"browser.disableResetPrompt" = true;
|
|
||||||
"browser.download.panel.shown" = true;
|
|
||||||
"browser.download.useDownloadDir" = false;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
||||||
"browser.shell.checkDefaultBrowser" = false;
|
|
||||||
"browser.shell.defaultBrowserCheckCount" = 1;
|
|
||||||
"browser.startup.homepage" = "about:blank";
|
|
||||||
"browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"nav-bar":["back-button","forward-button","stop-reload-button","home-button","urlbar-container","downloads-button","library-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","ublock0_raymondhill_net-browser-action","_testpilot-containers-browser-action"],"dirtyAreaCache":["nav-bar","PersonalToolbar","toolbar-menubar","TabsToolbar","widget-overflow-fixed-list"],"currentVersion":18,"newElementCount":4}'';
|
|
||||||
"dom.security.https_only_mode" = true;
|
|
||||||
"identity.fxaccounts.enabled" = false;
|
|
||||||
"privacy.trackingprotection.enabled" = true;
|
|
||||||
"signon.rememberSignons" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
persistence = {
|
|
||||||
# Not persisting is safer, but... <shrug>
|
|
||||||
"/persist/home/gburd".directories = [ ".mozilla/firefox" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.mimeApps.defaultApplications = {
|
|
||||||
"text/html" = [ "firefox.desktop" ];
|
|
||||||
"text/xml" = [ "firefox.desktop" ];
|
|
||||||
"x-scheme-handler/http" = [ "firefox.desktop" ];
|
|
||||||
"x-scheme-handler/https" = [ "firefox.desktop" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
fontProfiles = {
|
|
||||||
enable = true;
|
|
||||||
monospace = {
|
|
||||||
family = "FiraCode Nerd Font";
|
|
||||||
package = pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; };
|
|
||||||
};
|
|
||||||
regular = {
|
|
||||||
family = "Fira Sans";
|
|
||||||
package = pkgs.fira;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# Gnome3 apps
|
|
||||||
# gnome3.eog # image viewer
|
|
||||||
# gnome3.evince # pdf reader
|
|
||||||
|
|
||||||
# Desktop look & feel
|
|
||||||
# gnome.gnome-tweak-tool
|
|
||||||
|
|
||||||
# Extensions
|
|
||||||
gnomeExtensions.appindicator
|
|
||||||
gnomeExtensions.dash-to-dock
|
|
||||||
];
|
|
||||||
|
|
||||||
# environment.gnome.excludePackages = (with pkgs; [
|
|
||||||
# gnome-photos
|
|
||||||
# gnome-tour
|
|
||||||
# ]) ++ (with pkgs.gnome; [
|
|
||||||
# cheese # webcam tool
|
|
||||||
# gnome-music
|
|
||||||
# geary # email reader
|
|
||||||
# gnome-characters
|
|
||||||
# yelp # Help view
|
|
||||||
# gnome-contacts
|
|
||||||
# gnome-initial-setup
|
|
||||||
# ]);
|
|
||||||
# programs.dconf.enable = true;
|
|
||||||
# environment.systemPackages = with pkgs; [
|
|
||||||
# gnome.gnome-tweaks
|
|
||||||
# ]
|
|
||||||
# };
|
|
||||||
# dbus.packages = [ pkgs.gnome.dconf ];
|
|
||||||
# udev.packages = [ pkgs.gnome.gnome-settings-
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
MOZ_ENABLE_WAYLAND = 1;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{ config, pkgs, inputs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
|
|
||||||
in
|
|
||||||
rec {
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
font = {
|
|
||||||
name = config.fontProfiles.regular.family;
|
|
||||||
size = 14;
|
|
||||||
};
|
|
||||||
theme = {
|
|
||||||
name = "${config.colorscheme.slug}";
|
|
||||||
package = gtkThemeFromScheme { scheme = config.colorscheme; };
|
|
||||||
};
|
|
||||||
iconTheme = {
|
|
||||||
name = "Papirus";
|
|
||||||
package = pkgs.papirus-icon-theme;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.xsettingsd = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
"Net/ThemeName" = "${gtk.theme.name}";
|
|
||||||
"Net/IconThemeName" = "${gtk.iconTheme.name}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
kdeconnect-cli = "${pkgs.plasma5Packages.kdeconnect-kde}/bin/kdeconnect-cli";
|
|
||||||
fortune = "${pkgs.fortune}/bin/fortune";
|
|
||||||
|
|
||||||
script-fortune = pkgs.writeShellScriptBin "fortune" ''
|
|
||||||
${kdeconnect-cli} -d $(${kdeconnect-cli} --list-available --id-only) --ping-msg "$(${fortune})"
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Hide all .desktop, except for org.kde.kdeconnect.settings
|
|
||||||
xdg.desktopEntries = {
|
|
||||||
"org.kde.kdeconnect.sms" = {
|
|
||||||
exec = "";
|
|
||||||
name = "KDE Connect SMS";
|
|
||||||
settings.NoDisplay = "true";
|
|
||||||
};
|
|
||||||
"org.kde.kdeconnect.nonplasma" = {
|
|
||||||
exec = "";
|
|
||||||
name = "KDE Connect Indicator";
|
|
||||||
settings.NoDisplay = "true";
|
|
||||||
};
|
|
||||||
"org.kde.kdeconnect.app" = {
|
|
||||||
exec = "";
|
|
||||||
name = "KDE Connect";
|
|
||||||
settings.NoDisplay = "true";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.kdeconnect = {
|
|
||||||
enable = true;
|
|
||||||
indicator = true;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"kdeconnect-scripts/fortune.sh".source = "${script-fortune}/bin/fortune";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/gburd".directories = [ ".config/kdeconnect" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
home.packages = with pkgs; [ pavucontrol ];
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [ playerctl ];
|
|
||||||
services.playerctld = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme = "gtk";
|
|
||||||
style = {
|
|
||||||
name = "gtk2";
|
|
||||||
package = pkgs.qt6gtk2;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [ pkgs.slack ];
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
home.packages = [ pkgs.sublime-music ];
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/gburd".directories = [ ".config/sublime-music" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./hyprland-vnc.nix
|
|
||||||
./gammastep.nix
|
|
||||||
./kitty.nix
|
|
||||||
./mako.nix
|
|
||||||
./qutebrowser.nix
|
|
||||||
./swayidle.nix
|
|
||||||
./swaylock.nix
|
|
||||||
./waybar.nix
|
|
||||||
./wofi.nix
|
|
||||||
./zathura.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.mimeApps.enable = true;
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
grim
|
|
||||||
gtk3 # For gtk-launch
|
|
||||||
imv
|
|
||||||
mimeo
|
|
||||||
primary-xwayland
|
|
||||||
pulseaudio
|
|
||||||
slurp
|
|
||||||
waypipe
|
|
||||||
wf-recorder
|
|
||||||
wl-clipboard
|
|
||||||
wl-mirror
|
|
||||||
wl-mirror-pick
|
|
||||||
xdg-utils-spawn-terminal # Patched to open terminal
|
|
||||||
ydotool
|
|
||||||
];
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
MOZ_ENABLE_WAYLAND = 1;
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
LIBSEAT_BACKEND = "logind";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
services.gammastep = {
|
|
||||||
enable = true;
|
|
||||||
provider = "geoclue2";
|
|
||||||
temperature = {
|
|
||||||
day = 6000;
|
|
||||||
night = 4600;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
general.adjustment-method = "wayland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ pkgs, lib, config, ... }:
|
|
||||||
let
|
|
||||||
enabledMonitors = lib.filter (m: m.enabled) config.monitors;
|
|
||||||
# A nice VNC script for remotes running hyprland
|
|
||||||
vncsh = pkgs.writeShellScriptBin "vnc.sh" ''
|
|
||||||
ssh $1 bash <<'EOF'
|
|
||||||
pgrep "wayvnc" && exit
|
|
||||||
export HYPRLAND_INSTANCE_SIGNATURE="$(ls /tmp/hypr/ -lt | head -2 | tail -1 | rev | cut -d ' ' -f1 | rev)"
|
|
||||||
export WAYLAND_DISPLAY="wayland-1"
|
|
||||||
ip="$(ip addr show dev tailscale0 | grep 'inet ' | xargs | cut -d ' ' -f2 | cut -d '/' -f1)"
|
|
||||||
xpos="$(hyprctl monitors -j | jq -r 'sort_by(.x)[-1] | .x + .width')"
|
|
||||||
|
|
||||||
${lib.concatLines (lib.forEach enabledMonitors (m: ''
|
|
||||||
hyprctl output create headless
|
|
||||||
monitor="$(hyprctl monitors -j | jq -r 'map(.name)[-1]')"
|
|
||||||
hyprctl keyword monitor $monitor,${toString m.width}x${toString m.height}@${toString m.refreshRate},$(($xpos + ${toString m.x}))x${toString m.y},1
|
|
||||||
screen -d -m wayvnc -k br -S /tmp/vnc-${m.workspace} -f 60 -o $monitor $ip 590${m.workspace}
|
|
||||||
sudo iptables -I INPUT -j ACCEPT -p tcp --dport 590${m.workspace}
|
|
||||||
''))}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
${lib.concatLines (lib.forEach enabledMonitors (m: ''
|
|
||||||
vncviewer $1::590${m.workspace} &
|
|
||||||
''))}
|
|
||||||
|
|
||||||
wait
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
vncsh
|
|
||||||
wayvnc
|
|
||||||
tigervnc
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
kitty-xterm = pkgs.writeShellScriptBin "xterm" ''
|
|
||||||
${config.programs.kitty.package}/bin/kitty -1 "$@"
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home = {
|
|
||||||
packages = [ kitty-xterm ];
|
|
||||||
sessionVariables = {
|
|
||||||
TERMINAL = "kitty -1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
font = {
|
|
||||||
name = config.fontProfiles.monospace.family;
|
|
||||||
size = 12;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
shell_integration = "no-rc"; # I prefer to do it manually
|
|
||||||
scrollback_lines = 4000;
|
|
||||||
scrollback_pager_history_size = 2048;
|
|
||||||
window_padding_width = 15;
|
|
||||||
foreground = "#${colors.base05}";
|
|
||||||
background = "#${colors.base00}";
|
|
||||||
selection_background = "#${colors.base05}";
|
|
||||||
selection_foreground = "#${colors.base00}";
|
|
||||||
url_color = "#${colors.base04}";
|
|
||||||
cursor = "#${colors.base05}";
|
|
||||||
active_border_color = "#${colors.base03}";
|
|
||||||
inactive_border_color = "#${colors.base01}";
|
|
||||||
active_tab_background = "#${colors.base00}";
|
|
||||||
active_tab_foreground = "#${colors.base05}";
|
|
||||||
inactive_tab_background = "#${colors.base01}";
|
|
||||||
inactive_tab_foreground = "#${colors.base04}";
|
|
||||||
tab_bar_background = "#${colors.base01}";
|
|
||||||
color0 = "#${colors.base00}";
|
|
||||||
color1 = "#${colors.base08}";
|
|
||||||
color2 = "#${colors.base0B}";
|
|
||||||
color3 = "#${colors.base0A}";
|
|
||||||
color4 = "#${colors.base0D}";
|
|
||||||
color5 = "#${colors.base0E}";
|
|
||||||
color6 = "#${colors.base0C}";
|
|
||||||
color7 = "#${colors.base05}";
|
|
||||||
color8 = "#${colors.base03}";
|
|
||||||
color9 = "#${colors.base08}";
|
|
||||||
color10 = "#${colors.base0B}";
|
|
||||||
color11 = "#${colors.base0A}";
|
|
||||||
color12 = "#${colors.base0D}";
|
|
||||||
color13 = "#${colors.base0E}";
|
|
||||||
color14 = "#${colors.base0C}";
|
|
||||||
color15 = "#${colors.base07}";
|
|
||||||
color16 = "#${colors.base09}";
|
|
||||||
color17 = "#${colors.base0F}";
|
|
||||||
color18 = "#${colors.base01}";
|
|
||||||
color19 = "#${colors.base02}";
|
|
||||||
color20 = "#${colors.base04}";
|
|
||||||
color21 = "#${colors.base06}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
let inherit (config.colorscheme) colors kind;
|
|
||||||
in {
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
iconPath =
|
|
||||||
if kind == "dark" then
|
|
||||||
"${config.gtk.iconTheme.package}/share/icons/Papirus-Dark"
|
|
||||||
else
|
|
||||||
"${config.gtk.iconTheme.package}/share/icons/Papirus-Light";
|
|
||||||
font = "${config.fontProfiles.regular.family} 12";
|
|
||||||
padding = "10,20";
|
|
||||||
anchor = "top-center";
|
|
||||||
width = 400;
|
|
||||||
height = 150;
|
|
||||||
borderSize = 2;
|
|
||||||
defaultTimeout = 12000;
|
|
||||||
backgroundColor = "#${colors.base00}dd";
|
|
||||||
borderColor = "#${colors.base03}dd";
|
|
||||||
textColor = "#${colors.base05}dd";
|
|
||||||
layer = "overlay";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,177 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
|
|
||||||
let inherit (config.colorscheme) colors kind;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.persistence = {
|
|
||||||
"/persist/home/misterio".directories = [
|
|
||||||
".config/qutebrowser/bookmarks"
|
|
||||||
".config/qutebrowser/greasemonkey"
|
|
||||||
".local/share/qutebrowser"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
xdg.mimeApps.defaultApplications = {
|
|
||||||
"text/html" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"text/xml" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"x-scheme-handler/http" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"x-scheme-handler/https" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
"x-scheme-handler/qute" = [ "org.qutebrowser.qutebrowser.desktop" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
programs.qutebrowser = {
|
|
||||||
enable = true;
|
|
||||||
loadAutoconfig = true;
|
|
||||||
settings = {
|
|
||||||
editor.command = [ "xdg-open" "{file}" ];
|
|
||||||
tabs = {
|
|
||||||
show = "multiple";
|
|
||||||
position = "left";
|
|
||||||
tree_tabs = true;
|
|
||||||
};
|
|
||||||
fonts = {
|
|
||||||
default_family = config.fontProfiles.regular.family;
|
|
||||||
default_size = "12pt";
|
|
||||||
};
|
|
||||||
colors = {
|
|
||||||
webpage = {
|
|
||||||
preferred_color_scheme = kind;
|
|
||||||
bg = "#ffffff";
|
|
||||||
};
|
|
||||||
completion = {
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
match.fg = "#${colors.base09}";
|
|
||||||
even.bg = "#${colors.base00}";
|
|
||||||
odd.bg = "#${colors.base00}";
|
|
||||||
scrollbar = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
category = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base0D}";
|
|
||||||
border = {
|
|
||||||
bottom = "#${colors.base00}";
|
|
||||||
top = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
item.selected = {
|
|
||||||
bg = "#${colors.base02}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
match.fg = "#${colors.base05}";
|
|
||||||
border = {
|
|
||||||
bottom = "#${colors.base02}";
|
|
||||||
top = "#${colors.base02}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
contextmenu = {
|
|
||||||
disabled = {
|
|
||||||
bg = "#${colors.base01}";
|
|
||||||
fg = "#${colors.base04}";
|
|
||||||
};
|
|
||||||
menu = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
selected = {
|
|
||||||
bg = "#${colors.base02}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
downloads = {
|
|
||||||
bar.bg = "#${colors.base00}";
|
|
||||||
error.fg = "#${colors.base08}";
|
|
||||||
start = {
|
|
||||||
bg = "#${colors.base0D}";
|
|
||||||
fg = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
stop = {
|
|
||||||
bg = "#${colors.base0C}";
|
|
||||||
fg = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hints = {
|
|
||||||
bg = "#${colors.base0A}";
|
|
||||||
fg = "#${colors.base00}";
|
|
||||||
match.fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
keyhint = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
suffix.fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
messages = {
|
|
||||||
error.bg = "#${colors.base08}";
|
|
||||||
error.border = "#${colors.base08}";
|
|
||||||
error.fg = "#${colors.base00}";
|
|
||||||
info.bg = "#${colors.base00}";
|
|
||||||
info.border = "#${colors.base00}";
|
|
||||||
info.fg = "#${colors.base05}";
|
|
||||||
warning.bg = "#${colors.base0E}";
|
|
||||||
warning.border = "#${colors.base0E}";
|
|
||||||
warning.fg = "#${colors.base00}";
|
|
||||||
};
|
|
||||||
prompts = {
|
|
||||||
bg = "#${colors.base00}";
|
|
||||||
fg = "#${colors.base05}";
|
|
||||||
border = "#${colors.base00}";
|
|
||||||
selected.bg = "#${colors.base02}";
|
|
||||||
};
|
|
||||||
statusbar = {
|
|
||||||
caret.bg = "#${colors.base00}";
|
|
||||||
caret.fg = "#${colors.base0D}";
|
|
||||||
caret.selection.bg = "#${colors.base00}";
|
|
||||||
caret.selection.fg = "#${colors.base0D}";
|
|
||||||
command.bg = "#${colors.base01}";
|
|
||||||
command.fg = "#${colors.base04}";
|
|
||||||
command.private.bg = "#${colors.base01}";
|
|
||||||
command.private.fg = "#${colors.base0E}";
|
|
||||||
insert.bg = "#${colors.base00}";
|
|
||||||
insert.fg = "#${colors.base0C}";
|
|
||||||
normal.bg = "#${colors.base00}";
|
|
||||||
normal.fg = "#${colors.base05}";
|
|
||||||
passthrough.bg = "#${colors.base00}";
|
|
||||||
passthrough.fg = "#${colors.base0A}";
|
|
||||||
private.bg = "#${colors.base00}";
|
|
||||||
private.fg = "#${colors.base0E}";
|
|
||||||
progress.bg = "#${colors.base0D}";
|
|
||||||
url.error.fg = "#${colors.base08}";
|
|
||||||
url.fg = "#${colors.base05}";
|
|
||||||
url.hover.fg = "#${colors.base09}";
|
|
||||||
url.success.http.fg = "#${colors.base0B}";
|
|
||||||
url.success.https.fg = "#${colors.base0B}";
|
|
||||||
url.warn.fg = "#${colors.base0E}";
|
|
||||||
};
|
|
||||||
tabs = {
|
|
||||||
bar.bg = "#${colors.base00}";
|
|
||||||
even.bg = "#${colors.base00}";
|
|
||||||
even.fg = "#${colors.base05}";
|
|
||||||
indicator.error = "#${colors.base08}";
|
|
||||||
indicator.start = "#${colors.base0D}";
|
|
||||||
indicator.stop = "#${colors.base0C}";
|
|
||||||
odd.bg = "#${colors.base00}";
|
|
||||||
odd.fg = "#${colors.base05}";
|
|
||||||
pinned.even.bg = "#${colors.base0B}";
|
|
||||||
pinned.even.fg = "#${colors.base00}";
|
|
||||||
pinned.odd.bg = "#${colors.base0B}";
|
|
||||||
pinned.odd.fg = "#${colors.base00}";
|
|
||||||
pinned.selected.even.bg = "#${colors.base02}";
|
|
||||||
pinned.selected.even.fg = "#${colors.base05}";
|
|
||||||
pinned.selected.odd.bg = "#${colors.base02}";
|
|
||||||
pinned.selected.odd.fg = "#${colors.base05}";
|
|
||||||
selected.even.bg = "#${colors.base02}";
|
|
||||||
selected.even.fg = "#${colors.base05}";
|
|
||||||
selected.odd.bg = "#${colors.base02}";
|
|
||||||
selected.odd.fg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
c.tabs.padding = {"bottom": 10, "left": 10, "right": 10, "top": 10}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
{ pkgs, lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
|
||||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
|
||||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
|
||||||
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
|
|
||||||
|
|
||||||
isLocked = "${pgrep} -x ${swaylock}";
|
|
||||||
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
|
|
||||||
|
|
||||||
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
|
|
||||||
afterLockTimeout = { timeout, command, resumeCommand ? null }: [
|
|
||||||
{ timeout = lockTime + timeout; inherit command resumeCommand; }
|
|
||||||
{ command = "${isLocked} && ${command}"; inherit resumeCommand timeout; }
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
systemdTarget = "graphical-session.target";
|
|
||||||
timeouts =
|
|
||||||
# Lock screen
|
|
||||||
[{
|
|
||||||
timeout = lockTime;
|
|
||||||
command = "${swaylock} -i ${config.wallpaper} --daemonize";
|
|
||||||
}] ++
|
|
||||||
# Mute mic
|
|
||||||
(afterLockTimeout {
|
|
||||||
timeout = 10;
|
|
||||||
command = "${pactl} set-source-mute @DEFAULT_SOURCE@ yes";
|
|
||||||
resumeCommand = "${pactl} set-source-mute @DEFAULT_SOURCE@ no";
|
|
||||||
}) ++
|
|
||||||
# Turn off RGB
|
|
||||||
(lib.optionals config.services.rgbdaemon.enable (afterLockTimeout {
|
|
||||||
timeout = 20;
|
|
||||||
command = "systemctl --user stop rgbdaemon";
|
|
||||||
resumeCommand = "systemctl --user start rgbdaemon";
|
|
||||||
})) ++
|
|
||||||
# Turn off displays (hyprland)
|
|
||||||
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
|
|
||||||
timeout = 40;
|
|
||||||
command = "${hyprctl} dispatch dpms off";
|
|
||||||
resumeCommand = "${hyprctl} dispatch dpms on";
|
|
||||||
})) ++
|
|
||||||
# Turn off displays (sway)
|
|
||||||
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
|
|
||||||
timeout = 40;
|
|
||||||
command = "${swaymsg} 'output * dpms off'";
|
|
||||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
let inherit (config.colorscheme) colors;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.swaylock-effects;
|
|
||||||
settings = {
|
|
||||||
effect-blur = "20x3";
|
|
||||||
fade-in = 0.1;
|
|
||||||
|
|
||||||
font = config.fontProfiles.regular.family;
|
|
||||||
font-size = 15;
|
|
||||||
|
|
||||||
line-uses-inside = true;
|
|
||||||
disable-caps-lock-text = true;
|
|
||||||
indicator-caps-lock = true;
|
|
||||||
indicator-radius = 40;
|
|
||||||
indicator-idle-visible = true;
|
|
||||||
indicator-y-position = 1000;
|
|
||||||
|
|
||||||
ring-color = "#${colors.base02}";
|
|
||||||
inside-wrong-color = "#${colors.base08}";
|
|
||||||
ring-wrong-color = "#${colors.base08}";
|
|
||||||
key-hl-color = "#${colors.base0B}";
|
|
||||||
bs-hl-color = "#${colors.base08}";
|
|
||||||
ring-ver-color = "#${colors.base09}";
|
|
||||||
inside-ver-color = "#${colors.base09}";
|
|
||||||
inside-color = "#${colors.base01}";
|
|
||||||
text-color = "#${colors.base07}";
|
|
||||||
text-clear-color = "#${colors.base01}";
|
|
||||||
text-ver-color = "#${colors.base01}";
|
|
||||||
text-wrong-color = "#${colors.base01}";
|
|
||||||
text-caps-lock-color = "#${colors.base07}";
|
|
||||||
inside-clear-color = "#${colors.base0C}";
|
|
||||||
ring-clear-color = "#${colors.base0C}";
|
|
||||||
inside-caps-lock-color = "#${colors.base09}";
|
|
||||||
ring-caps-lock-color = "#${colors.base02}";
|
|
||||||
separator-color = "#${colors.base02}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,392 +0,0 @@
|
||||||
{ outputs, config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
# Dependencies
|
|
||||||
cat = "${pkgs.coreutils}/bin/cat";
|
|
||||||
cut = "${pkgs.coreutils}/bin/cut";
|
|
||||||
find = "${pkgs.findutils}/bin/find";
|
|
||||||
grep = "${pkgs.gnugrep}/bin/grep";
|
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
|
||||||
tail = "${pkgs.coreutils}/bin/tail";
|
|
||||||
wc = "${pkgs.coreutils}/bin/wc";
|
|
||||||
xargs = "${pkgs.findutils}/bin/xargs";
|
|
||||||
timeout = "${pkgs.coreutils}/bin/timeout";
|
|
||||||
ping = "${pkgs.iputils}/bin/ping";
|
|
||||||
|
|
||||||
jq = "${pkgs.jq}/bin/jq";
|
|
||||||
gamemoded = "${pkgs.gamemode}/bin/gamemoded";
|
|
||||||
systemctl = "${pkgs.systemd}/bin/systemctl";
|
|
||||||
journalctl = "${pkgs.systemd}/bin/journalctl";
|
|
||||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
|
||||||
playerctld = "${pkgs.playerctl}/bin/playerctld";
|
|
||||||
pavucontrol = "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
||||||
wofi = "${pkgs.wofi}/bin/wofi";
|
|
||||||
|
|
||||||
# Function to simplify making waybar outputs
|
|
||||||
jsonOutput = name: { pre ? "", text ? "", tooltip ? "", alt ? "", class ? "", percentage ? "" }: "${pkgs.writeShellScriptBin "waybar-${name}" ''
|
|
||||||
set -euo pipefail
|
|
||||||
${pre}
|
|
||||||
${jq} -cn \
|
|
||||||
--arg text "${text}" \
|
|
||||||
--arg tooltip "${tooltip}" \
|
|
||||||
--arg alt "${alt}" \
|
|
||||||
--arg class "${class}" \
|
|
||||||
--arg percentage "${percentage}" \
|
|
||||||
'{text:$text,tooltip:$tooltip,alt:$alt,class:$class,percentage:$percentage}'
|
|
||||||
''}/bin/waybar-${name}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.waybar.overrideAttrs (oa: {
|
|
||||||
mesonFlags = (oa.mesonFlags or [ ]) ++ [ "-Dexperimental=true" ];
|
|
||||||
});
|
|
||||||
systemd.enable = true;
|
|
||||||
settings = {
|
|
||||||
primary = {
|
|
||||||
mode = "dock";
|
|
||||||
layer = "top";
|
|
||||||
height = 40;
|
|
||||||
margin = "6";
|
|
||||||
position = "top";
|
|
||||||
modules-left = [
|
|
||||||
"custom/menu"
|
|
||||||
] ++ (lib.optionals config.wayland.windowManager.sway.enable [
|
|
||||||
"sway/workspaces"
|
|
||||||
"sway/mode"
|
|
||||||
]) ++ (lib.optionals config.wayland.windowManager.hyprland.enable [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
"hyprland/submap"
|
|
||||||
]) ++ [
|
|
||||||
"custom/currentplayer"
|
|
||||||
"custom/player"
|
|
||||||
];
|
|
||||||
|
|
||||||
modules-center = [
|
|
||||||
"pulseaudio"
|
|
||||||
"battery"
|
|
||||||
"clock"
|
|
||||||
"custom/unread-mail"
|
|
||||||
"custom/gpg-agent"
|
|
||||||
];
|
|
||||||
|
|
||||||
modules-right = [
|
|
||||||
"network"
|
|
||||||
"custom/tailscale-ping"
|
|
||||||
"custom/gamemode"
|
|
||||||
# TODO: currently broken for some reason
|
|
||||||
# "custom/gammastep"
|
|
||||||
"tray"
|
|
||||||
"custom/hostname"
|
|
||||||
];
|
|
||||||
|
|
||||||
clock = {
|
|
||||||
interval = 1;
|
|
||||||
format = "{:%d/%m %H:%M:%S}";
|
|
||||||
format-alt = "{:%Y-%m-%d %H:%M:%S %z}";
|
|
||||||
on-click-left = "mode";
|
|
||||||
tooltip-format = ''
|
|
||||||
<big>{:%Y %B}</big>
|
|
||||||
<tt><small>{calendar}</small></tt>'';
|
|
||||||
};
|
|
||||||
pulseaudio = {
|
|
||||||
format = "{icon} {volume}%";
|
|
||||||
format-muted = " 0%";
|
|
||||||
format-icons = {
|
|
||||||
headphone = "";
|
|
||||||
headset = "";
|
|
||||||
portable = "";
|
|
||||||
default = [ "" "" "" ];
|
|
||||||
};
|
|
||||||
on-click = pavucontrol;
|
|
||||||
};
|
|
||||||
idle_inhibitor = {
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
activated = "";
|
|
||||||
deactivated = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
bat = "BAT0";
|
|
||||||
interval = 10;
|
|
||||||
format-icons = [ "" "" "" "" "" "" "" "" "" "" ];
|
|
||||||
format = "{icon} {capacity}%";
|
|
||||||
format-charging = " {capacity}%";
|
|
||||||
onclick = "";
|
|
||||||
};
|
|
||||||
"sway/window" = {
|
|
||||||
max-length = 20;
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
interval = 3;
|
|
||||||
format-wifi = " {essid}";
|
|
||||||
format-ethernet = " Connected";
|
|
||||||
format-disconnected = "";
|
|
||||||
tooltip-format = ''
|
|
||||||
{ifname}
|
|
||||||
{ipaddr}/{cidr}
|
|
||||||
Up: {bandwidthUpBits}
|
|
||||||
Down: {bandwidthDownBits}'';
|
|
||||||
on-click = "";
|
|
||||||
};
|
|
||||||
"custom/tailscale-ping" = {
|
|
||||||
interval = 10;
|
|
||||||
return-type = "json";
|
|
||||||
exec =
|
|
||||||
let
|
|
||||||
inherit (builtins) concatStringsSep attrNames;
|
|
||||||
hosts = attrNames outputs.nixosConfigurations;
|
|
||||||
homeMachine = "merope";
|
|
||||||
remoteMachine = "alcyone";
|
|
||||||
in
|
|
||||||
jsonOutput "tailscale-ping" {
|
|
||||||
# Build variables for each host
|
|
||||||
pre = ''
|
|
||||||
set -o pipefail
|
|
||||||
${concatStringsSep "\n" (map (host: ''
|
|
||||||
ping_${host}="$(${timeout} 2 ${ping} -c 1 -q ${host} 2>/dev/null | ${tail} -1 | ${cut} -d '/' -f5 | ${cut} -d '.' -f1)ms" || ping_${host}="Disconnected"
|
|
||||||
'') hosts)}
|
|
||||||
'';
|
|
||||||
# Access a remote machine's and a home machine's ping
|
|
||||||
text = " $ping_${remoteMachine} / $ping_${homeMachine}";
|
|
||||||
# Show pings from all machines
|
|
||||||
tooltip = concatStringsSep "\n" (map (host: "${host}: $ping_${host}") hosts);
|
|
||||||
};
|
|
||||||
format = "{}";
|
|
||||||
on-click = "";
|
|
||||||
};
|
|
||||||
"custom/menu" = {
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "menu" {
|
|
||||||
text = "";
|
|
||||||
tooltip = ''$(${cat} /etc/os-release | ${grep} PRETTY_NAME | ${cut} -d '"' -f2)'';
|
|
||||||
};
|
|
||||||
on-click = "${wofi} -S drun -x 10 -y 10 -W 25% -H 60%";
|
|
||||||
};
|
|
||||||
"custom/hostname" = {
|
|
||||||
exec = "echo $USER@$HOSTNAME";
|
|
||||||
};
|
|
||||||
"custom/unread-mail" = {
|
|
||||||
interval = 5;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "unread-mail" {
|
|
||||||
pre = ''
|
|
||||||
count=$(${find} ~/Mail/*/Inbox/new -type f | ${wc} -l)
|
|
||||||
if ${pgrep} mbsync &>/dev/null; then
|
|
||||||
status="syncing"
|
|
||||||
else if [ "$count" == "0" ]; then
|
|
||||||
status="read"
|
|
||||||
else
|
|
||||||
status="unread"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
text = "$count";
|
|
||||||
alt = "$status";
|
|
||||||
};
|
|
||||||
format = "{icon} ({})";
|
|
||||||
format-icons = {
|
|
||||||
"read" = "";
|
|
||||||
"unread" = "";
|
|
||||||
"syncing" = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"custom/gpg-agent" = {
|
|
||||||
interval = 2;
|
|
||||||
return-type = "json";
|
|
||||||
exec =
|
|
||||||
let gpgCmds = import ../../../cli/gpg-commands.nix { inherit pkgs; };
|
|
||||||
in
|
|
||||||
jsonOutput "gpg-agent" {
|
|
||||||
pre = ''status=$(${gpgCmds.isUnlocked} && echo "unlocked" || echo "locked")'';
|
|
||||||
alt = "$status";
|
|
||||||
tooltip = "GPG is $status";
|
|
||||||
};
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
"locked" = "";
|
|
||||||
"unlocked" = "";
|
|
||||||
};
|
|
||||||
on-click = "";
|
|
||||||
};
|
|
||||||
"custom/gamemode" = {
|
|
||||||
exec-if = "${gamemoded} --status | ${grep} 'is active' -q";
|
|
||||||
interval = 2;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "gamemode" {
|
|
||||||
tooltip = "Gamemode is active";
|
|
||||||
};
|
|
||||||
format = " ";
|
|
||||||
};
|
|
||||||
"custom/gammastep" = {
|
|
||||||
interval = 5;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "gammastep" {
|
|
||||||
pre = ''
|
|
||||||
if unit_status="$(${systemctl} --user is-active gammastep)"; then
|
|
||||||
status="$unit_status ($(${journalctl} --user -u gammastep.service -g 'Period: ' | ${tail} -1 | ${cut} -d ':' -f6 | ${xargs}))"
|
|
||||||
else
|
|
||||||
status="$unit_status"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
alt = "\${status:-inactive}";
|
|
||||||
tooltip = "Gammastep is $status";
|
|
||||||
};
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
"activating" = " ";
|
|
||||||
"deactivating" = " ";
|
|
||||||
"inactive" = "? ";
|
|
||||||
"active (Night)" = " ";
|
|
||||||
"active (Nighttime)" = " ";
|
|
||||||
"active (Transition (Night)" = " ";
|
|
||||||
"active (Transition (Nighttime)" = " ";
|
|
||||||
"active (Day)" = " ";
|
|
||||||
"active (Daytime)" = " ";
|
|
||||||
"active (Transition (Day)" = " ";
|
|
||||||
"active (Transition (Daytime)" = " ";
|
|
||||||
};
|
|
||||||
on-click = "${systemctl} --user is-active gammastep && ${systemctl} --user stop gammastep || ${systemctl} --user start gammastep";
|
|
||||||
};
|
|
||||||
"custom/currentplayer" = {
|
|
||||||
interval = 2;
|
|
||||||
return-type = "json";
|
|
||||||
exec = jsonOutput "currentplayer" {
|
|
||||||
pre = ''
|
|
||||||
player="$(${playerctl} status -f "{{playerName}}" 2>/dev/null || echo "No player active" | ${cut} -d '.' -f1)"
|
|
||||||
count="$(${playerctl} -l | ${wc} -l)"
|
|
||||||
if ((count > 1)); then
|
|
||||||
more=" +$((count - 1))"
|
|
||||||
else
|
|
||||||
more=""
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
alt = "$player";
|
|
||||||
tooltip = "$player ($count available)";
|
|
||||||
text = "$more";
|
|
||||||
};
|
|
||||||
format = "{icon}{}";
|
|
||||||
format-icons = {
|
|
||||||
"No player active" = " ";
|
|
||||||
"Celluloid" = " ";
|
|
||||||
"spotify" = " ";
|
|
||||||
"ncspot" = " ";
|
|
||||||
"qutebrowser" = " ";
|
|
||||||
"firefox" = " ";
|
|
||||||
"discord" = " ";
|
|
||||||
"sublimemusic" = " ";
|
|
||||||
"kdeconnect" = " ";
|
|
||||||
"chromium" = " ";
|
|
||||||
};
|
|
||||||
on-click = "${playerctld} shift";
|
|
||||||
on-click-right = "${playerctld} unshift";
|
|
||||||
};
|
|
||||||
"custom/player" = {
|
|
||||||
exec-if = "${playerctl} status";
|
|
||||||
exec = ''${playerctl} metadata --format '{"text": "{{title}} - {{artist}}", "alt": "{{status}}", "tooltip": "{{title}} - {{artist}} ({{album}})"}' '';
|
|
||||||
return-type = "json";
|
|
||||||
interval = 2;
|
|
||||||
max-length = 30;
|
|
||||||
format = "{icon} {}";
|
|
||||||
format-icons = {
|
|
||||||
"Playing" = "";
|
|
||||||
"Paused" = " ";
|
|
||||||
"Stopped" = "";
|
|
||||||
};
|
|
||||||
on-click = "${playerctl} play-pause";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
# Cheatsheet:
|
|
||||||
# x -> all sides
|
|
||||||
# x y -> vertical, horizontal
|
|
||||||
# x y z -> top, horizontal, bottom
|
|
||||||
# w x y z -> top, right, bottom, left
|
|
||||||
style = let inherit (config.colorscheme) colors; in /* css */ ''
|
|
||||||
* {
|
|
||||||
font-family: ${config.fontProfiles.regular.family}, ${config.fontProfiles.monospace.family};
|
|
||||||
font-size: 12pt;
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-right {
|
|
||||||
margin-right: -15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-left {
|
|
||||||
margin-left: -15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar.top {
|
|
||||||
opacity: 0.95;
|
|
||||||
padding: 0;
|
|
||||||
background-color: #${colors.base00};
|
|
||||||
border: 2px solid #${colors.base0C};
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
window#waybar.bottom {
|
|
||||||
opacity: 0.90;
|
|
||||||
background-color: #${colors.base00};
|
|
||||||
border: 2px solid #${colors.base0C};
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
color: #${colors.base05};
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
background-color: #${colors.base01};
|
|
||||||
color: #${colors.base05};
|
|
||||||
padding: 5px 1px;
|
|
||||||
margin: 3px 0;
|
|
||||||
}
|
|
||||||
#workspaces button.hidden {
|
|
||||||
background-color: #${colors.base00};
|
|
||||||
color: #${colors.base04};
|
|
||||||
}
|
|
||||||
#workspaces button.focused,
|
|
||||||
#workspaces button.active {
|
|
||||||
background-color: #${colors.base0A};
|
|
||||||
color: #${colors.base00};
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
background-color: #${colors.base0C};
|
|
||||||
color: #${colors.base00};
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 15px;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-menu {
|
|
||||||
background-color: #${colors.base0C};
|
|
||||||
color: #${colors.base00};
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 22px;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
#custom-hostname {
|
|
||||||
background-color: #${colors.base0C};
|
|
||||||
color: #${colors.base00};
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 18px;
|
|
||||||
margin-right: 0;
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
#custom-currentplayer {
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
#tray {
|
|
||||||
color: #${colors.base05};
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (config) colorscheme;
|
|
||||||
inherit (colorscheme) colors;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.wezterm = {
|
|
||||||
enable = true;
|
|
||||||
colorSchemes = {
|
|
||||||
"${colorscheme.slug}" = {
|
|
||||||
foreground = "#${colors.base05}";
|
|
||||||
background = "#${colors.base00}";
|
|
||||||
|
|
||||||
ansi = [
|
|
||||||
"#${colors.base08}"
|
|
||||||
"#${colors.base09}"
|
|
||||||
"#${colors.base0A}"
|
|
||||||
"#${colors.base0B}"
|
|
||||||
"#${colors.base0C}"
|
|
||||||
"#${colors.base0D}"
|
|
||||||
"#${colors.base0E}"
|
|
||||||
"#${colors.base0F}"
|
|
||||||
];
|
|
||||||
brights = [
|
|
||||||
"#${colors.base00}"
|
|
||||||
"#${colors.base01}"
|
|
||||||
"#${colors.base02}"
|
|
||||||
"#${colors.base03}"
|
|
||||||
"#${colors.base04}"
|
|
||||||
"#${colors.base05}"
|
|
||||||
"#${colors.base06}"
|
|
||||||
"#${colors.base07}"
|
|
||||||
];
|
|
||||||
cursor_fg = "#${colors.base00}";
|
|
||||||
cursor_bg = "#${colors.base05}";
|
|
||||||
selection_fg = "#${colors.base00}";
|
|
||||||
selection_bg = "#${colors.base05}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = /* lua */ ''
|
|
||||||
return {
|
|
||||||
font = wezterm.font("${config.fontProfiles.monospace.family}"),
|
|
||||||
font_size = 12.0,
|
|
||||||
color_scheme = "${colorscheme.slug}",
|
|
||||||
hide_tab_bar_if_only_one_tab = true,
|
|
||||||
window_close_confirmation = "NeverPrompt",
|
|
||||||
set_environment_variables = {
|
|
||||||
TERM = 'wezterm',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
--- a/src/wofi.c Mon Feb 22 23:53:57 2021 -0800
|
|
||||||
+++ b/src/wofi.c Wed Aug 11 13:49:13 2021 -0300
|
|
||||||
@@ -881,12 +881,15 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
void wofi_term_run(const char* cmd) {
|
|
||||||
+ char *shell = getenv("SHELL");
|
|
||||||
+ if (!shell) shell = "sh";
|
|
||||||
+
|
|
||||||
if(terminal != NULL) {
|
|
||||||
- execlp(terminal, terminal, "-e", cmd, NULL);
|
|
||||||
+ execlp(terminal, terminal, "-e", shell, "-c", cmd, NULL);
|
|
||||||
}
|
|
||||||
size_t term_count = sizeof(terminals) / sizeof(char*);
|
|
||||||
for(size_t count = 0; count < term_count; ++count) {
|
|
||||||
- execlp(terminals[count], terminals[count], "-e", cmd, NULL);
|
|
||||||
+ execlp(terminals[count], terminals[count], "-e", shell, "-c", cmd, NULL);
|
|
||||||
}
|
|
||||||
fprintf(stderr, "No terminal emulator found please set term in config or use --term\n");
|
|
||||||
exit(1);
|
|
|
@ -1,25 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
programs.wofi = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.wofi.overrideAttrs (oa: {
|
|
||||||
patches = (oa.patches or [ ]) ++ [
|
|
||||||
./wofi-run-shell.patch # Fix for https://todo.sr.ht/~scoopta/wofi/174
|
|
||||||
];
|
|
||||||
});
|
|
||||||
settings = {
|
|
||||||
image_size = 48;
|
|
||||||
columns = 3;
|
|
||||||
allow_images = true;
|
|
||||||
insensitive = true;
|
|
||||||
run-always_parse_args = true;
|
|
||||||
run-cache_file = "/dev/null";
|
|
||||||
run-exec_search = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages =
|
|
||||||
let
|
|
||||||
inherit (config.programs.password-store) package enable;
|
|
||||||
in
|
|
||||||
lib.optional enable (pkgs.pass-wofi.override { pass = package; });
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
let inherit (config.colorscheme) colors;
|
|
||||||
in {
|
|
||||||
programs.zathura = {
|
|
||||||
enable = true;
|
|
||||||
options = {
|
|
||||||
selection-clipboard = "clipboard";
|
|
||||||
font = "${config.fontProfiles.regular.family} 12";
|
|
||||||
recolor = true;
|
|
||||||
default-bg = "#${colors.base00}";
|
|
||||||
default-fg = "#${colors.base01}";
|
|
||||||
statusbar-bg = "#${colors.base02}";
|
|
||||||
statusbar-fg = "#${colors.base04}";
|
|
||||||
inputbar-bg = "#${colors.base00}";
|
|
||||||
inputbar-fg = "#${colors.base07}";
|
|
||||||
notification-bg = "#${colors.base00}";
|
|
||||||
notification-fg = "#${colors.base07}";
|
|
||||||
notification-error-bg = "#${colors.base00}";
|
|
||||||
notification-error-fg = "#${colors.base08}";
|
|
||||||
notification-warning-bg = "#${colors.base00}";
|
|
||||||
notification-warning-fg = "#${colors.base08}";
|
|
||||||
highlight-color = "#${colors.base0A}";
|
|
||||||
highlight-active-color = "#${colors.base0D}";
|
|
||||||
completion-bg = "#${colors.base01}";
|
|
||||||
completion-fg = "#${colors.base05}";
|
|
||||||
completions-highlight-bg = "#${colors.base0D}";
|
|
||||||
completions-highlight-fg = "#${colors.base07}";
|
|
||||||
recolor-lightcolor = "#${colors.base00}";
|
|
||||||
recolor-darkcolor = "#${colors.base06}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
{ inputs, lib, pkgs, config, outputs, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
inputs.impermanence.nixosModules.home-manager.impermanence
|
|
||||||
./cli
|
|
||||||
./nvim
|
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
allowUnfreePredicate = _: true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
package = lib.mkDefault pkgs.nix;
|
|
||||||
settings = {
|
|
||||||
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
|
|
||||||
warn-dirty = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.startServices = "sd-switch";
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
home-manager.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
autorandr.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = lib.mkDefault "gburd";
|
|
||||||
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
|
||||||
stateVersion = lib.mkDefault "23.05";
|
|
||||||
sessionPath = [ "$HOME/.local/bin" ];
|
|
||||||
sessionVariables = {
|
|
||||||
FLAKE = "$HOME/ws/nix-config";
|
|
||||||
};
|
|
||||||
|
|
||||||
persistence = {
|
|
||||||
"/persist/home/gburd" = {
|
|
||||||
directories = [
|
|
||||||
"Documents"
|
|
||||||
"Downloads"
|
|
||||||
"Pictures"
|
|
||||||
"Videos"
|
|
||||||
".local/bin"
|
|
||||||
];
|
|
||||||
allowOther = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
imports = [
|
|
||||||
../common
|
|
||||||
../common/gnome-wm
|
|
||||||
|
|
||||||
./tty-init.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
emacs
|
|
||||||
ungoogled-chromium
|
|
||||||
gnupg
|
|
||||||
pinentry
|
|
||||||
alacritty
|
|
||||||
];
|
|
||||||
# dconf
|
|
||||||
# settings reset org.gnome.desktop.input-sources xkb-options
|
|
||||||
# gsettings reset org.gnome.desktop.input-sources sources
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
programs = {
|
|
||||||
fish.loginShellInit = ''
|
|
||||||
if test (tty) = "/dev/tty1"
|
|
||||||
exec Hyprland &> /dev/null
|
|
||||||
end
|
|
||||||
'';
|
|
||||||
zsh.loginExtra = ''
|
|
||||||
if [ "$(tty)" = "/dev/tty1" ]; then
|
|
||||||
exec Hyprland &> /dev/null
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
zsh.profileExtra = ''
|
|
||||||
if [ "$(tty)" = "/dev/tty1" ]; then
|
|
||||||
exec Hyprland &> /dev/null
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
imports = [ ./global ];
|
|
||||||
# Disable impermanence
|
|
||||||
home.persistence = lib.mkForce { };
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./wpa-gui.nix
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
home.packages = [ pkgs.wpa_supplicant_gui ];
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
fonts = import ./fonts.nix;
|
|
||||||
monitors = import ./monitors.nix;
|
|
||||||
pass-secret-service = import ./pass-secret-service.nix;
|
|
||||||
rgbdaemon = import ./rgbdaemon.nix;
|
|
||||||
shellcolor = import ./shellcolor.nix;
|
|
||||||
wallpaper = import ./wallpaper.nix;
|
|
||||||
xpo = import ./xpo.nix;
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
mkFontOption = kind: {
|
|
||||||
family = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = null;
|
|
||||||
description = "Family name for ${kind} font profile";
|
|
||||||
example = "Fira Code";
|
|
||||||
};
|
|
||||||
package = lib.mkOption {
|
|
||||||
type = lib.types.package;
|
|
||||||
default = null;
|
|
||||||
description = "Package for ${kind} font profile";
|
|
||||||
example = "pkgs.fira-code";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cfg = config.fontProfiles;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.fontProfiles = {
|
|
||||||
enable = lib.mkEnableOption "Whether to enable font profiles";
|
|
||||||
monospace = mkFontOption "monospace";
|
|
||||||
regular = mkFontOption "regular";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
fonts.fontconfig.enable = true;
|
|
||||||
home.packages = [ cfg.monospace.package cfg.regular.package ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (lib) mkOption types;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.monitors = mkOption {
|
|
||||||
type = types.listOf (types.submodule {
|
|
||||||
options = {
|
|
||||||
name = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
example = "DP-1";
|
|
||||||
};
|
|
||||||
primary = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
width = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
example = 1920;
|
|
||||||
};
|
|
||||||
height = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
example = 1080;
|
|
||||||
};
|
|
||||||
refreshRate = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 60;
|
|
||||||
};
|
|
||||||
x = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 0;
|
|
||||||
};
|
|
||||||
y = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 0;
|
|
||||||
};
|
|
||||||
enabled = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
};
|
|
||||||
workspace = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
assertions = [{
|
|
||||||
assertion = ((lib.length config.monitors) != 0) ->
|
|
||||||
((lib.length (lib.filter (m: m.primary) config.monitors)) == 1);
|
|
||||||
message = "Exactly one monitor must be set to primary.";
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,130 +0,0 @@
|
||||||
{ lib, pkgs, config, ... }:
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let cfg = config.services.rgbdaemon;
|
|
||||||
in {
|
|
||||||
options.services.rgbdaemon = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Enable rgbdaemon
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
package = mkOption {
|
|
||||||
type = types.package;
|
|
||||||
default = pkgs.rgbdaemon;
|
|
||||||
};
|
|
||||||
interval = mkOption {
|
|
||||||
type = types.float;
|
|
||||||
default = 0.8;
|
|
||||||
description = ''
|
|
||||||
Daemon main loop interval
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
daemons = {
|
|
||||||
mute = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Enable mute button daemon
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
swayLock = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Enable swaylock status daemon
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
player = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Enable media player status daemon
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
colors =
|
|
||||||
let
|
|
||||||
mkColorOption = name: {
|
|
||||||
inherit name;
|
|
||||||
value = mkOption {
|
|
||||||
type = types.strMatching "[a-fA-F0-9]{6}";
|
|
||||||
description = "${name} color.";
|
|
||||||
default = "ffffff";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
listToAttrs (map mkColorOption [
|
|
||||||
"background"
|
|
||||||
"foreground"
|
|
||||||
"secondary"
|
|
||||||
"tertiary"
|
|
||||||
"quaternary"
|
|
||||||
]);
|
|
||||||
mouse = {
|
|
||||||
device = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
description = "Mouse device cmd path";
|
|
||||||
default = "/dev/input/ckb2/cmd";
|
|
||||||
};
|
|
||||||
dpi = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
description = "Mouse DPI";
|
|
||||||
default = 750;
|
|
||||||
};
|
|
||||||
highlighted = mkOption {
|
|
||||||
type = types.listOf types.str;
|
|
||||||
description = "Always highlighted mouse keys";
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keyboard = {
|
|
||||||
device = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
description = "Mouse device cmd path";
|
|
||||||
default = "/dev/input/ckb1/cmd";
|
|
||||||
};
|
|
||||||
highlighted = mkOption {
|
|
||||||
type = types.listOf types.str;
|
|
||||||
description = "Always highlighted keyboard keys";
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
xdg.configFile."rgbdaemon.conf" = {
|
|
||||||
text = ''
|
|
||||||
DAEMON_INTERVAL=${lib.strings.floatToString cfg.interval}
|
|
||||||
KEYBOARD_DEVICE=${cfg.keyboard.device}
|
|
||||||
MOUSE_DEVICE=${cfg.mouse.device}
|
|
||||||
KEYBOARD_HIGHLIGHTED=${
|
|
||||||
lib.concatStringsSep "," cfg.keyboard.highlighted
|
|
||||||
}
|
|
||||||
MOUSE_HIGHLIGHTED=${lib.concatStringsSep "," cfg.mouse.highlighted}
|
|
||||||
COLOR_BACKGROUND=${cfg.colors.background}
|
|
||||||
COLOR_FOREGROUND=${cfg.colors.foreground}
|
|
||||||
COLOR_SECONDARY=${cfg.colors.secondary}
|
|
||||||
COLOR_TERTIARY=${cfg.colors.tertiary}
|
|
||||||
COLOR_QUATERNARY=${cfg.colors.quaternary}
|
|
||||||
ENABLE_SWAY_LOCK=${toString cfg.daemons.swayLock}
|
|
||||||
ENABLE_MUTE=${toString cfg.daemons.mute}
|
|
||||||
ENABLE_PLAYER=${toString cfg.daemons.player}
|
|
||||||
'';
|
|
||||||
onChange = ''
|
|
||||||
${pkgs.procps}/bin/pkill -u $USER -f -SIGHUP rgbdaemon || true
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
systemd.user.services.rgbdaemon = {
|
|
||||||
Unit = { Description = "Misterio RGB Daemon"; };
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${cfg.package}/bin/rgbdaemon";
|
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
|
||||||
Restart = "always";
|
|
||||||
};
|
|
||||||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,110 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.programs.shellcolor;
|
|
||||||
package = pkgs.shellcolord;
|
|
||||||
|
|
||||||
renderSetting = key: value: ''
|
|
||||||
${key}=${value}
|
|
||||||
'';
|
|
||||||
renderSettings = settings:
|
|
||||||
lib.concatStrings (lib.mapAttrsToList renderSetting settings);
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.programs.shellcolor = {
|
|
||||||
enable = lib.mkEnableOption "shellcolor";
|
|
||||||
|
|
||||||
enableBashIntegration = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Whether to enable Bash integration.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
enableZshIntegration = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Whether to enable Zsh integration.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
enableFishIntegration = lib.mkOption {
|
|
||||||
default = true;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Whether to enable Fish integration.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
enableBashSshFunction = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Whether to enable SSH integration by replacing ssh with a bash function.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
enableFishSshFunction = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
type = lib.types.bool;
|
|
||||||
description = ''
|
|
||||||
Whether to enable SSH integration by replacing ssh with a fish function.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = lib.mkOption {
|
|
||||||
type = lib.types.attrsOf lib.types.str;
|
|
||||||
default = { };
|
|
||||||
example = lib.literalExpression ''
|
|
||||||
{
|
|
||||||
base00 = "000000";
|
|
||||||
base05 = "ffffff";
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
description = ''
|
|
||||||
Options for shellcolord config file. Colors (without leading #)
|
|
||||||
from base00 until base0F.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home.packages = [ package ];
|
|
||||||
|
|
||||||
xdg.configFile."shellcolor.conf" = lib.mkIf (cfg.settings != { }) {
|
|
||||||
text = renderSettings cfg.settings;
|
|
||||||
onChange = ''
|
|
||||||
timeout 1 ${package}/bin/shellcolor apply || true
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.bash.initExtra = lib.mkIf cfg.enableBashIntegration
|
|
||||||
(lib.mkBefore ''
|
|
||||||
${package}/bin/shellcolord $$ & disown
|
|
||||||
${lib.optionalString cfg.enableBashSshFunction ''
|
|
||||||
ssh() {
|
|
||||||
${package}/bin/shellcolor disable $$
|
|
||||||
command ssh "$@"
|
|
||||||
${package}/bin/shellcolor enable $$
|
|
||||||
${package}/bin/shellcolor apply $$
|
|
||||||
}
|
|
||||||
''}
|
|
||||||
'');
|
|
||||||
|
|
||||||
programs.zsh.initExtra = lib.mkIf cfg.enableZshIntegration (lib.mkBefore ''
|
|
||||||
${package}/bin/shellcolord $$ & disown
|
|
||||||
'');
|
|
||||||
|
|
||||||
programs.fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration
|
|
||||||
(lib.mkBefore ''
|
|
||||||
${package}/bin/shellcolord $fish_pid & disown
|
|
||||||
'');
|
|
||||||
|
|
||||||
programs.fish.functions.ssh = lib.mkIf cfg.enableFishSshFunction ''
|
|
||||||
${package}/bin/shellcolor disable $fish_pid
|
|
||||||
command ssh $argv
|
|
||||||
${package}/bin/shellcolor enable $fish_pid
|
|
||||||
${package}/bin/shellcolor apply $fish_pid
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
let inherit (lib) types mkOption;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.wallpaper = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
default = "";
|
|
||||||
description = ''
|
|
||||||
Wallpaper path
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
let
|
|
||||||
cfg = config.programs.xpo;
|
|
||||||
package = pkgs.xpo;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.programs.xpo = {
|
|
||||||
enable = lib.mkEnableOption "xpo";
|
|
||||||
|
|
||||||
defaultServer = lib.mkOption {
|
|
||||||
default = null;
|
|
||||||
type = with lib.types; nullOr str;
|
|
||||||
description = ''
|
|
||||||
Default SSH server/endpoint to use when tunneling.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
home = {
|
|
||||||
packages = [ package ];
|
|
||||||
sessionVariables.XPO_SERVER = lib.optionalString (cfg.defaultServer != null) cfg.defaultServer;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{
|
|
||||||
openrgb = import ./openrgb.nix;
|
|
||||||
satisfactory = import ./satisfactory.nix;
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let cfg = config.hardware.openrgb;
|
|
||||||
|
|
||||||
in {
|
|
||||||
options.hardware.openrgb = {
|
|
||||||
enable = mkEnableOption "OpenRGB";
|
|
||||||
package = mkOption {
|
|
||||||
type = types.package;
|
|
||||||
default = pkgs.openrgb;
|
|
||||||
defaultText = "pkgs.openrgb";
|
|
||||||
description = ''
|
|
||||||
The package implementing OpenRGB.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
boot.kernelModules = [ "v4l2loopback" "i2c-dev" "i2c-piix4" ];
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
|
||||||
services.udev.packages = [ cfg.package ];
|
|
||||||
|
|
||||||
systemd.services.openrgb = {
|
|
||||||
description = "OpenRGB Daemon";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${cfg.package}/bin/openrgb --server";
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
maintainers = with lib.maintainers; [ misterio77 ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
let cfg = config.services.satisfactory-server;
|
|
||||||
|
|
||||||
in {
|
|
||||||
options.services.satisfactory-server = {
|
|
||||||
enable = mkEnableOption "Satisfactory Dedicated Server";
|
|
||||||
|
|
||||||
steamcmdPackage = mkOption {
|
|
||||||
type = types.package;
|
|
||||||
default = pkgs.steamcmd;
|
|
||||||
defaultText = "pkgs.steamcmd";
|
|
||||||
description = ''
|
|
||||||
The package implementing SteamCMD
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
dataDir = mkOption {
|
|
||||||
type = types.path;
|
|
||||||
description = "Directory to store game server";
|
|
||||||
default = "/var/lib/satisfactory";
|
|
||||||
};
|
|
||||||
|
|
||||||
launchOptions = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
description = "Launch options to use.";
|
|
||||||
default = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
openFirewall = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Whether to open ports in the firewall for the server
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
|
|
||||||
systemd.services.satisfactory-server =
|
|
||||||
let
|
|
||||||
steamcmd = "${cfg.steamcmdPackage}/bin/steamcmd";
|
|
||||||
steam-run = "${pkgs.steam-run}/bin/steam-run";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
description = "Satisfactory Dedicated Server";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
after = [ "network.target" ];
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
TimeoutSec = "15min";
|
|
||||||
ExecStart =
|
|
||||||
"${steam-run} ${cfg.dataDir}/FactoryServer.sh ${cfg.launchOptions}";
|
|
||||||
Restart = "always";
|
|
||||||
User = "satisfactory";
|
|
||||||
WorkingDirectory = cfg.dataDir;
|
|
||||||
};
|
|
||||||
|
|
||||||
preStart = ''
|
|
||||||
${steamcmd} +force_install_dir "${cfg.dataDir}" +login anonymous +app_update 1690800 validate +quit
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.satisfactory = {
|
|
||||||
description = "Satisfactory server service user";
|
|
||||||
home = cfg.dataDir;
|
|
||||||
createHome = true;
|
|
||||||
isSystemUser = true;
|
|
||||||
group = "satisfactory";
|
|
||||||
};
|
|
||||||
users.groups.satisfactory = { };
|
|
||||||
|
|
||||||
networking.firewall =
|
|
||||||
mkIf cfg.openFirewall { allowedUDPPorts = [ 15777 7777 15000 ]; };
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
_:
|
|
||||||
{
|
|
||||||
# Enable acme for usage with nginx vhosts
|
|
||||||
security.acme = {
|
|
||||||
defaults.email = "greg+acme@burd.me";
|
|
||||||
acceptTerms = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.persistence = {
|
|
||||||
"/persist" = {
|
|
||||||
directories = [
|
|
||||||
"/var/lib/acme"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{ config, inputs, pkgs, lib, ... }:
|
|
||||||
let
|
|
||||||
inherit (config.networking) hostName;
|
|
||||||
# Only enable auto upgrade if current config came from a clean tree
|
|
||||||
# This avoids accidental auto-upgrades when working locally.
|
|
||||||
isClean = inputs.self ? rev;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
system.autoUpgrade = {
|
|
||||||
enable = isClean;
|
|
||||||
dates = "hourly";
|
|
||||||
flags = [
|
|
||||||
"--refresh"
|
|
||||||
];
|
|
||||||
flake = "git://github.com/gburd/nix-config?ref=release-${hostName}";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Only run if current config (self) is older than the new one.
|
|
||||||
systemd.services.nixos-upgrade = lib.mkIf config.system.autoUpgrade.enable {
|
|
||||||
serviceConfig.ExecCondition = lib.getExe (
|
|
||||||
pkgs.writeShellScriptBin "check-date" ''
|
|
||||||
lastModified() {
|
|
||||||
nix flake metadata "$1" --refresh --json | ${lib.getExe pkgs.jq} '.lastModified'
|
|
||||||
}
|
|
||||||
test "$(lastModified "${config.system.autoUpgrade.flake}")" -gt "$(lastModified "self")"
|
|
||||||
''
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
# This file (and the global directory) holds config used on all hosts
|
|
||||||
{ inputs, outputs, ... }: {
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
./acme.nix
|
|
||||||
./auto-upgrade.nix
|
|
||||||
./fish.nix
|
|
||||||
./locale.nix
|
|
||||||
./nix.nix
|
|
||||||
./openssh.nix
|
|
||||||
./optin-persistence.nix
|
|
||||||
./podman.nix
|
|
||||||
./sops.nix
|
|
||||||
# ./ssh-serve-store.nix
|
|
||||||
./steam-hardware.nix
|
|
||||||
./systemd-initrd.nix
|
|
||||||
./tailscale.nix
|
|
||||||
] ++ (builtins.attrValues outputs.nixosModules);
|
|
||||||
|
|
||||||
home-manager.extraSpecialArgs = { inherit inputs outputs; };
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
|
||||||
config = {
|
|
||||||
# Disable if you don't want unfree packages
|
|
||||||
allowUnfree = true;
|
|
||||||
# Accept the joypixels license
|
|
||||||
joypixels.acceptLicense = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Fix for qt6 plugins
|
|
||||||
# TODO: maybe upstream this?
|
|
||||||
environment.profileRelativeSessionVariables = {
|
|
||||||
QT_PLUGIN_PATH = [ "/lib/qt-6/plugins" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.enableAllTerminfo = true;
|
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
networking.domain = "burd.me";
|
|
||||||
|
|
||||||
# Increase open file limit for sudoers
|
|
||||||
security.pam.loginLimits = [
|
|
||||||
{
|
|
||||||
domain = "@wheel";
|
|
||||||
item = "nofile";
|
|
||||||
type = "soft";
|
|
||||||
value = "524288";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
domain = "@wheel";
|
|
||||||
item = "nofile";
|
|
||||||
type = "hard";
|
|
||||||
value = "1048576";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Only install the docs I use
|
|
||||||
documentation.enable = true;
|
|
||||||
documentation.nixos.enable = false;
|
|
||||||
documentation.man.enable = true;
|
|
||||||
documentation.info.enable = false;
|
|
||||||
documentation.doc.enable = false;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
vendor = {
|
|
||||||
completions.enable = true;
|
|
||||||
config.enable = true;
|
|
||||||
functions.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
{ lib, ... }: {
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = lib.mkDefault "en_US.UTF-8";
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
supportedLocales = lib.mkDefault [
|
|
||||||
"en_US.UTF-8/UTF-8"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
time.timeZone = lib.mkDefault "America/New_York";
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
{ inputs, lib, ... }:
|
|
||||||
{
|
|
||||||
nix = {
|
|
||||||
settings = {
|
|
||||||
# substituters = [
|
|
||||||
# "https://cache.burd.me"
|
|
||||||
# ];
|
|
||||||
# trusted-public-keys = [
|
|
||||||
# "cache.burd.me:kszZ/NSwE/TjhOcPPQ16IuUiuRSisdiIwhKZCxguaWg="
|
|
||||||
# ];
|
|
||||||
trusted-users = [ "root" "@wheel" ];
|
|
||||||
auto-optimise-store = lib.mkDefault true;
|
|
||||||
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
|
|
||||||
warn-dirty = false;
|
|
||||||
system-features = [ "kvm" "big-parallel" "nixos-test" ];
|
|
||||||
flake-registry = ""; # Disable global flake registry
|
|
||||||
};
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
# Keep the last 3 generations
|
|
||||||
options = "--delete-older-than +3";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Add each flake input as a registry
|
|
||||||
# To make nix3 commands consistent with the flake
|
|
||||||
registry = lib.mapAttrs (_: value: { flake = value; }) inputs;
|
|
||||||
|
|
||||||
# Add nixpkgs input to NIX_PATH
|
|
||||||
# This lets nix2 commands still use <nixpkgs>
|
|
||||||
nixPath = [ "nixpkgs=${inputs.nixpkgs.outPath}" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
{ outputs, lib, config, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
hosts = outputs.nixosConfigurations;
|
|
||||||
pubKey = host: ../../${host}/ssh_host_ed25519_key.pub;
|
|
||||||
|
|
||||||
# Sops needs acess to the keys before the persist dirs are even mounted; so
|
|
||||||
# just persisting the keys won't work, we must point at /persist
|
|
||||||
hasOptinPersistence = config.environment.persistence ? "/persist";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
# Harden
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
# Automatically remove stale sockets
|
|
||||||
StreamLocalBindUnlink = "yes";
|
|
||||||
# Allow forwarding ports to everywhere
|
|
||||||
GatewayPorts = "clientspecified";
|
|
||||||
};
|
|
||||||
|
|
||||||
hostKeys = [{
|
|
||||||
path = "${lib.optionalString hasOptinPersistence "/persist"}/etc/ssh/ssh_host_ed25519_key";
|
|
||||||
type = "ed25519";
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh = {
|
|
||||||
# Each hosts public key
|
|
||||||
knownHosts = builtins.mapAttrs
|
|
||||||
(name: _: {
|
|
||||||
publicKeyFile = pubKey name;
|
|
||||||
# extraHostNames =
|
|
||||||
# (lib.optional (name == hostName) "localhost") ++ # Alias for localhost if it's the same host
|
|
||||||
# (lib.optionals (name == gitHost) [ "burd.me" "git.burd.me" ]);
|
|
||||||
})
|
|
||||||
hosts;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Passwordless sudo when SSH'ing with keys
|
|
||||||
security.pam.enableSSHAgentAuth = true;
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
let
|
|
||||||
dockerEnabled = config.virtualisation.docker.enable;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
dockerCompat = !dockerEnabled;
|
|
||||||
dockerSocket.enable = !dockerEnabled;
|
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.persistence = {
|
|
||||||
"/persist".directories = [
|
|
||||||
"/var/lib/containers"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
_:
|
|
||||||
{
|
|
||||||
nix = {
|
|
||||||
sshServe = {
|
|
||||||
enable = true;
|
|
||||||
keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAz0dIbaTuAihil/si33MQSFH5yBFoupwnV5gcq2CCbO nix-ssh"
|
|
||||||
];
|
|
||||||
protocol = "ssh";
|
|
||||||
write = true;
|
|
||||||
};
|
|
||||||
settings.trusted-users = [ "nix-ssh" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
hardware.steam-hardware.enable = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
boot.initrd.systemd.enable = true;
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
services.tailscale = {
|
|
||||||
enable = true;
|
|
||||||
useRoutingFeatures = lib.mkDefault "client";
|
|
||||||
};
|
|
||||||
networking.firewall = {
|
|
||||||
checkReversePath = "loose";
|
|
||||||
allowedUDPPorts = [ 41641 ]; # Facilitate firewall punching
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.persistence = {
|
|
||||||
"/persist".directories = [ "/var/lib/tailscale" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
hardware.ckb-next = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.ckb-next-resume = {
|
|
||||||
description = "Restart ckb-next after hibernation";
|
|
||||||
after = [ "suspend.target" ];
|
|
||||||
wantedBy = [ "suspend.target" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = "${pkgs.systemd}/bin/systemctl --no-block restart ckb-next.service";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
virtualisation.docker = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,83 +0,0 @@
|
||||||
# This file contains an ephemeral btrfs root configuration
|
|
||||||
# TODO: perhaps partition using disko in the future
|
|
||||||
{ lib, config, ... }:
|
|
||||||
let
|
|
||||||
hostname = config.networking.hostName;
|
|
||||||
wipeScript = ''
|
|
||||||
mkdir /tmp -p
|
|
||||||
MNTPOINT=$(mktemp -d)
|
|
||||||
(
|
|
||||||
mount -t btrfs -o subvol=/ /dev/disk/by-label/${hostname} "$MNTPOINT"
|
|
||||||
trap 'umount "$MNTPOINT"' EXIT
|
|
||||||
|
|
||||||
echo "Creating needed directories"
|
|
||||||
mkdir -p "$MNTPOINT"/persist/var/{log,lib/{nixos,systemd}}
|
|
||||||
|
|
||||||
echo "Cleaning root subvolume"
|
|
||||||
btrfs subvolume list -o "$MNTPOINT/root" | cut -f9 -d ' ' |
|
|
||||||
while read -r subvolume; do
|
|
||||||
btrfs subvolume delete "$MNTPOINT/$subvolume"
|
|
||||||
done && btrfs subvolume delete "$MNTPOINT/root"
|
|
||||||
|
|
||||||
echo "Restoring blank subvolume"
|
|
||||||
btrfs subvolume snapshot "$MNTPOINT/root-blank" "$MNTPOINT/root"
|
|
||||||
)
|
|
||||||
'';
|
|
||||||
phase1Systemd = config.boot.initrd.systemd.enable;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
boot.initrd = {
|
|
||||||
supportedFilesystems = [ "btrfs" ];
|
|
||||||
postDeviceCommands = lib.mkIf (!phase1Systemd) (lib.mkBefore wipeScript);
|
|
||||||
systemd.services.restore-root = lib.mkIf phase1Systemd {
|
|
||||||
description = "Rollback btrfs rootfs";
|
|
||||||
wantedBy = [ "initrd.target" ];
|
|
||||||
requires = [
|
|
||||||
"dev-disk-by\\x2dlabel-${hostname}.device"
|
|
||||||
];
|
|
||||||
after = [
|
|
||||||
"dev-disk-by\\x2dlabel-${hostname}.device"
|
|
||||||
"systemd-cryptsetup@${hostname}.service"
|
|
||||||
];
|
|
||||||
before = [ "sysroot.mount" ];
|
|
||||||
unitConfig.DefaultDependencies = "no";
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
script = wipeScript;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"/" = {
|
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=root" "compress=zstd" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"/nix" = {
|
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=nix" "noatime" "compress=zstd" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"/persist" = {
|
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=persist" "compress=zstd" ];
|
|
||||||
neededForBoot = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"/logs" = {
|
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=logs" "noatime" "compress=zstd" ];
|
|
||||||
neededForBoot = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"/swap" = {
|
|
||||||
device = "/dev/disk/by-label/${hostname}";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=swap" "noatime" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
services.fail2ban = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
programs.gamemode = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
softrealtime = "on";
|
|
||||||
inhibit_screensaver = 1;
|
|
||||||
};
|
|
||||||
gpu = {
|
|
||||||
apply_gpu_optimisations = "accept-responsibility";
|
|
||||||
gpu_device = 0;
|
|
||||||
amd_performance_level = "high";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
dpi = 180;
|
|
||||||
displayManager.gdm = {
|
|
||||||
enable = true;
|
|
||||||
wayland = true;
|
|
||||||
autoSuspend = false;
|
|
||||||
};
|
|
||||||
desktopManager.gnome = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
excludePackages = [ pkgs.xterm ];
|
|
||||||
};
|
|
||||||
geoclue2.enable = true;
|
|
||||||
gnome.games.enable = true;
|
|
||||||
};
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
services.avahi.enable = true;
|
|
||||||
|
|
||||||
# console.font = "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";
|
|
||||||
# environment.variables = {
|
|
||||||
# GDK_SCALE = "2";
|
|
||||||
# GDK_DPI_SCALE = "0.5";
|
|
||||||
# _JAVA_OPTIONS = "-Dsun.java2d.uiScale=2";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
services.avahi.nssmdns = true;
|
|
||||||
# for a WiFi printer
|
|
||||||
services.avahi.openFirewall = true;
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
boot.kernel.sysctl = {
|
|
||||||
# Disable VDSO on 32-bits to avoid league of legends kick
|
|
||||||
"abi.vsyscall32" = 0;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mariadb;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.persistence = {
|
|
||||||
"/persist".directories = [
|
|
||||||
"/var/lib/mysql"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
let
|
|
||||||
inherit (config.networking) hostName;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services = {
|
|
||||||
nginx = {
|
|
||||||
enable = true;
|
|
||||||
recommendedTlsSettings = true;
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
recommendedGzipSettings = true;
|
|
||||||
recommendedOptimisation = true;
|
|
||||||
clientMaxBodySize = "300m";
|
|
||||||
|
|
||||||
virtualHosts."${hostName}.burd.me" = {
|
|
||||||
default = true;
|
|
||||||
forceSSL = true;
|
|
||||||
enableACME = true;
|
|
||||||
locations."/metrics" = {
|
|
||||||
proxyPass = "http://localhost:${toString config.services.prometheus.exporters.nginxlog.port}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
prometheus.exporters.nginxlog = {
|
|
||||||
enable = true;
|
|
||||||
group = "nginx";
|
|
||||||
settings.namespaces = [{
|
|
||||||
name = "filelogger";
|
|
||||||
source.files = [ "/var/log/nginx/access.log" ];
|
|
||||||
format = "$remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\"";
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
|
|
||||||
uwsgi = {
|
|
||||||
enable = true;
|
|
||||||
user = "nginx";
|
|
||||||
group = "nginx";
|
|
||||||
plugins = [ "cgi" ];
|
|
||||||
instance = {
|
|
||||||
type = "emperor";
|
|
||||||
vassals = lib.mkBefore { };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{
|
|
||||||
services = {
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
desktopManager.pantheon = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
displayManager.lightdm = {
|
|
||||||
enable = true;
|
|
||||||
greeters.pantheon.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
pantheon = {
|
|
||||||
apps.enable = true;
|
|
||||||
};
|
|
||||||
geoclue2.enable = true;
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
pantheon-tweaks.enable = true;
|
|
||||||
};
|
|
||||||
# Fix shutdown taking a long time
|
|
||||||
# https://gist.github.com/worldofpeace/27fcdcb111ddf58ba1227bf63501a5fe
|
|
||||||
systemd.extraConfig = ''
|
|
||||||
DefaultTimeoutStopSec=10s
|
|
||||||
DefaultTimeoutStartSec=10s
|
|
||||||
'';
|
|
||||||
|
|
||||||
services.avahi.enable = false;
|
|
||||||
networking.networkmanager.enable = false;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
_: {
|
|
||||||
services.postgresql.enable = true;
|
|
||||||
|
|
||||||
environment.persistence = {
|
|
||||||
"/persist".directories = [
|
|
||||||
"/var/lib/postgresql"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
# https://github.com/starcitizen-lug/information-howtos/wiki
|
|
||||||
|
|
||||||
# Avoids crashes
|
|
||||||
boot.kernel.sysctl = {
|
|
||||||
"vm.max_map_count" = 16777216;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
boot.loader = {
|
|
||||||
systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
consoleMode = "max";
|
|
||||||
};
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
imports = [ ../global/tailscale.nix ];
|
|
||||||
services.tailscale = {
|
|
||||||
useRoutingFeatures = "both";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
{ config, ... }: {
|
|
||||||
# Wireless secrets stored through sops
|
|
||||||
sops.secrets.wireless = {
|
|
||||||
sopsFile = ../secrets.yaml;
|
|
||||||
neededForUsers = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.wireless = {
|
|
||||||
enable = true;
|
|
||||||
fallbackToWPA2 = false;
|
|
||||||
# Declarative
|
|
||||||
environmentFile = config.sops.secrets.wireless.path;
|
|
||||||
networks = {
|
|
||||||
"JVGCLARO" = {
|
|
||||||
psk = "@JVGCLARO@";
|
|
||||||
};
|
|
||||||
"Kartodrorealm" = {
|
|
||||||
psk = "@KARTODROREALM@";
|
|
||||||
};
|
|
||||||
"Kartodrorealm-5G" = {
|
|
||||||
psk = "@KARTODROREALM@";
|
|
||||||
};
|
|
||||||
"Marcos_2.4Ghz" = {
|
|
||||||
pskRaw = "@MARCOS_24@";
|
|
||||||
};
|
|
||||||
"Marcos_5Ghz" = {
|
|
||||||
pskRaw = "@MARCOS_50@";
|
|
||||||
};
|
|
||||||
"Misterio" = {
|
|
||||||
pskRaw = "@MISTERIO@";
|
|
||||||
};
|
|
||||||
"VIVOFIBRA-FC41-5G" = {
|
|
||||||
pskRaw = "@MARCOS_SANTOS_5G@";
|
|
||||||
};
|
|
||||||
"zoocha" = {
|
|
||||||
pskRaw = "@ZOOCHA@";
|
|
||||||
};
|
|
||||||
"eduroam" = {
|
|
||||||
auth = ''
|
|
||||||
key_mgmt=WPA-EAP
|
|
||||||
pairwise=CCMP
|
|
||||||
auth_alg=OPEN
|
|
||||||
eap=PEAP
|
|
||||||
identity="10856803@usp.br"
|
|
||||||
password="@EDUROAM@"
|
|
||||||
phase2="auth=MSCHAPV2"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Imperative
|
|
||||||
allowAuxiliaryImperativeNetworks = true;
|
|
||||||
userControlled = {
|
|
||||||
enable = true;
|
|
||||||
group = "network";
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
update_config=1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Ensure group exists
|
|
||||||
users.groups.network = { };
|
|
||||||
|
|
||||||
systemd.services.wpa_supplicant.preStart = "touch /etc/wpa_supplicant.conf";
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
programs.wireshark = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
services.xserver.serverFlagsSection = ''
|
|
||||||
Option "StandbyTime" "0"
|
|
||||||
Option "SuspendTime" "0"
|
|
||||||
Option "OffTime" "0"
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../_mixins/services/bluetooth.nix
|
|
||||||
../_mixins/services/pipewire.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
}
|
|
|
@ -1,76 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
let
|
|
||||||
addPatches = pkg: patches: pkg.overrideAttrs (oldAttrs: {
|
|
||||||
patches = (oldAttrs.patches or [ ]) ++ patches;
|
|
||||||
});
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# For every flake input, aliases 'pkgs.inputs.${flake}' to
|
|
||||||
# 'inputs.${flake}.packages.${pkgs.system}' or
|
|
||||||
# 'inputs.${flake}.legacyPackages.${pkgs.system}'
|
|
||||||
flake-inputs = final: _: {
|
|
||||||
inputs = builtins.mapAttrs
|
|
||||||
(_: flake:
|
|
||||||
let
|
|
||||||
legacyPackages = (flake.legacyPackages or { }).${final.system} or { };
|
|
||||||
packages = (flake.packages or { }).${final.system} or { };
|
|
||||||
in
|
|
||||||
if legacyPackages != { } then legacyPackages else packages
|
|
||||||
)
|
|
||||||
inputs;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Adds my custom packages
|
|
||||||
additions = final: prev: import ../pkgs { pkgs = final; } // {
|
|
||||||
formats = prev.formats // import ../pkgs/formats { pkgs = final; };
|
|
||||||
vimPlugins = prev.vimPlugins // final.callPackage ../pkgs/vim-plugins { };
|
|
||||||
};
|
|
||||||
|
|
||||||
# Modifies existing packages
|
|
||||||
modifications = final: prev: {
|
|
||||||
vimPlugins = prev.vimPlugins // {
|
|
||||||
vim-numbertoggle = addPatches prev.vimPlugins.vim-numbertoggle [ ./vim-numbertoggle-command-mode.patch ];
|
|
||||||
};
|
|
||||||
|
|
||||||
passExtensions = prev.passExtensions // {
|
|
||||||
# https://github.com/tadfisher/pass-otp/pull/173
|
|
||||||
pass-otp = addPatches prev.passExtensions.pass-otp [ ./pass-otp-fix-completion.patch ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://github.com/mdellweg/pass_secret_service/pull/37
|
|
||||||
pass-secret-service = addPatches prev.pass-secret-service [ ./pass-secret-service-native.diff ];
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nix/issues/5567#issuecomment-1193259926
|
|
||||||
# nix = addPatches prev.nix [ ./nix-make-installables-expr-context.patch ];
|
|
||||||
|
|
||||||
# xdg-utils-spawn-terminal = addPatches prev.xdg-utils [ ./xdg-open-spawn-terminal.diff ];
|
|
||||||
xdg-utils-spawn-terminal = prev.xdg-utils;
|
|
||||||
|
|
||||||
pfetch = prev.pfetch.overrideAttrs (oldAttrs: {
|
|
||||||
version = "unstable-2021-12-10";
|
|
||||||
src = final.fetchFromGitHub {
|
|
||||||
owner = "dylanaraps";
|
|
||||||
repo = "pfetch";
|
|
||||||
rev = "a906ff89680c78cec9785f3ff49ca8b272a0f96b";
|
|
||||||
sha256 = "sha256-9n5w93PnSxF53V12iRqLyj0hCrJ3jRibkw8VK3tFDvo=";
|
|
||||||
};
|
|
||||||
# Add term option, rename de to desktop, add scheme option
|
|
||||||
patches = (oldAttrs.patches or [ ]) ++ [ ./pfetch.patch ];
|
|
||||||
});
|
|
||||||
|
|
||||||
qutebrowser = prev.qutebrowser.overrideAttrs (oldAttrs: {
|
|
||||||
patches = (oldAttrs.patches or [ ]) ++ [ ./qutebrowser-tree-tabs.diff ];
|
|
||||||
});
|
|
||||||
|
|
||||||
# scgit = prev.cgit-pink.overrideAttrs (_: {
|
|
||||||
# pname = "scgit";
|
|
||||||
# version = "0.1";
|
|
||||||
# src = final.fetchFromSourcehut {
|
|
||||||
# owner = "~misterio";
|
|
||||||
# repo = "scgit";
|
|
||||||
# rev = "2cd05c95827fb94740e876733dc6f7fe88340de2";
|
|
||||||
# sha256 = "sha256-95mRJ3ZCSkLHqehFQdwM2BY0h+YDhohwpnRiF6/lZtA=";
|
|
||||||
# };
|
|
||||||
# });
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
diff --git a/launcher/minecraft/auth/AccountList.cpp b/launcher/minecraft/auth/AccountList.cpp
|
|
||||||
index 9e2fd11..3965913 100644
|
|
||||||
--- a/launcher/minecraft/auth/AccountList.cpp
|
|
||||||
+++ b/launcher/minecraft/auth/AccountList.cpp
|
|
||||||
@@ -657,13 +657,7 @@ void AccountList::setListFilePath(QString path, bool autosave)
|
|
||||||
|
|
||||||
bool AccountList::anyAccountIsValid()
|
|
||||||
{
|
|
||||||
- for(auto account: m_accounts)
|
|
||||||
- {
|
|
||||||
- if(account->ownsMinecraft()) {
|
|
||||||
- return true;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- return false;
|
|
||||||
+ return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccountList::fillQueue() {
|
|
|
@ -1,41 +0,0 @@
|
||||||
diff --git a/pfetch b/pfetch
|
|
||||||
index d47b878..79380da 100755
|
|
||||||
--- a/pfetch
|
|
||||||
+++ b/pfetch
|
|
||||||
@@ -1055,14 +1055,14 @@ get_wm() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-get_de() {
|
|
||||||
+get_desktop() {
|
|
||||||
# This only supports Xorg related desktop environments though
|
|
||||||
# this is fine as knowing the desktop environment on Windows,
|
|
||||||
# macOS etc is useless (they'll always report the same value).
|
|
||||||
#
|
|
||||||
# Display the value of '$XDG_CURRENT_DESKTOP', if it's empty,
|
|
||||||
# display the value of '$DESKTOP_SESSION'.
|
|
||||||
- log de "${XDG_CURRENT_DESKTOP:-$DESKTOP_SESSION}" >&6
|
|
||||||
+ log desktop "${XDG_CURRENT_DESKTOP:-$DESKTOP_SESSION}" >&6
|
|
||||||
}
|
|
||||||
|
|
||||||
get_shell() {
|
|
||||||
@@ -1078,6 +1078,19 @@ get_editor() {
|
|
||||||
log editor "${editor##*/}" >&6
|
|
||||||
}
|
|
||||||
|
|
||||||
+get_term() {
|
|
||||||
+ # Display the value of '$TERMINAL', if it's empty, display the
|
|
||||||
+ # value of '$TERM'.
|
|
||||||
+ term=${TERMINAL:-"$TERM"}
|
|
||||||
+
|
|
||||||
+ log term "${term##*/}" >&6
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+get_scheme() {
|
|
||||||
+ # Display the '$SCHEME' environment variable.
|
|
||||||
+ log scheme "$(cat $HOME/.colorscheme)" >&6
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
get_palette() {
|
|
||||||
# Print the first 8 terminal colors. This uses the existing
|
|
||||||
# sequences to change text color with a sequence prepended
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/plugin/number_toggle.vim b/plugin/number_toggle.vim
|
|
||||||
index d5dad54..80aa97e 100644
|
|
||||||
--- a/plugin/number_toggle.vim
|
|
||||||
+++ b/plugin/number_toggle.vim
|
|
||||||
@@ -4,6 +4,6 @@
|
|
||||||
|
|
||||||
augroup numbertoggle
|
|
||||||
autocmd!
|
|
||||||
- autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu && mode() != "i" | set rnu | endif
|
|
||||||
- autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif
|
|
||||||
+ autocmd BufEnter,FocusGained,InsertLeave,WinEnter,CmdlineLeave * if &nu && mode() != "i" | set rnu | endif
|
|
||||||
+ autocmd BufLeave,FocusLost,InsertEnter,WinLeave,CmdlineEnter * if &nu | set nornu | redraw | endif
|
|
||||||
augroup END
|
|
|
@ -1,20 +0,0 @@
|
||||||
diff --git a/scripts/xdg-open.in b/scripts/xdg-open.in
|
|
||||||
index 50e31e6..6f698dc 100644
|
|
||||||
--- a/scripts/xdg-open.in
|
|
||||||
+++ b/scripts/xdg-open.in
|
|
||||||
@@ -320,7 +320,14 @@ search_desktop_file()
|
|
||||||
args=$(( $args - 1 ))
|
|
||||||
done
|
|
||||||
[ $replaced -eq 1 ] || set -- "$@" "$target"
|
|
||||||
- env "$command" "$@"
|
|
||||||
+ if [ x"$(get_key "${file}" "Terminal")" = x"true" ] && ( [ ! -t 0 ] || [ ! -t 1 ] ); then
|
|
||||||
+ if [ -z "$TERMINAL" ]; then
|
|
||||||
+ TERMINAL="xterm -e"
|
|
||||||
+ fi
|
|
||||||
+ $TERMINAL env "$command" "$@" &
|
|
||||||
+ else
|
|
||||||
+ env "$command" "$@"
|
|
||||||
+ fi
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
exit_success
|
|
66
flake.lock
66
flake.lock
|
@ -10,11 +10,11 @@
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712079060,
|
"lastModified": 1714136352,
|
||||||
"narHash": "sha256-/JdiT9t+zzjChc5qQiF+jhrVhRt8figYH29rZO7pFe4=",
|
"narHash": "sha256-BtWQ2Th/jamO1SlD+2ASSW5Jaf7JhA/JLpQHk0Goqpg=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "1381a759b205dff7a6818733118d02253340fd5e",
|
"rev": "24a7ea390564ccd5b39b7884f597cfc8d7f6f44e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -52,11 +52,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712947906,
|
"lastModified": 1714405407,
|
||||||
"narHash": "sha256-T0eT2lMbcK7RLelkx0qx4SiFpOS/0dt0aSfLB+WsGV8=",
|
"narHash": "sha256-h3pOvHCXkSdp1KOZqtkQmHgkR7VaOJXDhqhumk7sZLY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "8d4ae698eaac8bd717e23507da2ca8b345bec4b5",
|
"rev": "5eaf747af38dd272e1ab28a8ec4bd972424b07cf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -74,11 +74,11 @@
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "pkgs/firefox-addons",
|
"dir": "pkgs/firefox-addons",
|
||||||
"lastModified": 1713078488,
|
"lastModified": 1714536206,
|
||||||
"narHash": "sha256-EdCxHld1zzLdT7WteA7CULHslftZOePB9d8uDMT0tzA=",
|
"narHash": "sha256-pnE2Px1VlcnWDc92TUmaILRgrWBbetKhpnMu5DfntbM=",
|
||||||
"owner": "rycee",
|
"owner": "rycee",
|
||||||
"repo": "nur-expressions",
|
"repo": "nur-expressions",
|
||||||
"rev": "350bef505d552eb95271b216f1852bfe83f4a4ea",
|
"rev": "7772d48f5a728af51cd8ac85be5b124e2da0feac",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -149,11 +149,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712386041,
|
"lastModified": 1714043624,
|
||||||
"narHash": "sha256-dA82pOMQNnCJMAsPG7AXG35VmCSMZsJHTFlTHizpKWQ=",
|
"narHash": "sha256-Xn2r0Jv95TswvPlvamCC46wwNo8ALjRCMBJbGykdhcM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "d6bb9f934f2870e5cbc5b94c79e9db22246141ff",
|
"rev": "86853e31dc1b62c6eeed11c667e8cdd0285d4411",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -185,11 +185,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712645404,
|
"lastModified": 1714557650,
|
||||||
"narHash": "sha256-uEVd15WsX+Wti9PXW724puFcsFO72VTiJyBwW2WXT9M=",
|
"narHash": "sha256-N1qTL5wIlbbX7DorBaKOMYfz+gYoyf8LREMWVlOXNYc=",
|
||||||
"owner": "viperml",
|
"owner": "viperml",
|
||||||
"repo": "nh",
|
"repo": "nh",
|
||||||
"rev": "fe4a96a0b0b0662dba7c186b4a1746c70bbcad03",
|
"rev": "e4eb011975bee4c3f47199cc01d2d986e24851bd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -207,11 +207,11 @@
|
||||||
"nmt": "nmt"
|
"nmt": "nmt"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709879831,
|
"lastModified": 1713988078,
|
||||||
"narHash": "sha256-PZFXvKm929A3waipt2prRKYlNJvGQiBxWPDn/MIOKWo=",
|
"narHash": "sha256-scRrzQQyJAT0iPAd8AZvolgiq7npatsfytwnduESndI=",
|
||||||
"owner": "Gerschtli",
|
"owner": "Gerschtli",
|
||||||
"repo": "nix-formatter-pack",
|
"repo": "nix-formatter-pack",
|
||||||
"rev": "2499f41a01f1154c5a3b967aabe37d94e6b6d18b",
|
"rev": "08d0135dbe95992b5f8d54c351ce62be2177f0b4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -222,11 +222,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712909959,
|
"lastModified": 1714465198,
|
||||||
"narHash": "sha256-7/5ubuwdEbQ7Z+Vqd4u0mM5L2VMNDsBh54visp27CtQ=",
|
"narHash": "sha256-ySkEJvS0gPz2UhXm0H3P181T8fUxvDVcoUyGn0Kc5AI=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "f58b25254be441cd2a9b4b444ed83f1e51244f1f",
|
"rev": "68d680c1b7c0e67a9b2144d6776583ee83664ef4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -238,11 +238,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712867921,
|
"lastModified": 1714531828,
|
||||||
"narHash": "sha256-edTFV4KldkCMdViC/rmpJa7oLIU8SE/S35lh/ukC7bg=",
|
"narHash": "sha256-ILsf3bdY/hNNI/Hu5bSt2/KbmHaAVhBbNUOdGztTHEg=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "51651a540816273b67bc4dedea2d37d116c5f7fe",
|
"rev": "0638fe2715d998fa81d173aad264eb671ce2ebc1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -254,11 +254,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712791164,
|
"lastModified": 1714253743,
|
||||||
"narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=",
|
"narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5",
|
"rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -326,11 +326,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713066950,
|
"lastModified": 1713892811,
|
||||||
"narHash": "sha256-ZaefFyvt5369XdjzSw43NhfbPM9MN5b9YXhzx4lFIRc=",
|
"narHash": "sha256-uIGmA2xq41vVFETCF1WW4fFWFT2tqBln+aXnWrvjGRE=",
|
||||||
"owner": "mic92",
|
"owner": "mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "226062b47fe0e2130ba3ee9f4f1c880dc815cf87",
|
"rev": "f1b0adc27265274e3b0c9b872a8f476a098679bd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -377,11 +377,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709622318,
|
"lastModified": 1713958148,
|
||||||
"narHash": "sha256-bTscF0366xtoIXgH7Zq+Mn0mpX3w4h/2xKpHiYMyLNc=",
|
"narHash": "sha256-8PDNi/dgoI2kyM7uSiU4eoLBqUKoA+3TXuz+VWmuCOc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-vscode-server",
|
"repo": "nixos-vscode-server",
|
||||||
"rev": "d0ed9b8cf1f0a71f110df9119489ab047e0726bd",
|
"rev": "fc900c16efc6a5ed972fb6be87df018bcf3035bc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -57,9 +57,13 @@
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
# .iso images
|
# .iso images
|
||||||
# "gburd@iso-console" = libx.mkHome { hostname = "iso-console"; username = "nixos"; };
|
# "gburd@iso-console" = libx.mkHome { hostname = "iso-console"; username = "nixos"; };
|
||||||
# "gburd@iso-desktop" = libx.mkHome { hostname = "iso-desktop"; username = "nixos"; desktop = "pantheon"; };
|
# "gburd@iso-desktop" = libx.mkHome { hostname = "iso-desktop"; username
|
||||||
|
# = "nixos"; desktop = "pantheon"; };
|
||||||
|
|
||||||
# Workstations
|
# Workstations
|
||||||
"gburd@floki" = libx.mkHome { hostname = "floki"; username = "gburd"; desktop = "pantheon"; };
|
"gburd@floki" = libx.mkHome { hostname = "floki"; username = "gburd"; desktop = "pantheon"; };
|
||||||
|
#"gburd@floki" = libx.mkHome { hostname = "floki"; username = "gburd"; desktop = "mate"; };
|
||||||
|
|
||||||
# Servers
|
# Servers
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,6 +72,7 @@
|
||||||
# - nix build .#nixosConfigurations.{iso-console|iso-desktop}.config.system.build.isoImage
|
# - nix build .#nixosConfigurations.{iso-console|iso-desktop}.config.system.build.isoImage
|
||||||
# iso-console = libx.mkHost { hostname = "iso-console"; username = "nixos"; installer = nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"; };
|
# iso-console = libx.mkHost { hostname = "iso-console"; username = "nixos"; installer = nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"; };
|
||||||
# iso-desktop = libx.mkHost { hostname = "iso-desktop"; username = "nixos"; installer = nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix"; desktop = "pantheon"; };
|
# iso-desktop = libx.mkHost { hostname = "iso-desktop"; username = "nixos"; installer = nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix"; desktop = "pantheon"; };
|
||||||
|
|
||||||
# Workstations
|
# Workstations
|
||||||
# Lenovo Carbon X1 Extreme Gen 5 - x86_64
|
# Lenovo Carbon X1 Extreme Gen 5 - x86_64
|
||||||
floki = libx.mkHost { hostname = "floki"; username = "gburd"; desktop = "pantheon"; };
|
floki = libx.mkHost { hostname = "floki"; username = "gburd"; desktop = "pantheon"; };
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, username, ... }:
|
||||||
{
|
{
|
||||||
programs.gh = {
|
programs.gh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -9,6 +9,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/gburd".directories = [ ".config/gh" ];
|
"/persist/home/${username}".directories = [ ".config/gh" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ outputs, lib, ... }:
|
{ outputs, lib, username, ... }:
|
||||||
let
|
let
|
||||||
hostnames = builtins.attrNames outputs.nixosConfigurations;
|
hostnames = builtins.attrNames outputs.nixosConfigurations;
|
||||||
in
|
in
|
||||||
|
@ -22,6 +22,6 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/gburd".directories = [ ".ssh" ];
|
"/persist/home/${username}".directories = [ ".ssh" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,11 +85,11 @@
|
||||||
fish = {
|
fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
cat = "bat --paging=never --style=plain";
|
#cat = "bat --paging=never --style=plain";
|
||||||
htop = "btm --basic --tree --hide_table_gap --dot_marker --mem_as_value";
|
htop = "btm --basic --tree --hide_table_gap --dot_marker --mem_as_value";
|
||||||
ip = "ip --color --brief";
|
ip = "ip --color --brief";
|
||||||
less = "bat --paging=always";
|
#less = "bat --paging=always";
|
||||||
more = "bat --paging=always";
|
#more = "bat --paging=always";
|
||||||
top = "btm --basic --tree --hide_table_gap --dot_marker --mem_as_value";
|
top = "btm --basic --tree --hide_table_gap --dot_marker --mem_as_value";
|
||||||
tree = "exa --tree";
|
tree = "exa --tree";
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [ pkgs.jetbrains.clion ];
|
home.packages = [ pkgs.unstable.jetbrains.clion ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,8 @@ with lib.hm.gvariant;
|
||||||
cursor-theme = "Yaru";
|
cursor-theme = "Yaru";
|
||||||
document-font-name = "Work Sans 12";
|
document-font-name = "Work Sans 12";
|
||||||
font-name = "Work Sans 12";
|
font-name = "Work Sans 12";
|
||||||
gtk-theme = "Yaru-magenta-dark";
|
gtk-theme = lib.mkForce "Yaru-magenta-dark";
|
||||||
icon-theme = "Yaru-magenta-dark";
|
icon-theme = lib.mkForce "Yaru-magenta-dark";
|
||||||
monospace-font-name = "FiraCode Nerd Font Medium 13";
|
monospace-font-name = "FiraCode Nerd Font Medium 13";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ in
|
||||||
protontricks
|
protontricks
|
||||||
];
|
];
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/gburd" = {
|
"/persist/home/${username}" = {
|
||||||
allowOther = true;
|
allowOther = true;
|
||||||
directories = [
|
directories = [
|
||||||
".factorio"
|
".factorio"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, config, ... }: {
|
{ pkgs, config, username, ... }: {
|
||||||
programs.password-store = {
|
programs.password-store = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = { PASSWORD_STORE_DIR = "$HOME/.password-store"; };
|
settings = { PASSWORD_STORE_DIR = "$HOME/.password-store"; };
|
||||||
|
@ -12,6 +12,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/gburd".directories = [ ".password-store" ];
|
"/persist/home/${username}".directories = [ ".password-store" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/gburd".directories = [ "Mail" ];
|
"/persist/home/${username}".directories = [ "Mail" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
accounts.email = {
|
accounts.email = {
|
||||||
|
|
|
@ -6,7 +6,7 @@ in
|
||||||
home.packages = with pkgs; [ vdirsyncer ];
|
home.packages = with pkgs; [ vdirsyncer ];
|
||||||
|
|
||||||
home.persistence = {
|
home.persistence = {
|
||||||
"/persist/home/gburd".directories =
|
"/persist/home/${username}".directories =
|
||||||
[ "Calendars" "Contacts" ".local/share/vdirsyncer" ];
|
[ "Calendars" "Contacts" ".local/share/vdirsyncer" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ in
|
||||||
type = "carddav"
|
type = "carddav"
|
||||||
url = "https://dav.burd.me"
|
url = "https://dav.burd.me"
|
||||||
username = "greg@burd.me"
|
username = "greg@burd.me"
|
||||||
password.fetch = ["command", "${pass}", "mail.burd.m/greg@burd.me"]
|
password.fetch = ["command", "${pass}", "mail.burd.me/greg@burd.me"]
|
||||||
|
|
||||||
[pair calendars]
|
[pair calendars]
|
||||||
a = "calendars_local"
|
a = "calendars_local"
|
||||||
|
|
55
home-manager/_mixins/users/_gburd/.gitconfig
Normal file
55
home-manager/_mixins/users/_gburd/.gitconfig
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
[format]
|
||||||
|
pretty=format:%C(yellow)%h%Creset | %C(green)%ad (%ar)%Creset | %C(blue)%an%Creset | %s
|
||||||
|
|
||||||
|
[push]
|
||||||
|
default = simple
|
||||||
|
|
||||||
|
[branch]
|
||||||
|
autosetuprebase = always
|
||||||
|
|
||||||
|
[receive]
|
||||||
|
denyCurrentBranch = warn
|
||||||
|
|
||||||
|
[filter "media"]
|
||||||
|
clean = git media clean %f
|
||||||
|
smudge = git media smudge %f
|
||||||
|
required = true
|
||||||
|
|
||||||
|
# http://nicercode.github.io/blog/2013-04-30-excel-and-line-endings/
|
||||||
|
[filter "cr"]
|
||||||
|
clean = LC_CTYPE=C awk '{printf(\"%s\\n\", $0)}' | LC_CTYPE=C tr '\\r' '\\n'
|
||||||
|
smudge = tr '\\n' '\\r'
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
tool = meld
|
||||||
|
[difftool]
|
||||||
|
prompt = false
|
||||||
|
[difftool "meld"]
|
||||||
|
cmd = meld "$LOCAL" "$REMOTE"
|
||||||
|
|
||||||
|
[merge]
|
||||||
|
tool = meld
|
||||||
|
[mergetool "meld"]
|
||||||
|
# Choose one of these 2 lines (not both!) explained below.
|
||||||
|
cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
|
||||||
|
cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
|
||||||
|
|
||||||
|
[core]
|
||||||
|
editor = vim
|
||||||
|
# editor = emacs -nw -q
|
||||||
|
excludesfile = ~/.gitignore_global
|
||||||
|
pager = less -FMRiX
|
||||||
|
quotepath = false
|
||||||
|
|
||||||
|
[filter "lfs"]
|
||||||
|
process = git-lfs filter-process
|
||||||
|
required = true
|
||||||
|
clean = git-lfs clean -- %f
|
||||||
|
smudge = git-lfs smudge -- %f
|
||||||
|
|
||||||
|
[init]
|
||||||
|
templateDir = "$HOME/.git-template"
|
||||||
|
defaultBranch = main
|
||||||
|
|
||||||
|
[commit]
|
||||||
|
gpgsign = true
|
492
home-manager/_mixins/users/_gburd/alacritty.yml
Normal file
492
home-manager/_mixins/users/_gburd/alacritty.yml
Normal file
|
@ -0,0 +1,492 @@
|
||||||
|
# Configuration for Alacritty, the GPU enhanced terminal emulator
|
||||||
|
|
||||||
|
# Any items in the `env` entry below will be added as
|
||||||
|
# environment variables. Some entries may override variables
|
||||||
|
# set by alacritty it self.
|
||||||
|
# env:
|
||||||
|
# TERM env customization.
|
||||||
|
#
|
||||||
|
# If this property is not set, alacritty will set it to xterm-256color.
|
||||||
|
#
|
||||||
|
# Note that some xterm terminfo databases don't declare support for italics.
|
||||||
|
# You can verify this by checking for the presence of `smso` and `sitm` in
|
||||||
|
# `infocmp xterm-256color`.
|
||||||
|
# TERM: xterm-256color-italic
|
||||||
|
|
||||||
|
window:
|
||||||
|
# Window dimensions (changes require restart)
|
||||||
|
#
|
||||||
|
# Specified in number of columns/lines, not pixels. If both are zero this
|
||||||
|
# setting is ignored.
|
||||||
|
dimensions:
|
||||||
|
columns: 100
|
||||||
|
lines: 85
|
||||||
|
|
||||||
|
# Window padding (changes require restart)
|
||||||
|
#
|
||||||
|
# Blank space added around the window in pixels. This padding is not scaled by
|
||||||
|
# DPI and the specified value is always added at both opposing sides.
|
||||||
|
padding:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Spread additional padding evenly around the terminal content.
|
||||||
|
dynamic_padding: false
|
||||||
|
|
||||||
|
# Window decorations
|
||||||
|
#
|
||||||
|
# Available values:
|
||||||
|
# - full: borders and title bar
|
||||||
|
# - none: neither borders nor title bar
|
||||||
|
# - transparent: title bar, transparent background and title bar buttons
|
||||||
|
# - buttonless: title bar, transparent background, but no title bar buttons
|
||||||
|
decorations: buttonless
|
||||||
|
|
||||||
|
# Startup Mode (changes require restart)
|
||||||
|
#
|
||||||
|
# Values for `startup_mode`:
|
||||||
|
# - Windowed
|
||||||
|
# - Maximized
|
||||||
|
# - Fullscreen
|
||||||
|
#
|
||||||
|
# Values for `startup_mode` (macOS only):
|
||||||
|
# - SimpleFullscreen
|
||||||
|
startup_mode: Windowed
|
||||||
|
|
||||||
|
# Background opacity
|
||||||
|
opacity: 1.0
|
||||||
|
|
||||||
|
scrolling:
|
||||||
|
# maximum number of lines in the scrollback buffer. Specifying '0' will
|
||||||
|
# disable scrolling.
|
||||||
|
history: 0
|
||||||
|
|
||||||
|
# Number of lines the viewport will move for every line scrolled when
|
||||||
|
# scrollback is enabled (history > 0).
|
||||||
|
multiplier: 3
|
||||||
|
|
||||||
|
# Font configuration (changes require restart)
|
||||||
|
font:
|
||||||
|
# The normal (roman) font face to use.
|
||||||
|
# Style can be specified to pick a specific face.
|
||||||
|
normal:
|
||||||
|
family: "FiraCode Nerd Font Mono"
|
||||||
|
style: Retina
|
||||||
|
|
||||||
|
# The bold font face
|
||||||
|
bold:
|
||||||
|
family: "FiraCode Nerd Font Mono"
|
||||||
|
style: Bold
|
||||||
|
|
||||||
|
# The italic font face
|
||||||
|
italic:
|
||||||
|
family: "FiraCode Nerd Font Mono"
|
||||||
|
style: Italic
|
||||||
|
|
||||||
|
# Point size of the font
|
||||||
|
size: 14.0
|
||||||
|
|
||||||
|
# Offset is the extra space around each character. offset.y can be thought of
|
||||||
|
# as modifying the linespacing, and offset.x as modifying the letter spacing.
|
||||||
|
offset:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Glyph offset determines the locations of the glyphs within their cells with
|
||||||
|
# the default being at the bottom. Increase the x offset to move the glyph to
|
||||||
|
# the right, increase the y offset to move the glyph upward.
|
||||||
|
glyph_offset:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Thin stroke font rendering (macOS only)
|
||||||
|
#
|
||||||
|
# Thin strokes are suitable for retina displays, but for non-retina you
|
||||||
|
# probably want this set to false.
|
||||||
|
#
|
||||||
|
# macOS >= 10.14.x:
|
||||||
|
#
|
||||||
|
# If the font quality on non-retina display looks bad then set
|
||||||
|
# `use_thin_strokes` to `true` and enable font smoothing by running the
|
||||||
|
# following command:
|
||||||
|
# `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO`
|
||||||
|
#
|
||||||
|
# This is a global setting and will require a log out or restart to take
|
||||||
|
# effect.
|
||||||
|
use_thin_strokes: true
|
||||||
|
|
||||||
|
# When true, bold text is drawn using the bright variant of colors.
|
||||||
|
draw_bold_text_with_bright_colors: false
|
||||||
|
|
||||||
|
# Use custom cursor colors. If true, display the cursor in the cursor.foreground
|
||||||
|
# and cursor.background colors, otherwise invert the colors of the cursor.
|
||||||
|
custom_cursor_colors: true
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
colors:
|
||||||
|
|
||||||
|
# Tomorrow (https://github.com/aarowill/base16-alacritty/blob/master/colors/base16-tomorrow.yml)
|
||||||
|
# Default colors
|
||||||
|
primary:
|
||||||
|
background: '0xffffff'
|
||||||
|
foreground: '0x4d4d4c'
|
||||||
|
# Colors the cursor will use if `custom_cursor_colors` is true
|
||||||
|
cursor:
|
||||||
|
text: '0xffffff'
|
||||||
|
cursor: '0x4d4d4c'
|
||||||
|
# Normal colors
|
||||||
|
normal:
|
||||||
|
black: '0xffffff'
|
||||||
|
red: '0xc82829'
|
||||||
|
green: '0x718c00'
|
||||||
|
yellow: '0xeab700'
|
||||||
|
blue: '0x4271ae'
|
||||||
|
magenta: '0x8959a8'
|
||||||
|
cyan: '0x3e999f'
|
||||||
|
white: '0x4d4d4c'
|
||||||
|
# Bright colors
|
||||||
|
bright:
|
||||||
|
black: '0x8e908c'
|
||||||
|
red: '0xf5871f'
|
||||||
|
green: '0xe0e0e0'
|
||||||
|
yellow: '0xd6d6d6'
|
||||||
|
blue: '0x969896'
|
||||||
|
magenta: '0x282a2e'
|
||||||
|
cyan: '0xa3685a'
|
||||||
|
white: '0x1d1f21'
|
||||||
|
|
||||||
|
# # Tomorrow Night (https://github.com/aarowill/base16-alacritty/blob/master/colors/base16-tomorrow-night.yml)
|
||||||
|
# # Default colors
|
||||||
|
# primary:
|
||||||
|
# background: '0x1d1f21'
|
||||||
|
# foreground: '0xc5c8c6'
|
||||||
|
# # Colors the cursor will use if `custom_cursor_colors` is true
|
||||||
|
# cursor:
|
||||||
|
# text: '0x1d1f21'
|
||||||
|
# cursor: '0xc5c8c6'
|
||||||
|
# # Normal colors
|
||||||
|
# normal:
|
||||||
|
# black: '0x1d1f21'
|
||||||
|
# red: '0xcc6666'
|
||||||
|
# green: '0xb5bd68'
|
||||||
|
# yellow: '0xf0c674'
|
||||||
|
# blue: '0x81a2be'
|
||||||
|
# magenta: '0xb294bb'
|
||||||
|
# cyan: '0x8abeb7'
|
||||||
|
# white: '0xc5c8c6'
|
||||||
|
# # Bright colors
|
||||||
|
# bright:
|
||||||
|
# black: '0x969896'
|
||||||
|
# red: '0xde935f'
|
||||||
|
# green: '0x282a2e'
|
||||||
|
# yellow: '0x373b41'
|
||||||
|
# blue: '0xb4b7b4'
|
||||||
|
# magenta: '0xe0e0e0'
|
||||||
|
# cyan: '0xa3685a'
|
||||||
|
# white: '0xffffff'
|
||||||
|
|
||||||
|
# Indexed Colors
|
||||||
|
#
|
||||||
|
# The indexed colors include all colors from 16 to 256.
|
||||||
|
# When these are not set, they're filled with sensible defaults.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { index: 16, color: '0xff00ff' }`
|
||||||
|
#
|
||||||
|
# indexed_colors: []
|
||||||
|
|
||||||
|
# Visual Bell
|
||||||
|
#
|
||||||
|
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
|
||||||
|
# rung, the terminal background will be set to white and transition back to the
|
||||||
|
# default background color. You can control the rate of this transition by
|
||||||
|
# setting the `duration` property (represented in milliseconds). You can also
|
||||||
|
# configure the transition function by setting the `animation` property.
|
||||||
|
#
|
||||||
|
# Possible values for `animation`
|
||||||
|
# `Ease`
|
||||||
|
# `EaseOut`
|
||||||
|
# `EaseOutSine`
|
||||||
|
# `EaseOutQuad`
|
||||||
|
# `EaseOutCubic`
|
||||||
|
# `EaseOutQuart`
|
||||||
|
# `EaseOutQuint`
|
||||||
|
# `EaseOutExpo`
|
||||||
|
# `EaseOutCirc`
|
||||||
|
# `Linear`
|
||||||
|
#
|
||||||
|
# To completely disable the visual bell, set its duration to 0.
|
||||||
|
#
|
||||||
|
bell:
|
||||||
|
animation: EaseOutExpo
|
||||||
|
color: '0xffffff'
|
||||||
|
duration: 0
|
||||||
|
|
||||||
|
|
||||||
|
# Key bindings
|
||||||
|
#
|
||||||
|
# Key bindings are specified as a list of objects. Each binding will specify a
|
||||||
|
# key and modifiers required to trigger it, terminal modes where the binding is
|
||||||
|
# applicable, and what should be done when the key binding fires. It can either
|
||||||
|
# send a byte sequence to the running application (`chars`), execute a
|
||||||
|
# predefined action (`action`) or fork and execute a specified command plus
|
||||||
|
# arguments (`command`).
|
||||||
|
#
|
||||||
|
# Bindings are always filled by default, but will be replaced when a new binding
|
||||||
|
# with the same triggers is defined. To unset a default binding, it can be
|
||||||
|
# mapped to the `None` action.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { key: V, mods: Control|Shift, action: Paste }`
|
||||||
|
#
|
||||||
|
# Available fields:
|
||||||
|
# - key
|
||||||
|
# - mods (optional)
|
||||||
|
# - chars | action | command (exactly one required)
|
||||||
|
# - mode (optional)
|
||||||
|
#
|
||||||
|
# Values for `key`:
|
||||||
|
# - `A` -> `Z`
|
||||||
|
# - `F1` -> `F12`
|
||||||
|
# - `Key1` -> `Key0`
|
||||||
|
#
|
||||||
|
# A full list with available key codes can be found here:
|
||||||
|
# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants
|
||||||
|
#
|
||||||
|
# Instead of using the name of the keys, the `key` field also supports using
|
||||||
|
# the scancode of the desired key. Scancodes have to be specified as a
|
||||||
|
# decimal number.
|
||||||
|
# This command will allow you to display the hex scancodes for certain keys:
|
||||||
|
# `showkey --scancodes`
|
||||||
|
#
|
||||||
|
# Values for `mods`:
|
||||||
|
# - Command
|
||||||
|
# - Control
|
||||||
|
# - Option
|
||||||
|
# - Super
|
||||||
|
# - Shift
|
||||||
|
# - Alt
|
||||||
|
#
|
||||||
|
# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`.
|
||||||
|
# Whitespace and capitalization is relevant and must match the example.
|
||||||
|
#
|
||||||
|
# Values for `chars`:
|
||||||
|
# The `chars` field writes the specified string to the terminal. This makes
|
||||||
|
# it possible to pass escape sequences.
|
||||||
|
# To find escape codes for bindings like `PageUp` ("\x1b[5~"), you can run
|
||||||
|
# the command `showkey -a` outside of tmux.
|
||||||
|
# Note that applications use terminfo to map escape sequences back to
|
||||||
|
# keys. It is therefore required to update the terminfo when
|
||||||
|
# changing an escape sequence.
|
||||||
|
#
|
||||||
|
# Values for `action`:
|
||||||
|
# - Paste
|
||||||
|
# - PasteSelection
|
||||||
|
# - Copy
|
||||||
|
# - IncreaseFontSize
|
||||||
|
# - DecreaseFontSize
|
||||||
|
# - ResetFontSize
|
||||||
|
# - ScrollPageUp
|
||||||
|
# - ScrollPageDown
|
||||||
|
# - ScrollLineUp
|
||||||
|
# - ScrollLineDown
|
||||||
|
# - ScrollToTop
|
||||||
|
# - ScrollToBottom
|
||||||
|
# - ClearHistory
|
||||||
|
# - Hide
|
||||||
|
# - Quit
|
||||||
|
# - ClearLogNotice
|
||||||
|
# - SpawnNewInstance
|
||||||
|
# - ToggleFullscreen
|
||||||
|
# - None
|
||||||
|
#
|
||||||
|
# Values for `action` (macOS only):
|
||||||
|
# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
|
||||||
|
#
|
||||||
|
# Values for `command`:
|
||||||
|
# The `command` field must be a map containing a `program` string and
|
||||||
|
# an `args` array of command line parameter strings.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `command: { program: "alacritty", args: ["-e", "vttest"] }`
|
||||||
|
#
|
||||||
|
# Values for `mode`:
|
||||||
|
# - ~AppCursor
|
||||||
|
# - AppCursor
|
||||||
|
# - ~AppKeypad
|
||||||
|
# - AppKeypad
|
||||||
|
#
|
||||||
|
key_bindings:
|
||||||
|
- { key: V, mods: Command, action: Paste}
|
||||||
|
- { key: C, mods: Command, action: Copy }
|
||||||
|
- { key: Q, mods: Command, action: Quit }
|
||||||
|
- { key: N, mods: Command, action: SpawnNewInstance }
|
||||||
|
- { key: Return, mods: Command, action: ToggleFullscreen }
|
||||||
|
|
||||||
|
- { key: Home, chars: "\x1bOH", mode: AppCursor }
|
||||||
|
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
|
||||||
|
- { key: End, chars: "\x1bOF", mode: AppCursor }
|
||||||
|
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
|
||||||
|
- { key: Equals, mods: Command, action: IncreaseFontSize }
|
||||||
|
- { key: Minus, mods: Command, action: DecreaseFontSize }
|
||||||
|
- { key: Minus, mods: Command|Shift, action: ResetFontSize }
|
||||||
|
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
|
||||||
|
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
|
||||||
|
- { key: PageUp,chars: "\x1b[5~" }
|
||||||
|
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
|
||||||
|
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
|
||||||
|
- { key: PageDown, chars: "\x1b[6~" }
|
||||||
|
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
|
||||||
|
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
|
||||||
|
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
|
||||||
|
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
|
||||||
|
- { key: Left, chars: "\x1bOD", mode: AppCursor }
|
||||||
|
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
|
||||||
|
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
|
||||||
|
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
|
||||||
|
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
|
||||||
|
- { key: Right, chars: "\x1bOC", mode: AppCursor }
|
||||||
|
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
|
||||||
|
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
|
||||||
|
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
|
||||||
|
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
|
||||||
|
- { key: Up, chars: "\x1bOA", mode: AppCursor }
|
||||||
|
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
|
||||||
|
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
|
||||||
|
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
|
||||||
|
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
|
||||||
|
- { key: Down, chars: "\x1bOB", mode: AppCursor }
|
||||||
|
- { key: Tab,mods: Shift, chars: "\x1b[Z" }
|
||||||
|
- { key: F1, chars: "\x1bOP" }
|
||||||
|
- { key: F2, chars: "\x1bOQ" }
|
||||||
|
- { key: F3, chars: "\x1bOR" }
|
||||||
|
- { key: F4, chars: "\x1bOS" }
|
||||||
|
- { key: F5, chars: "\x1b[15~" }
|
||||||
|
- { key: F6, chars: "\x1b[17~" }
|
||||||
|
- { key: F7, chars: "\x1b[18~" }
|
||||||
|
- { key: F8, chars: "\x1b[19~" }
|
||||||
|
- { key: F9, chars: "\x1b[20~" }
|
||||||
|
- { key: F10, chars: "\x1b[21~" }
|
||||||
|
- { key: F11, chars: "\x1b[23~" }
|
||||||
|
- { key: F12, chars: "\x1b[24~" }
|
||||||
|
- { key: Back, chars: "\x7f"}
|
||||||
|
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
|
||||||
|
- { key: Insert,chars: "\x1b[2~" }
|
||||||
|
- { key: Delete,chars: "\x1b[3~" }
|
||||||
|
|
||||||
|
# shortcuts for tmux. the leader key is control-b (0x02)
|
||||||
|
- { key: W, mods: Command, chars: "\x02&" } # close tab (kill)
|
||||||
|
- { key: T, mods: Command, chars: "\x02c" } # new tab
|
||||||
|
- { key: RBracket, mods: Command|Shift, chars: "\x02n" } # select next tab
|
||||||
|
- { key: LBracket, mods: Command|Shift, chars: "\x02p" } # select previous tab
|
||||||
|
- { key: RBracket, mods: Command, chars: "\x02o" } # select next pane
|
||||||
|
- { key: LBracket, mods: Command, chars: "\x02;" } # select last (previously used) pane
|
||||||
|
- { key: F, mods: Command, chars: "\x02/" } # search (upwards) (see tmux.conf)
|
||||||
|
|
||||||
|
mouse:
|
||||||
|
# Click settings
|
||||||
|
#
|
||||||
|
# The `double_click` and `triple_click` settings control the time
|
||||||
|
# alacritty should wait for accepting multiple clicks as one double
|
||||||
|
# or triple click.
|
||||||
|
double_click: { threshold: 300 }
|
||||||
|
triple_click: { threshold: 300 }
|
||||||
|
|
||||||
|
# If this is `true`, the cursor is temporarily hidden when typing.
|
||||||
|
hide_when_typing: true
|
||||||
|
|
||||||
|
# URL launcher
|
||||||
|
# url:
|
||||||
|
# This program is executed when clicking on a text which is recognized as a URL.
|
||||||
|
# The URL is always added to the command as the last parameter.
|
||||||
|
#
|
||||||
|
# When set to `None`, URL launching will be disabled completely.
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) open
|
||||||
|
# - (Linux) xdg-open
|
||||||
|
# - (Windows) explorer
|
||||||
|
# launcher:
|
||||||
|
# program: xdg-open
|
||||||
|
# args: []
|
||||||
|
|
||||||
|
# These are the modifiers that need to be held down for opening URLs when clicking
|
||||||
|
# on them. The available modifiers are documented in the key binding section.
|
||||||
|
# modifiers: Control|Shift
|
||||||
|
|
||||||
|
selection:
|
||||||
|
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
|
||||||
|
|
||||||
|
# When set to `true`, selected text will be copied to the primary clipboard.
|
||||||
|
save_to_clipboard: false
|
||||||
|
|
||||||
|
# Mouse bindings
|
||||||
|
#
|
||||||
|
# Available fields:
|
||||||
|
# - mouse
|
||||||
|
# - action
|
||||||
|
# - mods (optional)
|
||||||
|
#
|
||||||
|
# Values for `mouse`:
|
||||||
|
# - Middle
|
||||||
|
# - Left
|
||||||
|
# - Right
|
||||||
|
# - Numeric identifier such as `5`
|
||||||
|
#
|
||||||
|
# All available `mods` and `action` values are documented in the key binding
|
||||||
|
# section.
|
||||||
|
mouse_bindings:
|
||||||
|
- { mouse: Middle, action: PasteSelection }
|
||||||
|
|
||||||
|
cursor:
|
||||||
|
# Cursor style
|
||||||
|
#
|
||||||
|
# Values for 'style':
|
||||||
|
# - ▇ Block
|
||||||
|
# - _ Underline
|
||||||
|
# - | Beam
|
||||||
|
style: Block
|
||||||
|
|
||||||
|
# If this is `true`, the cursor will be rendered as a hollow box when the
|
||||||
|
# window is not focused.
|
||||||
|
unfocused_hollow: true
|
||||||
|
|
||||||
|
# dynamic_title: false
|
||||||
|
|
||||||
|
# Live config reload (changes require restart)
|
||||||
|
live_config_reload: true
|
||||||
|
|
||||||
|
debug:
|
||||||
|
# Should display the render timer
|
||||||
|
render_timer: false
|
||||||
|
|
||||||
|
# Keep the log file after quitting Alacritty.
|
||||||
|
persistent_logging: false
|
||||||
|
|
||||||
|
# Log level
|
||||||
|
#
|
||||||
|
# Values for `log_level`:
|
||||||
|
# - OFF
|
||||||
|
# - ERROR
|
||||||
|
# - WARN
|
||||||
|
# - INFO
|
||||||
|
# - DEBUG
|
||||||
|
# - TRACE
|
||||||
|
log_level: OFF
|
||||||
|
|
||||||
|
# Print all received window events.
|
||||||
|
print_events: false
|
||||||
|
|
||||||
|
# Record all characters and escape sequences as test data.
|
||||||
|
ref_test: false
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
#
|
||||||
|
# You can set shell.program to the path of your favorite shell, e.g. /bin/bash.
|
||||||
|
# Entries in shell.args are passed unmodified as arguments to the shell.
|
||||||
|
shell:
|
||||||
|
program: bash
|
||||||
|
args:
|
||||||
|
- --command=tmux
|
||||||
|
|
||||||
|
# vim: nospell
|
144
home-manager/_mixins/users/_gburd/default.nix
Normal file
144
home-manager/_mixins/users/_gburd/default.nix
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
{ inputs, config, pkgs, username, ... }: {
|
||||||
|
imports = [
|
||||||
|
inputs.impermanence.nixosModules.home-manager.impermanence
|
||||||
|
../../pass
|
||||||
|
../../cli
|
||||||
|
../../nvim
|
||||||
|
];
|
||||||
|
|
||||||
|
home = {
|
||||||
|
|
||||||
|
persistence = {
|
||||||
|
"/persist/home/gburd" = {
|
||||||
|
directories = [
|
||||||
|
"Documents"
|
||||||
|
"Downloads"
|
||||||
|
"Pictures"
|
||||||
|
"Videos"
|
||||||
|
".local/bin"
|
||||||
|
".config"
|
||||||
|
];
|
||||||
|
allowOther = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
file.".face".source = ./face.png;
|
||||||
|
|
||||||
|
file.".ssh/config".text = ''
|
||||||
|
Host burd.me *.burd.me *.ts.burd.me
|
||||||
|
ForwardAgent yes
|
||||||
|
Host floki
|
||||||
|
ForwardAgent yes
|
||||||
|
RemoteForward /%d/.gnupg-sockets/S.gpg-agent /%d/.gnupg-sockets/S.gpg-agent.extra
|
||||||
|
|
||||||
|
Host *
|
||||||
|
ForwardAgent no
|
||||||
|
Compression no
|
||||||
|
ServerAliveInterval 0
|
||||||
|
ServerAliveCountMax 3
|
||||||
|
HashKnownHosts no
|
||||||
|
UserKnownHostsFile ~/.ssh/known_hosts
|
||||||
|
ControlMaster no
|
||||||
|
ControlPath ~/.ssh/master-%r@%n:%p
|
||||||
|
ControlPersist no
|
||||||
|
|
||||||
|
Host github.com
|
||||||
|
HostName github.com
|
||||||
|
User git
|
||||||
|
'';
|
||||||
|
|
||||||
|
file.".inputrc".text = ''
|
||||||
|
"\C-v": ""
|
||||||
|
set enable-bracketed-paste off
|
||||||
|
'';
|
||||||
|
|
||||||
|
file.".config/direnv/direnv.toml".text = ''
|
||||||
|
[global]
|
||||||
|
load_dotenv = true
|
||||||
|
'';
|
||||||
|
|
||||||
|
file.".config/Code/User/settings.json".text = ''
|
||||||
|
{
|
||||||
|
"editor.inlineSuggest.enabled": true,
|
||||||
|
"editor.fontFamily": "'FiraCode Nerd Font Mono', 'Droid Sans Mono', 'monospace', monospace",
|
||||||
|
"editor.fontLigatures": true,
|
||||||
|
"cSpell.userWords": [
|
||||||
|
"Burd",
|
||||||
|
"Wpedantic",
|
||||||
|
"Wvariadic"
|
||||||
|
],
|
||||||
|
"files.watcherExclude": {
|
||||||
|
"**/.bloop": true,
|
||||||
|
"**/.metals": true,
|
||||||
|
"**/.ammonite": true
|
||||||
|
},
|
||||||
|
"extensions.experimental.affinity": {
|
||||||
|
"asvetliakov.vscode-neovim": 1
|
||||||
|
},
|
||||||
|
"vscode-neovim.neovimExecutablePaths.linux": "/home/gburd/.nix-profile/bin/nvim",
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
file.".config/alacritty/alacritty.yml".source = ./alacritty.yml;
|
||||||
|
|
||||||
|
file.".config/Code/User/keybindings.json".text = ''
|
||||||
|
'';
|
||||||
|
|
||||||
|
file.".config/nvim/init.nvim".source = ./init.nvim
|
||||||
|
|
||||||
|
# file.".config/sublime-text-2/Local/License.sublime_license".text =
|
||||||
|
# config.sops.secrets.sublime-licenses.text.path;
|
||||||
|
|
||||||
|
# file.".config/sublime-merge/Local/License.sublime_license".text =
|
||||||
|
# config.sops.secrets.sublime-licenses.merge.path;
|
||||||
|
|
||||||
|
# A Modern Unix experience, for the "kids"
|
||||||
|
# https://jvns.ca/blog/2022/04/12/a-list-of-new-ish--command-line-tools/
|
||||||
|
packages = with pkgs; [
|
||||||
|
asciinema # Terminal recorder
|
||||||
|
chafa # Terminal image viewer
|
||||||
|
chroma # Code syntax highlighter
|
||||||
|
clinfo # Terminal OpenCL info
|
||||||
|
dconf2nix # Nix code from Dconf files
|
||||||
|
httpie # Terminal HTTP client
|
||||||
|
iw # Terminal WiFi info
|
||||||
|
nixpkgs-review # Nix code review
|
||||||
|
ripgrep # Modern Unix `grep`
|
||||||
|
shellcheck # Code lint Shell
|
||||||
|
|
||||||
|
_1password
|
||||||
|
_1password-gui
|
||||||
|
cfssl
|
||||||
|
dig
|
||||||
|
emacs
|
||||||
|
file
|
||||||
|
git-credential-1password
|
||||||
|
htop
|
||||||
|
openssl
|
||||||
|
plocate
|
||||||
|
ripgrep
|
||||||
|
tig
|
||||||
|
tree
|
||||||
|
lsof
|
||||||
|
unstable.flyctl
|
||||||
|
unstable.minio-client
|
||||||
|
unstable.element-desktop
|
||||||
|
];
|
||||||
|
sessionVariables = {
|
||||||
|
PAGER = "less";
|
||||||
|
};
|
||||||
|
|
||||||
|
# http://rski.github.io/2021/09/05/nix-debugging.html
|
||||||
|
# https://github.com/nix-community/home-manager/commit/0056a5aea1a7b68bdacb7b829c325a1d4a3c4259
|
||||||
|
enableDebugInfo = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.tmpfiles.rules = [
|
||||||
|
"d ${config.home.homeDirectory}/ws 0755 ${username} users - -"
|
||||||
|
"d ${config.home.homeDirectory}/bin 0755 ${username} users - -"
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
20
home-manager/_mixins/users/_gburd/desktop.nix
Normal file
20
home-manager/_mixins/users/_gburd/desktop.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
with lib.hm.gvariant;
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../cli/signal.nix
|
||||||
|
../../desktop/alacritty.nix
|
||||||
|
../../desktop/dconf-editor.nix
|
||||||
|
../../desktop/jetbrains-toolbox.nix
|
||||||
|
../../desktop/meld.nix
|
||||||
|
../../desktop/protonmail-bridge.nix
|
||||||
|
../../desktop/sublime-merge.nix
|
||||||
|
../../desktop/sublime.nix
|
||||||
|
../../services/keybase.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Authrorize X11 access in Distrobox
|
||||||
|
home.file.".distroboxrc".text = ''
|
||||||
|
xhost +si:localuser:$USER
|
||||||
|
'';
|
||||||
|
}
|
BIN
home-manager/_mixins/users/_gburd/face.png
Normal file
BIN
home-manager/_mixins/users/_gburd/face.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
8
home-manager/_mixins/users/_gburd/hosts/floki.nix
Normal file
8
home-manager/_mixins/users/_gburd/hosts/floki.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
with lib.hm.gvariant;
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../../desktop/vorta.nix
|
||||||
|
];
|
||||||
|
dconf.settings = { };
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue