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

View file

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

View file

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

View file

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

View file

@ -11,9 +11,10 @@
../../terminal/programs/lazygit.nix ../../terminal/programs/lazygit.nix
../../terminal/programs/beets.nix ../../terminal/programs/beets.nix
../../editors/nvim.nix ../../editors/nvim.nix
#../../editors/emacs.nix ../../editors/emacs.nix
../../editors/vscode.nix ../../editors/vscode.nix
../../programs/browsers/firefox.nix ../../programs/browsers/firefox
../../programs/browsers/tor.nix
../../programs/browsers/chromium.nix ../../programs/browsers/chromium.nix
../../terminal/emulator/wezterm.nix ../../terminal/emulator/wezterm.nix
../../terminal/emulator/foot.nix ../../terminal/emulator/foot.nix
@ -31,10 +32,10 @@
# programs # programs
../../programs/misc/keepassxc.nix ../../programs/misc/keepassxc.nix
../../programs/misc/discord.nix ../../programs/misc/discord.nix
../../programs/misc/ardour.nix #../../programs/misc/ardour.nix
../../programs/misc/foliate.nix ../../programs/misc/foliate.nix
../../programs/misc/obsidian.nix ../../programs/misc/obsidian.nix
../../programs/misc/pavucontrol.nix ../../programs/misc/pwvucontrol.nix
../../programs/misc/thunderbird.nix ../../programs/misc/thunderbird.nix
#../../programs/music #../../programs/music
#../../programs/music/yams.nix #../../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; 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"; 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}"; 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; { dir = with config.wayland.windowManager.sway.config; {
inherit up down left right; inherit up down left right;
}; };
@ -61,7 +77,10 @@
"${mod}+Ctrl+Shift+${dir.down}" = "move output down"; "${mod}+Ctrl+Shift+${dir.down}" = "move output down";
"${mod}+Shift+Backspace" = "exec systemctl suspend"; "${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}"; "XF86AudioRaiseVolume" = "exec ${setVolume "1.5" "3%+"} && ${wobVolume}";
"XF86AudioLowerVolume" = "exec ${setVolume "1.5" "3%-"} && ${wobVolume}"; "XF86AudioLowerVolume" = "exec ${setVolume "1.5" "3%-"} && ${wobVolume}";
@ -70,19 +89,20 @@
"XF86AudioNext" = "exec ${lib.getExe pkgs.playerctl} next"; "XF86AudioNext" = "exec ${lib.getExe pkgs.playerctl} next";
"XF86AudioPrev" = "exec ${lib.getExe pkgs.playerctl} previous"; "XF86AudioPrev" = "exec ${lib.getExe pkgs.playerctl} previous";
} }
// builtins.listToAttrs (lib.flatten // (let
(builtins.map (x: let inherit (builtins) foldl';
x' = toString x; inherit (lib) range;
in [ in
{ foldl' (acc: x:
name = "${mod}+${x'}"; acc
value = "exec swaymsg workspace number ${perMonitor x'}:${x'}"; // (let
} y = toString x;
{ in {
name = "${mod}+Shift+${toString x'}"; "${mod}+${y}" = "exec swaymsg workspace number \"$(${monitorId})${y}:${y}\"";
value = "exec swaymsg move container to workspace number ${perMonitor x'}:${x'}"; "${mod}+Shift+${y}" = "exec swaymsg move container to workspace number \"$(${monitorId})${y}:${y}\"";
} }))
]) (lib.range 0 9))) {}
(range 0 9))
); );
}; };
}; };

View file

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

View file

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

View file

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

View file

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

View file

