diff --git a/flake.lock b/flake.lock index b216680..3ea9c72 100644 --- a/flake.lock +++ b/flake.lock @@ -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": { diff --git a/flake.nix b/flake.nix index e728988..2766f59 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; }; } diff --git a/home/editors/emacs.nix b/home/editors/emacs.nix index 6cd9e24..5b56abf 100644 --- a/home/editors/emacs.nix +++ b/home/editors/emacs.nix @@ -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 }; } diff --git a/home/profiles/hopper/default.nix b/home/profiles/hopper/default.nix index b4b86a1..4fbaf36 100644 --- a/home/profiles/hopper/default.nix +++ b/home/profiles/hopper/default.nix @@ -4,7 +4,7 @@ ../../terminal/shell/zsh.nix ../../terminal/emulator/wezterm.nix - ../../programs/browsers/firefox.nix + ../../programs/browsers/firefox ../../programs/desktop ../../programs/desktop/awesome diff --git a/home/profiles/nixdesk/default.nix b/home/profiles/nixdesk/default.nix index 5cd83fe..c45ce22 100644 --- a/home/profiles/nixdesk/default.nix +++ b/home/profiles/nixdesk/default.nix @@ -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 diff --git a/home/programs/browsers/firefox.nix b/home/programs/browsers/firefox.nix deleted file mode 100644 index ab73444..0000000 --- a/home/programs/browsers/firefox.nix +++ /dev/null @@ -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; - }; - }; - }; -} diff --git a/home/programs/browsers/firefox/default.nix b/home/programs/browsers/firefox/default.nix new file mode 100644 index 0000000..cb7b031 --- /dev/null +++ b/home/programs/browsers/firefox/default.nix @@ -0,0 +1,211 @@ +{ + inputs, + pkgs, + lib, + config, + ... +}: { + xdg.configFile."tridactyl/tridactylrc" = { + text = '' + unbind + unbind + unbind # 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; + }; + }; + }; +} diff --git a/home/programs/browsers/firefox/userChrome.css b/home/programs/browsers/firefox/userChrome.css new file mode 100644 index 0000000..0d2e023 --- /dev/null +++ b/home/programs/browsers/firefox/userChrome.css @@ -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; +} diff --git a/home/programs/browsers/tor.nix b/home/programs/browsers/tor.nix new file mode 100644 index 0000000..c905aa6 --- /dev/null +++ b/home/programs/browsers/tor.nix @@ -0,0 +1,7 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + (tor-browser.override { + mediaSupport = false; + }) + ]; +} diff --git a/home/programs/desktop/sway/default.nix b/home/programs/desktop/sway/default.nix index 39bdd0a..f65134c 100644 --- a/home/programs/desktop/sway/default.nix +++ b/home/programs/desktop/sway/default.nix @@ -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)) ); }; }; diff --git a/home/programs/misc/pavucontrol.nix b/home/programs/misc/pwvucontrol.nix similarity index 76% rename from home/programs/misc/pavucontrol.nix rename to home/programs/misc/pwvucontrol.nix index eca5fb2..365c45b 100644 --- a/home/programs/misc/pavucontrol.nix +++ b/home/programs/misc/pwvucontrol.nix @@ -1,5 +1,5 @@ {pkgs, ...}: { home.packages = with pkgs; [ - pavucontrol + pwvucontrol ]; } diff --git a/home/terminal/programs/direnv.nix b/home/terminal/programs/direnv.nix index 701f7b3..fb7dffc 100644 --- a/home/terminal/programs/direnv.nix +++ b/home/terminal/programs/direnv.nix @@ -1,7 +1,7 @@ { programs.direnv = { enable = true; - nix-direnv.enable = true; enableZshIntegration = true; + nix-direnv.enable = true; }; } diff --git a/home/terminal/programs/xdg.nix b/home/terminal/programs/xdg.nix index f6061d2..90bce4a 100644 --- a/home/terminal/programs/xdg.nix +++ b/home/terminal/programs/xdg.nix @@ -18,6 +18,9 @@ in { pictures = home + "/pics"; publicShare = home + "/share"; videos = home + "/vids"; + extraConfig = { + XDG_SCREENSHOTS_DIR = config.xdg.userDirs.pictures + "/screenshots"; + }; }; }; diff --git a/hosts/default.nix b/hosts/default.nix index e588560..c9317e2 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -2,16 +2,20 @@ self, inputs, homeImports, + lib, + pkgs, ... }: let specialArgs = { inherit inputs self; }; + prependAll = a: b: map (x: a + x) b; + rootPaths = prependAll "${self}/"; + modulePaths = prependAll "${self}/system/"; + + inherit (import "${self}/system") desktop; in { - flake.colmena = let - mod = "${self}/system"; - inherit (import "${self}/system") desktop; - 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" + ]) ]; }; }; diff --git a/hosts/hopper/brawlstats.nix b/hosts/hopper/brawlstats.nix index f7d1663..8a270c1 100644 --- a/hosts/hopper/brawlstats.nix +++ b/hosts/hopper/brawlstats.nix @@ -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 - ''}"; + ''; }; }; } diff --git a/hosts/hopper/default.nix b/hosts/hopper/default.nix index 6e7cbd8..6c8b252 100644 --- a/hosts/hopper/default.nix +++ b/hosts/hopper/default.nix @@ -1,7 +1,6 @@ {inputs, ...}: { imports = with inputs.hardware.nixosModules; [ common-cpu-intel - common-pc-hdd ./hardware.nix ./brawlstats.nix diff --git a/hosts/hopper/hardware.nix b/hosts/hopper/hardware.nix index 1221f8d..482cda9 100644 --- a/hosts/hopper/hardware.nix +++ b/hosts/hopper/hardware.nix @@ -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 = { diff --git a/system/core/compat.nix b/system/core/compat.nix index de3b96f..47980ae 100644 --- a/system/core/compat.nix +++ b/system/core/compat.nix @@ -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; } diff --git a/system/core/docs.nix b/system/core/docs.nix index a650027..9a43366 100644 --- a/system/core/docs.nix +++ b/system/core/docs.nix @@ -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 diff --git a/system/core/tools.nix b/system/core/tools.nix new file mode 100644 index 0000000..acac8c4 --- /dev/null +++ b/system/core/tools.nix @@ -0,0 +1,7 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + htop + btop + vim + ]; +} diff --git a/system/default.nix b/system/default.nix index ad9a3bf..ba2f041 100644 --- a/system/default.nix +++ b/system/default.nix @@ -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 diff --git a/system/hardware/graphics.nix b/system/hardware/graphics.nix new file mode 100644 index 0000000..40956fa --- /dev/null +++ b/system/hardware/graphics.nix @@ -0,0 +1,6 @@ +{ + hardware.graphics = { + enable = true; + enable32Bit = true; + }; +} diff --git a/system/hardware/opengl.nix b/system/hardware/opengl.nix deleted file mode 100644 index a382b18..0000000 --- a/system/hardware/opengl.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - hardware.opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; - }; -} diff --git a/system/nix/gc.nix b/system/nix/gc.nix new file mode 100644 index 0000000..82d2036 --- /dev/null +++ b/system/nix/gc.nix @@ -0,0 +1,7 @@ +{ + nix.gc = { + automatic = true; + options = "--delete-older-than 14d"; + }; + nix.optimise.automatic = true; +} diff --git a/system/programs/fonts.nix b/system/programs/fonts.nix index fa229ce..adf3bb8 100644 --- a/system/programs/fonts.nix +++ b/system/programs/fonts.nix @@ -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"]; diff --git a/system/programs/tools.nix b/system/programs/tools.nix index 5f5ec7a..b96c391 100644 --- a/system/programs/tools.nix +++ b/system/programs/tools.nix @@ -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 ]; } diff --git a/system/services/containers/server/default.nix b/system/services/containers/server/default.nix index 48421f1..ac7585b 100644 --- a/system/services/containers/server/default.nix +++ b/system/services/containers/server/default.nix @@ -132,6 +132,7 @@ "5030:5030" # slskd "5031:5031" # slskd https "8096:8096" # jellyfin + "8920:8920" # jellyfin https "8080:8080" # qbittorrent webui ]; diff --git a/system/services/ollama.nix b/system/services/ollama.nix index 048a910..a50068f 100644 --- a/system/services/ollama.nix +++ b/system/services/ollama.nix @@ -1,6 +1,6 @@ { services.ollama = { enable = true; - #rocmOverrideGfx = "10.3.0"; + rocmOverrideGfx = "10.3.0"; }; }