istg i have to make smaller commits

This commit is contained in:
xunuwu 2024-07-09 05:05:34 +02:00
parent 1ed9ce6864
commit 29473532c7
Signed by: xun
SSH key fingerprint: SHA256:Uot/1WoAjWAeqLOHA5vYy4phhVydsH7jCPmBjaPZfgI
28 changed files with 483 additions and 361 deletions

147
flake.lock generated
View file

@ -9,11 +9,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1718244058,
"narHash": "sha256-u32PPPpJl6SlJDbSR6AI8HvW5+68OrX/Q5OMwf1TfFk=",
"lastModified": 1719461007,
"narHash": "sha256-1Tayi+LGCNB2mPaBdQ4k6TXTBjTDq82aFj0qQtoM8P0=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "3596f5b5f25caa9d0da1ce09bfd94ee65b4bb1eb",
"rev": "40d828403e999d99480fe53940a2f376599bde95",
"type": "gitlab"
},
"original": {
@ -73,7 +73,9 @@
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
"nixpkgs-lib": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1717285511,
@ -220,11 +222,11 @@
},
"hardware": {
"locked": {
"lastModified": 1718349360,
"narHash": "sha256-SuPne4BMqh9/IkKIAG47Cu5qfmntAaqlHdX1yuFoDO0=",
"lastModified": 1719413427,
"narHash": "sha256-WS087+fEO804gWvwqEfclbLFw6xdrrtZZULSyQafMdg=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "ae5c8dcc4d0182d07d75df2dc97112de822cb9d6",
"rev": "901bc809b5d3e73a609a167385df23311d81b39c",
"type": "github"
},
"original": {
@ -263,11 +265,11 @@
]
},
"locked": {
"lastModified": 1718243258,
"narHash": "sha256-abBpj2VU8p6qlRzTU8o22q68MmOaZ4v8zZ4UlYl5YRU=",
"lastModified": 1719438532,
"narHash": "sha256-/Vmso2ZMoFE3M7d1MRsQ2K5sR8CVKnrM6t1ys9Xjpz4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "8d5e27b4807d25308dfe369d5a923d87e7dbfda3",
"rev": "1a4f12ae0bda877ec4099b429cf439aad897d7e9",
"type": "github"
},
"original": {
@ -283,7 +285,10 @@
"git-hooks": "git-hooks",
"hercules-ci-effects": "hercules-ci-effects",
"neovim-src": "neovim-src",
"nixpkgs": "nixpkgs_3"
"nixpkgs": [
"small-nvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1718512978,
@ -322,11 +327,11 @@
]
},
"locked": {
"lastModified": 1718011381,
"narHash": "sha256-sFXI+ZANp/OC+MwfJoZgPSf4xMdtzQMe1pS3FGti4C8=",
"lastModified": 1719111455,
"narHash": "sha256-rnIxHx+fLpydjMQsbpZ21kblUr/lMqSaAtMA4+qMMEE=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "88ad3d7501e22b2401dd72734b032b7baa794434",
"rev": "4293f532d0107dfb7e6f8b34a0421dc8111320e6",
"type": "github"
},
"original": {
@ -339,14 +344,16 @@
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs"
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1718242391,
"narHash": "sha256-WhxFBlbO63SoapmTuFjby8z+XADbac8IKoLjAO5I2zk=",
"lastModified": 1719451583,
"narHash": "sha256-2FHGp9cH5q42yVdYAfLjMCYJgr+VYfMW4LYmCOptlpg=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "fd5d22a81cd2aa22c59484247e1fefd144e4dc20",
"rev": "4157bcc67488e09407f5edc130ebf62c1a1a1433",
"type": "github"
},
"original": {
@ -357,55 +364,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1713805509,
"narHash": "sha256-YgSEan4CcrjivCNO5ZNzhg7/8ViLkZ4CB/GrGBVSudo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1e1dc66fe68972a76679644a5577828b6a7e8be4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1717284937,
"narHash": "sha256-lIbdfCsf8LMFloheeE6N31+BMIeixqyQWbSr2vk79EQ=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1717880976,
"narHash": "sha256-BRvSCsKtDUr83NEtbGfHLUOdDK0Cgbezj2PtcHnz+sQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4913a7c3d8b8d00cb9476a6bd730ff57777f740c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1718160348,
"narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=",
"lastModified": 1719254875,
"narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "57d6973abba7ea108bac64ae7629e7431e0199b6",
"rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60",
"type": "github"
},
"original": {
@ -415,38 +378,6 @@
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1718276985,
"narHash": "sha256-u1fA0DYQYdeG+5kDm1bOoGcHtX0rtC7qs2YA2N1X++I=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3f84a279f1a6290ce154c5531378acc827836fbb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1717774105,
"narHash": "sha256-HV97wqUQv9wvptiHCb3Y0/YH0lJ60uZ8FYfEOIzYEqI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d226935fd75012939397c83f6c385e4d6d832288",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"firefox-addons": "firefox-addons",
@ -455,7 +386,7 @@
"home-manager": "home-manager",
"nix-index-database": "nix-index-database",
"nix-vscode-extensions": "nix-vscode-extensions",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs",
"small-nvim": "small-nvim",
"sops-nix": "sops-nix"
}
@ -469,11 +400,11 @@
"utils": "utils"
},
"locked": {
"lastModified": 1719105734,
"narHash": "sha256-Sa2qKc985UTUA7gJ15eb6CjOYwAqfMmL3f0uVnKNzeQ=",
"lastModified": 1719854753,
"narHash": "sha256-ms8pMyIK4FGV8UaPrZP7CWNrEGJlcKnQcUPONglz3Zg=",
"owner": "xunuwu",
"repo": "small-nvim",
"rev": "d71d15304a37db9b9ef712f03a4ec7928dfb9783",
"rev": "02f87ed2eff21db2ef7b672e4e89638643d0b0cd",
"type": "github"
},
"original": {
@ -484,15 +415,19 @@
},
"sops-nix": {
"inputs": {
"nixpkgs": "nixpkgs_4",
"nixpkgs-stable": "nixpkgs-stable"
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1718137936,
"narHash": "sha256-psA+1Q5fPaK6yI3vzlLINNtb6EeXj111zQWnZYyJS9c=",
"lastModified": 1719268571,
"narHash": "sha256-pcUk2Fg5vPXLUEnFI97qaB8hto/IToRfqskFqsjvjb8=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "c279dec105dd53df13a5e57525da97905cc0f0d6",
"rev": "c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3",
"type": "github"
},
"original": {

View file

@ -38,31 +38,29 @@
flake-parts.url = "github:hercules-ci/flake-parts";
hardware.url = "github:nixos/nixos-hardware";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
small-nvim = {
url = "github:xunuwu/small-nvim";
inputs.nixpkgs.follows = "nixpkgs";
};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager.url = "github:nix-community/home-manager";
small-nvim.url = "github:xunuwu/small-nvim";
firefox-addons.url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
sops-nix.url = "github:Mic92/sops-nix";
nix-index-database.url = "github:Mic92/nix-index-database";
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
nix-index-database = {
url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
## deduplication
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
small-nvim.inputs.nixpkgs.follows = "nixpkgs";
firefox-addons.inputs.nixpkgs.follows = "nixpkgs";
sops-nix.inputs = {
nixpkgs.follows = "nixpkgs";
nixpkgs-stable.follows = "nixpkgs";
};
nix-vscode-extensions = {
url = "github:nix-community/nix-vscode-extensions";
};
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
nix-vscode-extensions.inputs.nixpkgs.follows = "nixpkgs";
};
}

View file

@ -1,21 +1,6 @@
{pkgs, ...}: {
programs.emacs = {
enable = true;
extraPackages = _:
with pkgs; [
graphviz # org-roam graph
];
};
home.packages = with pkgs; [
cmake
gnumake
gcc
gdb
libtool
];
services.emacs = {
enable = true;
package = pkgs.emacs-gtk; # uses xwayland, use pgtk for native wayland or pkgs.emacs if using daemon
};
}

View file

@ -4,7 +4,7 @@
../../terminal/shell/zsh.nix
../../terminal/emulator/wezterm.nix
../../programs/browsers/firefox.nix
../../programs/browsers/firefox
../../programs/desktop
../../programs/desktop/awesome

View file

@ -11,9 +11,10 @@
../../terminal/programs/lazygit.nix
../../terminal/programs/beets.nix
../../editors/nvim.nix
#../../editors/emacs.nix
../../editors/emacs.nix
../../editors/vscode.nix
../../programs/browsers/firefox.nix
../../programs/browsers/firefox
../../programs/browsers/tor.nix
../../programs/browsers/chromium.nix
../../terminal/emulator/wezterm.nix
../../terminal/emulator/foot.nix
@ -31,10 +32,10 @@
# programs
../../programs/misc/keepassxc.nix
../../programs/misc/discord.nix
../../programs/misc/ardour.nix
#../../programs/misc/ardour.nix
../../programs/misc/foliate.nix
../../programs/misc/obsidian.nix
../../programs/misc/pavucontrol.nix
../../programs/misc/pwvucontrol.nix
../../programs/misc/thunderbird.nix
#../../programs/music
#../../programs/music/yams.nix

View file

@ -1,93 +0,0 @@
{
inputs,
pkgs,
lib,
config,
...
}: {
programs.firefox = {
enable = true;
profiles.xun = {
extensions = with inputs.firefox-addons.packages.${pkgs.system}; [
ublock-origin
darkreader
sponsorblock
tridactyl
translate-web-pages
cookie-quick-manager
istilldontcareaboutcookies
tree-style-tab
(lib.mkIf (builtins.elem pkgs.keepassxc config.home.packages) keepassxc-browser)
];
bookmarks = {};
settings = {
"browser.tabs.inTitleBar" = "0"; # use system title bar
"browser.newtabpage.enabled" = false;
"browser.newtab.url" = "about:blank";
"general.autoScroll" = "true"; # mmb scroll mode
"browser.newtabpage.enhanced" = false;
"browser.newtabpage.introShown" = true;
"browser.newtab.preload" = false;
"browser.newtabpage.directory.ping" = "";
"browser.newtabpage.directory.source" = "data:text/plain,{}";
# Reduce search engine noise in the urlbar's completion window. The
# shortcuts and suggestions will still work, but Firefox won't clutter
# its UI with reminders that they exist.
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.shortcuts.bookmarks" = false;
"browser.urlbar.shortcuts.history" = false;
"browser.urlbar.shortcuts.tabs" = false;
"browser.urlbar.showSearchSuggestionsFirst" = false;
"browser.urlbar.speculativeConnect.enabled" = false;
"browser.download.useDownloadDir" = false;
"signon.rememberSignons" = false;
"browser.shell.checkDefaultBrowser" = false;
# Show whole URL in address bar
"browser.urlbar.trimURLs" = false;
# Disable some not so useful functionality.
"browser.disableResetPrompt" = true; # "Looks like you haven't started Firefox in a while."
"browser.onboarding.enabled" = false; # "New to Firefox? Let's get started!" tour
"browser.aboutConfig.showWarning" = false; # Warning when opening about:config
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
"extensions.pocket.enabled" = false;
"extensions.shield-recipe-client.enabled" = false;
#"reader.parse-on-load.enabled" = false; # "reader view"
# disable telemetry
# https://github.com/hlissner/dotfiles/blob/089f1a9da9018df9e5fc200c2d7bef70f4546026/modules/desktop/browsers/firefox.nix
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.server" = "data:,";
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.coverage.opt-out" = true;
"toolkit.coverage.opt-out" = true;
"toolkit.coverage.endpoint.base" = "";
"experiments.supported" = false;
"experiments.enabled" = false;
"experiments.manifest.uri" = "";
"browser.ping-centre.telemetry" = false;
"app.normandy.enabled" = false;
"app.normandy.api_url" = "";
"app.shield.optoutstudies.enabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.healthreport.service.enabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
# Disable crash reports
"breakpad.reportURL" = "";
"browser.tabs.crashReporting.sendReport" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
# Disable Form autofill
# https://wiki.mozilla.org/Firefox/Features/Form_Autofill
"browser.formfill.enable" = false;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.available" = "off";
"extensions.formautofill.creditCards.available" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.heuristics.enabled" = false;
};
};
};
}

View file

@ -0,0 +1,211 @@
{
inputs,
pkgs,
lib,
config,
...
}: {
xdg.configFile."tridactyl/tridactylrc" = {
text = ''
unbind <C-e>
unbind <C-b>
unbind <C-a> # why would you ever want to increment the current url??
bind J tabnext
bind K tabprev
set smoothscroll true
set newtab about:blank
set modeindicator false
'';
};
programs.firefox = {
enable = true;
package = pkgs.firefox.override {
nativeMessagingHosts = with pkgs; [
tridactyl-native
keepassxc
];
};
profiles.xun = {
extensions = with inputs.firefox-addons.packages.${pkgs.system}; [
ublock-origin
darkreader
sponsorblock
tridactyl
translate-web-pages
cookie-quick-manager
istilldontcareaboutcookies
sidebery
(lib.mkIf (builtins.elem pkgs.keepassxc config.home.packages) keepassxc-browser)
];
bookmarks = {};
search = {
force = true;
default = "Brave";
order = [
"Brave"
"Google"
"DuckDuckGo"
];
engines = let
inherit (lib.attrsets) attrsToList;
inherit (lib.lists) singleton;
in {
"Home Manager" = {
urls = singleton {
template = "https://home-manager-options.extranix.com";
params = attrsToList {
query = "{searchTerms}";
release = "master";
};
};
iconUpdateURL = "https://home-manager-options.extranix.com/images/favicon.png";
definedAliases = ["@hm"];
};
"Nix Packages" = {
urls = singleton {
template = "https://search.nixos.org/packages";
params = attrsToList {
query = "{searchTerms}";
channel = "unstable";
};
};
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@np"];
};
"NixOS Options" = {
urls = singleton {
template = "https://search.nixos.org/options";
params = attrsToList {
query = "{searchTerms}";
channel = "unstable";
};
};
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@no"];
};
"GitHub" = {
urls = singleton {
template = "https://github.com/search";
params = attrsToList {
q = "{searchTerms}";
type = "code";
};
};
iconUpdateURL = "https://github.githubassets.com/favicons/favicon-dark.svg";
definedAliases = ["@gh"];
};
"GitHub Repos" = {
urls = singleton {
template = "https://github.com/search";
params = attrsToList {
q = "{searchTerms}";
type = "repositories";
};
};
iconUpdateURL = "https://github.githubassets.com/favicons/favicon-dark.svg";
definedAliases = ["@ghr"];
};
"GitHub Nix" = {
urls = singleton {
template = "https://github.com/search";
params = attrsToList {
"q" = "lang:nix {searchTerms}";
"type" = "code";
};
};
iconUpdateURL = "https://github.githubassets.com/favicons/favicon-dark.svg";
definedAliases = ["@ghn"];
};
"Brave" = {
urls = singleton {
template = "https://search.brave.com/search";
params = attrsToList {
"q" = "{searchTerms}";
};
};
iconUpdateURL = "https://brave.com/static-assets/images/brave-favicon.png";
definedAliases = ["@b"];
};
"Google".metaData.alias = "@go";
"DuckDuckGo".metaData.alias = "@ddg";
"Wikipedia".metaData.alias = "@wiki";
"Bind".metaData.hidden = true;
};
};
userChrome = builtins.readFile ./userChrome.css;
settings = {
"browser.display.use_system_colors" = true; # about:blank colour match colourscheme
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; # enable userChrome
"browser.tabs.inTitleBar" = "0"; # use system title bar
"browser.newtabpage.enabled" = false;
"browser.newtab.url" = "about:blank";
"general.autoScroll" = true; # mmb scroll mode
"browser.newtabpage.enhanced" = false;
"browser.newtabpage.introShown" = true;
"browser.newtab.preload" = false;
"browser.newtabpage.directory.ping" = "";
"browser.newtabpage.directory.source" = "data:text/plain,{}";
# Reduce search engine noise in the urlbar's completion window. The
# shortcuts and suggestions will still work, but Firefox won't clutter
# its UI with reminders that they exist.
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.shortcuts.bookmarks" = false;
"browser.urlbar.shortcuts.history" = false;
"browser.urlbar.shortcuts.tabs" = false;
"browser.urlbar.showSearchSuggestionsFirst" = false;
"browser.urlbar.speculativeConnect.enabled" = false;
"browser.download.useDownloadDir" = false;
"signon.rememberSignons" = false;
"browser.shell.checkDefaultBrowser" = false;
# Show whole URL in address bar
"browser.urlbar.trimURLs" = false;
# Disable some not so useful functionality.
"browser.disableResetPrompt" = true; # "Looks like you haven't started Firefox in a while."
"browser.onboarding.enabled" = false; # "New to Firefox? Let's get started!" tour
"browser.aboutConfig.showWarning" = false; # Warning when opening about:config
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
"extensions.autoDisableScopes" = "0"; # Automatically enable extensions
"extensions.pocket.enabled" = false;
"extensions.shield-recipe-client.enabled" = false;
#"reader.parse-on-load.enabled" = false; # "reader view"
# disable telemetry
# https://github.com/hlissner/dotfiles/blob/089f1a9da9018df9e5fc200c2d7bef70f4546026/modules/desktop/browsers/firefox.nix
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.server" = "data:,";
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.coverage.opt-out" = true;
"toolkit.coverage.opt-out" = true;
"toolkit.coverage.endpoint.base" = "";
"experiments.supported" = false;
"experiments.enabled" = false;
"experiments.manifest.uri" = "";
"browser.ping-centre.telemetry" = false;
"app.normandy.enabled" = false;
"app.normandy.api_url" = "";
"app.shield.optoutstudies.enabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.healthreport.service.enabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
# Disable crash reports
"breakpad.reportURL" = "";
"browser.tabs.crashReporting.sendReport" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
# Disable Form autofill
# https://wiki.mozilla.org/Firefox/Features/Form_Autofill
"browser.formfill.enable" = false;
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.available" = "off";
"extensions.formautofill.creditCards.available" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.heuristics.enabled" = false;
};
};
};
}

View file

@ -0,0 +1,19 @@
/* Hide sidebar header */
#sidebar-header {
display: none;
}
/* Hide tab bar */
#TabsToolbar {
display: none;
}
/* urlbar same color as background */
#urlbar-background, #searchbar {
background-color: var(--toolbar-bgcolor) !important;
}
/* Hide tiny strip below the main top bar */
#navigator-toolbox {
border-bottom: none !important;
}