@ -37,12 +37,12 @@
${lib.getExe pkgs.gnuplot} -c ${pkgs.writeText "gnuplotcmds" '' ${lib.getExe pkgs.gnuplot} -c ${pkgs.writeText "gnuplotcmds" ''
set xdata time set xdata time
set timefmt '%Y%m%dT%H%M%S.000Z' 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 xlabel 'Time'
set ylabel 'Trophies' set ylabel 'Trophies'
set term svg set term svg
plot "/dev/stdin" using 1:2 with linespoints notitle plot "/dev/stdin" u 1:2 w lines notitle
''} # 2>/dev/null ''}
} }
case ''${parameters:1} in case ''${parameters:1} in
@ -59,41 +59,23 @@
;; ;;
brawler*) brawler*)
id=$(echo $parameters | ${lib.getExe pkgs.gawk} '{print $2}') 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 \ response=$(${lib.getExe pkgs.jq} -r \
"sort_by(.battleTime) "sort_by(.battleTime)
| reverse | reverse
| map (select (.. | .tag? == \"#$id\" and .brawler.name == \"$brawler\")).[] | map (select (.. | .tag? == \"#$id\" and .brawler.name == \"$brawler\")).[]
| select (.battle.type == \"ranked\")
| .battleTime, | .battleTime,
(.battle | (.teams[]?,.players) | select(.)[] | select(.tag == \"#$id\") | .brawler.trophies) + .battle.trophyChange" "/var/lib/brawlstats/$id-log.json" \ (.battle | (.teams[]?,.players) | select(.)[] | select(.tag == \"#$id\") | .brawler.trophies) + .battle.trophyChange" "/var/lib/brawlstats/$id-log.json" \
| paste - - \ | paste - - \
| tosvg) | 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}')" response="parameters: $parameters | firstparam: $(echo "$parameters" | ${lib.getExe pkgs.gawk} '{print $1}')"
;; ;;
esac 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 -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}"; LoadCredential = "apitoken:${config.sops.secrets.brawlstars-api-key.path}";
Environment = "TOKEN=%d/apitoken"; Environment = "TOKEN=%d/apitoken";
ExecStart = "${pkgs.writeShellScript "brawlstats.sh" '' ExecStart = pkgs.writers.writeBash "brawlstats.sh" ''
TOKEN=$(cat $TOKEN) TOKEN=$(cat $TOKEN)
cd "$STATE_DIRECTORY" cd "$STATE_DIRECTORY"
@ -160,7 +142,7 @@
# remove old backups # remove old backups
find . -type f -name "$id-log-*.json" | sort | head -n -5 | xargs -r rm find . -type f -name "$id-log-*.json" | sort | head -n -5 | xargs -r rm
done done
''}"; '';
}; };
}; };
} }

View file

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

View file

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

View file

@ -1,9 +1,5 @@
{pkgs, ...}: { {pkgs, ...}: let
#environment.systemPackages = [pkgs.steam-run]; list-of-libraries = with pkgs; [
environment.systemPackages = [pkgs.appimage-run];
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
alsa-lib alsa-lib
at-spi2-atk at-spi2-atk
at-spi2-core at-spi2-core
@ -56,4 +52,14 @@
xorg.libxshmfence xorg.libxshmfence
zlib 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, ...}: { {pkgs, ...}: {
documentation = { documentation = {
dev.enable = true; dev.enable = true;
man.generateCaches = true; #man.generateCaches = true;
man = {
man-db.enable = false;
mandoc.enable = true;
};
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
linux-manual 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 let
desktop = [ desktop = [
./core ./core
./core/tools.nix
./core/compat.nix ./core/compat.nix
./core/boot.nix ./core/boot.nix
./core/docs.nix ./core/docs.nix
./core/gvfs.nix ./core/gvfs.nix
./hardware/opengl.nix ./nix/gc.nix
./hardware/graphics.nix
./hardware/steam-hardware.nix ./hardware/steam-hardware.nix
./hardware/bluetooth.nix ./hardware/bluetooth.nix
./hardware/qmk.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 source-code-pro
iosevka iosevka
# nerdfonts
nerdfonts nerdfonts
#(nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];}) #(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 # causes more issues than it solves
enableDefaultPackages = false; enableDefaultPackages = false;
# user defined fonts # 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 = { fontconfig.defaultFonts = {
monospace = ["DejaVu Sans Mono for Powerline"]; monospace = ["DejaVu Sans Mono for Powerline"];
sansSerif = ["DejaVu Sans"]; sansSerif = ["DejaVu Sans"];

View file

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

View file

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

View file

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