View file

@ -0,0 +1,7 @@
{pkgs, ...}: {
home.packages = with pkgs; [
(tor-browser.override {
mediaSupport = false;
})
];
}

View file

@ -42,7 +42,23 @@
mod = config.wayland.windowManager.sway.config.modifier;
wobVolume = "${pkgs.wireplumber}/bin/wpctl get-volume @DEFAULT_SINK@ | awk '{print $2*100}' > $XDG_RUNTIME_DIR/wob.sock";
setVolume = limit: amount: "${pkgs.wireplumber}/bin/wpctl set-volume -l ${limit} @DEFAULT_AUDIO_SINK@ ${amount}";
perMonitor = workspace: "\"$(swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[] | select(.focused == true).name' | ${lib.getExe pkgs.perl} -ne '$s=0;for(split//){$s+=ord}print\"$s\"')${toString workspace}\"";
#perMonitor = workspace: "\"$(swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[] | select(.focused == true).name' | ${lib.getExe pkgs.perl} -ne '$s=0;for(split//){$s+=ord}print\"$s\"')${toString workspace}\"";
monitorId = pkgs.writers.writeBash "monitor-id" ''
swaymsg -t get_outputs \
| ${lib.getExe pkgs.jq} -r '.[] | select (.focused == true).name' \
| ${lib.getExe pkgs.perl} -ne '$s=0;for(split//){$s+=ord}print"$s"'
'';
pauseApp = pkgs.writers.writeBash "pause-app" ''
set -e
pid=$(swaymsg -t get_tree \
| ${lib.getExe pkgs.jq} -re '.. | select (.type? == "con" and .focused? == true).pid')
if [ $(cat "/proc/$pid/wchan") == "do_signal_stop" ]; then
kill -s SIGCONT $pid
else
kill -s SIGSTOP $pid
fi
'';
dir = with config.wayland.windowManager.sway.config; {
inherit up down left right;
};
@ -61,7 +77,10 @@
"${mod}+Ctrl+Shift+${dir.down}" = "move output down";
"${mod}+Shift+Backspace" = "exec systemctl suspend";
"${mod}+Shift+s" = "exec ${lib.getExe pkgs.grimblast} copy area";
"${mod}+Shift+s" = "exec ${lib.getExe pkgs.sway-contrib.grimshot} copy anything";
"${mod}+Ctrl+Shift+s" = "exec XDG_PICTURES_DIR=$XDG_PICTURES_DIR/screenshots ${lib.getExe pkgs.sway-contrib.grimshot} savecopy anything";
"${mod}+Shift+p" = "exec ${pauseApp}";
"XF86AudioRaiseVolume" = "exec ${setVolume "1.5" "3%+"} && ${wobVolume}";
"XF86AudioLowerVolume" = "exec ${setVolume "1.5" "3%-"} && ${wobVolume}";
@ -70,19 +89,20 @@
"XF86AudioNext" = "exec ${lib.getExe pkgs.playerctl} next";
"XF86AudioPrev" = "exec ${lib.getExe pkgs.playerctl} previous";
}
// builtins.listToAttrs (lib.flatten
(builtins.map (x: let
x' = toString x;
in [
{
name = "${mod}+${x'}";
value = "exec swaymsg workspace number ${perMonitor x'}:${x'}";
}
{
name = "${mod}+Shift+${toString x'}";
value = "exec swaymsg move container to workspace number ${perMonitor x'}:${x'}";
}
]) (lib.range 0 9)))
// (let
inherit (builtins) foldl';
inherit (lib) range;
in
foldl' (acc: x:
acc
// (let
y = toString x;
in {
"${mod}+${y}" = "exec swaymsg workspace number \"$(${monitorId})${y}:${y}\"";
"${mod}+Shift+${y}" = "exec swaymsg move container to workspace number \"$(${monitorId})${y}:${y}\"";
}))
{}
(range 0 9))
);
};
};

View file

@ -1,5 +1,5 @@
{pkgs, ...}: {
home.packages = with pkgs; [
pavucontrol
pwvucontrol
];
}

View file

@ -1,7 +1,7 @@
{
programs.direnv = {
enable = true;
nix-direnv.enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
}

View file

@ -18,6 +18,9 @@ in {
pictures = home + "/pics";
publicShare = home + "/share";
videos = home + "/vids";
extraConfig = {
XDG_SCREENSHOTS_DIR = config.xdg.userDirs.pictures + "/screenshots";
};
};
};

View file

@ -2,16 +2,20 @@
self,
inputs,
homeImports,
lib,
pkgs,
...
}: let
specialArgs = {
inherit inputs self;
};
in {
flake.colmena = let
mod = "${self}/system";
prependAll = a: b: map (x: a + x) b;
rootPaths = prependAll "${self}/";
modulePaths = prependAll "${self}/system/";
inherit (import "${self}/system") desktop;
in {
in {
flake.colmena = {
meta = {
nixpkgs = import inputs.nixpkgs {
system = "x86_64-linux";
@ -38,24 +42,26 @@ in {
};
imports =
desktop
++ [
++ lib.flatten [
./nixdesk
"${self}/secrets"
"${self}/secrets/nixdesk"
(rootPaths [
"secrets"
"secrets/nixdesk"
])
#"${mod}/network/wifi.nix"
(modulePaths [
"services/syncthing.nix"
"services/virt/waydroid.nix"
"services/virt/virt-manager.nix"
#"network/wifi.nix"
#"services/ollama.nix"
"desktop/x11/nosleep.nix"
"${mod}/services/syncthing.nix"
#"${mod}/services/virt/podman.nix"
"${mod}/services/virt/waydroid.nix"
"${mod}/services/virt/virt-manager.nix"
#"${mod}/services/ollama.nix"
"${mod}/desktop/x11/nosleep.nix"
"${mod}/programs/gamemode.nix"
"${mod}/programs/gamescope.nix"
"${mod}/programs/steam.nix"
"programs/gamemode.nix"
"programs/gamescope.nix"
"programs/steam.nix"
])
{
home-manager = {
@ -70,34 +76,38 @@ in {
targetUser = "xun";
targetHost = "hopper.local";
};
imports = [
imports = lib.flatten [
./hopper
"${self}/secrets"
"${self}/secrets/hopper"
(rootPaths [
"secrets"
"secrets/hopper"
])
"${mod}/core"
(modulePaths [
"core"
#"${mod}/programs"
#"${mod}/programs/steam.nix"
#"programs"
#"programs/steam.nix"
#"${mod}/desktop"
#"${mod}/desktop/awesome.nix"
#"desktop"
#"desktop/awesome.nix"
#"${mod}/hardware/opengl.nix"
#"${mod}/hardware/steam-hardware.nix"
#"${mod}/hardware/bluetooth.nix"
#"${mod}/hardware/qmk.nix"
#"hardware/graphics.nix"
#"hardware/steam-hardware.nix"
#"hardware/bluetooth.nix"
#"hardware/qmk.nix"
"${mod}/network/avahi.nix"
"${mod}/network/networkd.nix"
"${mod}/network/tailscale.nix"
"network/avahi.nix"
"network/networkd.nix"
"network/tailscale.nix"
#"${mod}/services"
#"${mod}/services/pipewire.nix"
"${mod}/services/syncthing.nix"
#"${mod}/services/containers/server"
"${mod}/services/containers/experimental"
#"services"
#"services/pipewire.nix"
"services/syncthing.nix"
#"services/containers/server"
"services/containers/experimental"
])
#{
# home-manager = {
@ -109,15 +119,15 @@ in {
};
liveiso = {
deployment.targetHost = null;
imports = [
imports = lib.flatten [
./liveiso
"${mod}/nix"
"${mod}/core/security.nix"
"${mod}/services"
"${mod}/desktop"
(modulePaths [
"/nix"
"/core/security.nix"
"/services"
"/desktop"
])
];
};
};

View file

@ -37,12 +37,12 @@
${lib.getExe pkgs.gnuplot} -c ${pkgs.writeText "gnuplotcmds" ''
set xdata time
set timefmt '%Y%m%dT%H%M%S.000Z'
set format x '%H:%M'
set format x '%m/%d-%H:%M'
set xlabel 'Time'
set ylabel 'Trophies'
set term svg
plot "/dev/stdin" using 1:2 with linespoints notitle
''} # 2>/dev/null
plot "/dev/stdin" u 1:2 w lines notitle
''}
}
case ''${parameters:1} in
@ -59,41 +59,23 @@
;;
brawler*)
id=$(echo $parameters | ${lib.getExe pkgs.gawk} '{print $2}')
brawler=$(echo $parameters | ${lib.getExe pkgs.gawk} '{print $3}')
brawler=$(echo $parameters | ${lib.getExe pkgs.gawk} '{print $3}' | ${lib.getExe pkgs.gnused} 's/%20/ /g')
response=$(${lib.getExe pkgs.jq} -r \
"sort_by(.battleTime)
| reverse
| map (select (.. | .tag? == \"#$id\" and .brawler.name == \"$brawler\")).[]
| select (.battle.type == \"ranked\")
| .battleTime,
(.battle | (.teams[]?,.players) | select(.)[] | select(.tag == \"#$id\") | .brawler.trophies) + .battle.trophyChange" "/var/lib/brawlstats/$id-log.json" \
| paste - - \
| tosvg)
#reponse=$(${lib.getExe pkgs.jq} -r \
# "sort_by(.battleTime)
# | reverse
# | map (select (.. | .tag? == \"#$id\" and .brawler.name == \"$brawler\")).[]
# | .battleTime,
# (.battle | (.teams[]?,.players) | select(.)[] | select(.tag == \"#$id\") | .brawler.trophies) + .battle.trophyChange" \
# "/var/lib/brawlstats/$id-log.json" \
# | paste - - \
# | tosvg)
#echo $response
;;
*)
response="parameters: $parameters | firstparam: $(echo "$parameters" | ${lib.getExe pkgs.gawk} '{print $1}')"
;;
esac
#file="/var/lib/brawlstats/output.svg"
echo -e "HTTP/1.1 200 OK\r\nContent-Length: $(echo "$response" | wc -c)\r\nContent-Type: text/html\r\n\r\n$response"
#echo $endpoint
#cat "$file"
#while read -r LINE
#do
# echo "$LINE"
# [ -z "$LINE" ] && break
#done
''}";
};
};
@ -119,7 +101,7 @@
LoadCredential = "apitoken:${config.sops.secrets.brawlstars-api-key.path}";
Environment = "TOKEN=%d/apitoken";
ExecStart = "${pkgs.writeShellScript "brawlstats.sh" ''
ExecStart = pkgs.writers.writeBash "brawlstats.sh" ''
TOKEN=$(cat $TOKEN)
cd "$STATE_DIRECTORY"
@ -160,7 +142,7 @@
# remove old backups
find . -type f -name "$id-log-*.json" | sort | head -n -5 | xargs -r rm
done
''}";
'';
};
};
}

View file

@ -1,7 +1,6 @@
{inputs, ...}: {
imports = with inputs.hardware.nixosModules; [
common-cpu-intel
common-pc-hdd
./hardware.nix
./brawlstats.nix

View file

@ -2,12 +2,12 @@
nixpkgs.hostPlatform.system = "x86_64-linux";
## nvidia gpu
services.xserver.videoDrivers = ["nvidia"];
#services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
modesetting.enable = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
#hardware.nvidia = {
# modesetting.enable = true;
# package = config.boot.kernelPackages.nvidiaPackages.stable;
#};
boot = {
initrd = {

View file

@ -1,9 +1,5 @@
{pkgs, ...}: {
#environment.systemPackages = [pkgs.steam-run];
environment.systemPackages = [pkgs.appimage-run];
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
{pkgs, ...}: let
list-of-libraries = with pkgs; [
alsa-lib
at-spi2-atk
at-spi2-core
@ -56,4 +52,14 @@
xorg.libxshmfence
zlib
];
in {
programs.appimage = {
enable = true;
package = pkgs.appimage-run.override {
extraPkgs = p: list-of-libraries;
};
};
programs.nix-ld.enable = true;
programs.nix-ld.libraries = list-of-libraries;
}

View file

@ -1,11 +1,7 @@
{pkgs, ...}: {
documentation = {
dev.enable = true;
man.generateCaches = true;
man = {
man-db.enable = false;
mandoc.enable = true;
};
#man.generateCaches = true;
};
environment.systemPackages = with pkgs; [
linux-manual

7
system/core/tools.nix Normal file
View file

@ -0,0 +1,7 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
htop
btop
vim
];
}

View file

@ -1,12 +1,15 @@
let
desktop = [
./core
./core/tools.nix
./core/compat.nix
./core/boot.nix
./core/docs.nix
./core/gvfs.nix
./hardware/opengl.nix
./nix/gc.nix
./hardware/graphics.nix
./hardware/steam-hardware.nix
./hardware/bluetooth.nix
./hardware/qmk.nix

View file

@ -0,0 +1,6 @@
{
hardware.graphics = {
enable = true;
enable32Bit = true;
};
}

View file

@ -1,7 +0,0 @@
{
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
}

7
system/nix/gc.nix Normal file
View file

@ -0,0 +1,7 @@
{
nix.gc = {
automatic = true;
options = "--delete-older-than 14d";
};
nix.optimise.automatic = true;
}

View file

@ -9,17 +9,34 @@
source-code-pro
iosevka
# nerdfonts
nerdfonts
#(nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];})
(stdenv.mkDerivation {
# font piracy? i would never
pname = "Cartograph-CF";
version = "0.1";
src = pkgs.fetchFromGitHub {
owner = "xiyaowong";
repo = "Cartograph-CF";
rev = "619de85c103dbd5c150e1d5df039357f8ac2ed52";
hash = "sha256-NVqHxLQZnHb0lMjODkaDwSoglGPkUVJHL1xTmASoER4=";
};
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/share/fonts
cp -r $src $out/share/fonts
runHook postInstall
'';
})
];
# causes more issues than it solves
enableDefaultPackages = false;
# user defined fonts
# the reason there's Noto Color Emoji everywhere is to override DejaVu's
# B&W emojis that would sometimes show instead of some Color emojis
fontconfig.defaultFonts = {
monospace = ["DejaVu Sans Mono for Powerline"];
sansSerif = ["DejaVu Sans"];

View file

@ -1,4 +1,8 @@
{pkgs, ...}: {
{
pkgs,
config,
...
}: {
environment.systemPackages = with pkgs; [
vim
htop
@ -8,7 +12,12 @@
nethogs
ffmpeg-full
parted
pciutils
usbutils
busybox
(
if config.nixpkgs.config.allowUnfree
then p7zip-rar
else p7zip
)
unar
];
}

View file

@ -132,6 +132,7 @@
"5030:5030" # slskd
"5031:5031" # slskd https
"8096:8096" # jellyfin
"8920:8920" # jellyfin https
"8080:8080" # qbittorrent webui
];

View file

@ -1,6 +1,6 @@
{
services.ollama = {
enable = true;
#rocmOverrideGfx = "10.3.0";
rocmOverrideGfx = "10.3.0";
};
}