Compare commits

..

No commits in common. "a7aa536cf6fb1c136e53f06d518f128568473e7a" and "2bfd250806b2b6f139845ed8531a3cf15abbbc0f" have entirely different histories.

18 changed files with 352 additions and 48 deletions

View file

@ -12,7 +12,7 @@ This repo is managed with Nix + GNU stow
- `wpa_cli`
```bash
add_network
# will return a number
# wil return a number
set_network <number> ssid "<ssid>"
set_network <number> psk "<your password>"
select_network 0

View file

@ -1,10 +1,4 @@
{ pkgs, ... }:
{
home.packages = [
pkgs.hyperfine # for benchmarking
pkgs.watchexec
];
programs.git = {
enable = true;
signing.signByDefault = false; # no need to setup the key

View file

@ -20,6 +20,17 @@
pkgs.unzip
pkgs.gnutar
pkgs.p7zip
pkgs.bc
pkgs.dig
pkgs.hutils
# pretty tui tools
pkgs.dust
pkgs.tokei
pkgs.hyperfine
pkgs.watchexec
pkgs.onefetch
pkgs.just
];
programs = {

View file

@ -1,7 +1,9 @@
#
# Note:
# I could've import the wifi configuration and use it here, but I haven't
# figured out an elegant (enough) way to do it while keeping my secrets
# encrypted.
#
let
sources = import ../../npins;
in
@ -35,7 +37,8 @@ in
overlays = map import [
../overlays/agenix.nix
../overlays/disko.nix
../overlays/npins.nix
../overlays/nur.nix
../packages/overlay.nix
];
};
@ -51,20 +54,18 @@ in
isoImage.squashfsCompression = "zstd -Xcompression-level 3";
environment.systemPackages = with pkgs; [
agenix
npins
disko
stow
manage
git
pastebinit # for sharing cli output & debugging
hdparm # to ATA secure wipe disks
environment.systemPackages = [
pkgs.disko
pkgs.manage
pkgs.git
pkgs.pastebinit # for sharing cli output & debugging
pkgs.hdparm # to ATA secure wipe disks
pkgs.btop
];
networking.firewall.allowedTCPPorts = [ 8080 ]; # in case you wanna nc
programs.tmux.enable = true;
users.users.nixos.shell = pkgs.fish;
programs.fish.enable = true;

View file

@ -150,6 +150,7 @@ in
./vanadium/home/misc.nix
./vanadium/home/gtk.nix
./vanadium/home/zen-browser.nix
./vanadium/home/firefox.nix
./vanadium/home/xmobar.nix
@ -168,6 +169,7 @@ in
../homeModules/common/atuin.nix
../homeModules/common/direnv.nix
../homeModules/common/feh.nix
../homeModules/common/zen-browser.nix
../homeModules/common/firefox.nix
../homeModules/common/fzf.nix
../homeModules/common/git.nix
@ -189,6 +191,9 @@ in
#
(sources.agenix + "/modules/age-home.nix")
sources.wired-notify.asFlake.homeManagerModules.default
# non official one uses reuploaded artifacts, are they audited?
sources.zen-browser.asFlake.homeModules.beta
];
}

View file

@ -6,20 +6,12 @@
}:
{
home.packages = [
pkgs.watchexec
# Nix
pkgs.nurl # fetcher made easy
pkgs.nix-diff # debug cache miss
pkgs.nix-tree # analyze closure
pkgs.nix-which
# preview markdown
pkgs.python3Packages.grip
# For {nix,haskell} contribution
pkgs.gh
# pkgs.act
pkgs.act
pkgs.nixfmt-rfc-style
pkgs.nix-doc
pkgs.nixpkgs-review
@ -27,7 +19,6 @@
pkgs.fx # json viewer
# LSPs
pkgs.lua-language-server
pkgs.stylua # lua
pkgs.nil # nix
@ -37,7 +28,9 @@
pkgs.vscode-langservers-extracted # JSON etc
pkgs.yaml-language-server # yaml
pkgs.cornelis # agda
pkgs.shfmt # bash
# bash
pkgs.shfmt
pkgs.nodePackages.bash-language-server
# ghc
@ -66,6 +59,14 @@
programs.gpg.enable = true;
# programs.vscode = {
# enable = true;
# profiles.default.extensions = [
# pkgs.vscode-extensions.redhat.java
# pkgs.vscode-extensions.vscjava.vscode-java-pack
# ];
# };
nix = {
settings = {
extra-substituters = [

View file

@ -18,17 +18,21 @@
};
home.packages = [
# TODO: write a simple rpn calculator for scripting (and learn bash properly)
pkgs.ghc # my favorite calculator
pkgs.lsr # fast ls with io_uring
pkgs.nmap
pkgs.stow
pkgs.zip
pkgs.unzip
pkgs.gnutar
pkgs.p7zip
pkgs.bc
pkgs.dig
pkgs.hutils # TODO: simplify this project
pkgs.hutils
pkgs.miniserve
pkgs.agenix
pkgs.nix-which
# To quote a legendary programer:
# > for whenever people think mac is hardcoded in hardware.
@ -37,20 +41,50 @@
# lol
pkgs.macchanger
# The file picker is not ergonomic enough, sadly
pkgs.helix
# pkgs.nushell
pkgs.ruler
pkgs.mini-calc
# pdf
pkgs.poppler-utils # pdfseparate, pdfunite
pkgs.easyscan
# fun
# pkgs.prop-solveur
# pkgs.hbrainfuck
# pkgs.lucky-commit
# # research
# pkgs.necrolib
# pretty tui tools
pkgs.dust
pkgs.tokei
pkgs.hyperfine
pkgs.watchexec
pkgs.onefetch
pkgs.just
pkgs.nixfmt-rfc-style # formatter
pkgs.nurl # fetcher made easy
pkgs.nix-diff # debug cache miss
pkgs.npins
pkgs.nix-tree # analyze closure
# productivity / media
pkgs.evolution # TODO: find an alternative
# pkgs.libreoffice
pkgs.evolution
pkgs.libreoffice
pkgs.calibre
pkgs.digikam
pkgs.nautilus
pkgs.sushi # space bar previewer
# pkgs.xournalpp
pkgs.picard # music tagger
pkgs.mousai
pkgs.nicotine-plus
pkgs.qbittorrent
pkgs.mkvtoolnix
pkgs.localsend # file share with iOS
@ -82,7 +116,12 @@
defaultEditor = true;
};
lazygit.enable = true;
fish.enable = true;
fish = {
enable = true;
shellAbbrs = {
"fdoc" = "find ~/Documents -name";
};
};
starship.enable = true;
tmux.enable = true;
direnv.enable = true;

View file

@ -65,8 +65,7 @@ config =
, Run $
Com
"tomorrow"
[ "--target", "2026-02-17=monmaster⁺"
, "--target", "2026-03-16=monmaster⁻"
[ "--target", "2026-02-02=monmaster"
]
""
(60 &minute)

View file

@ -165,7 +165,7 @@ myManageHook =
composeAll
[ isNautilusPreviewer --> customFloating centeredFloat
, isPavucontrol --> customFloating centeredFloat
, isFeh --> doF copyToAll <> customFloating bottomRightFloat
, isFeh --> doF copyToAll <> customFloating buttomRightFloat
, isMinder --> customFloating centeredFloat
, isDiscord --> doShift chatWS
, isEvolution --> doShift chatWS
@ -177,7 +177,7 @@ myManageHook =
-- Note: some rules here are overlapping, the first one will take the precedence (composeOne)
-- e.g. firefoxpip is a utility window
<> composeOne
[ isFirefoxPip -?> doF copyToAll <> customFloating bottomRightFloat
[ isFirefoxPip -?> doF copyToAll <> customFloating buttomRightFloat
, isUtility -?> doIgnore
, isDialog -?> customFloating centeredFloat
, isEvolutionComposer -?> customFloating centeredFloat
@ -399,11 +399,11 @@ chatWS = myWorkspaces !! 3
multimediaWS :: WorkspaceId
multimediaWS = myWorkspaces !! 6
centeredFloat, smallFloat, fullFloat, bottomRightFloat :: W.RationalRect
centeredFloat, smallFloat, fullFloat, buttomRightFloat :: W.RationalRect
centeredFloat = W.RationalRect (1%9) (1%9) (7%9) (7%9)
smallFloat = W.RationalRect (3%5) (3%5) (2%7) (2%7)
fullFloat = W.RationalRect 0 0 1 1
bottomRightFloat = W.RationalRect (1%2) (1%2) (1%2) (1%2)
buttomRightFloat = W.RationalRect (1%2) (1%2) (1%2) (1%2)
xmobarConfig :: StatusBarConfig
xmobarConfig = statusBarProp "xmobar -x 0" (pure myPrettyPrinter)

View file

@ -0,0 +1,166 @@
{
pkgs,
config,
...
}:
let
inherit (pkgs) nur;
in
{
programs.zen-browser = {
enable = false;
policies.SearchEngines.Add = [
# Forges
{
Name = "GitHub";
Alias = "@gh";
IconURL = "https://github.com/favicon.ico";
Description = "Your code yum yum";
URLTemplate = "https://github.com/search?q={searchTerms}&type=repositories";
}
{
Name = "GitHub (Code Search)";
Alias = "@ghc";
IconURL = "https://github.com/favicon.ico";
Description = "Your code yum yum";
URLTemplate = "https://github.com/search?q={searchTerms}&type=code";
}
{
Name = "Codeberg";
Alias = "@cb";
IconURL = "https://codeberg.org/favicon.ico";
Description = "Software development, but free!";
URLTemplate = "https://codeberg.org/explore/repos?q={searchTerms}";
}
{
Name = "?C";
Alias = "@cc";
IconURL = "https://git.confusedcompiler.org/favicon.ico";
URLTemplate = "https://git.confusedcompiler.org/explore/repos?q={searchTerms}";
}
# Nix{,OS,pkgs}
{
Name = "NixOS Search (Package)";
Alias = "@np";
IconURL = "https://nixos.org/favicon.ico";
Description = "Search in nixpkgs";
URLTemplate = "https://search.nixos.org/packages?query={searchTerms}";
}
{
Name = "NixOS Search (Options)";
Alias = "@no";
IconURL = "https://nixos.org/favicon.ico";
Description = "Search in NixOS options";
URLTemplate = "https://search.nixos.org/options?query={searchTerms}";
}
# Haskell
{
Name = "Flora";
Alias = "@hs";
IconURL = "https://flora.pm/static/icons/favicon-32x32.png";
URLTemplate = "https://flora.pm/search?q={searchTerms}";
}
# Discourse
{
Name = "NixOS Discourse";
Alias = "@nd";
IconURL = "https://nixos.org/favicon.ico";
URLTemplate = "https://discourse.nixos.org/search?q={searchTerms}";
}
{
Name = "Framework Discourse";
Alias = "@fd";
IconURL = "https://frame.work/favicon.ico";
URLTemplate = "https://community.frame.work/search?q={searchTerms}";
}
# Misc
{
Name = "YouTube";
Alias = "@yt";
IconURL = "https://youtube.com/favicon.ico";
SuggestURLTemplate = "http://suggestqueries.google.com/complete/search?q={searchTerms}&ds=yt";
URLTemplate = "https://www.youtube.com/results?search_query={searchTerms}";
}
{
Name = "Genius";
Alias = "@geni";
IconURL = "https://genius.com/favicon.ico";
URLTemplate = "https://genius.com/search?q={searchTerms}";
}
];
profiles = {
default = {
settings = {
# "full-screen-api.ignore-widgets" = true; # limit fullscreen mode to window
};
userChrome = ''
/* monofont tweak */
#statuspanel-label {
font-family: monospace;
}
.urlbar-input-box {
font-family: monospace;
}
'';
extensions.packages =
let
addons = nur.repos.rycee.firefox-addons;
in
[
addons.sponsorblock
addons.return-youtube-dislikes
addons.shinigami-eyes
addons.consent-o-matic
];
};
junk = {
id = 1;
inherit (config.programs.zen-browser.profiles.default)
settings
userChrome
;
extensions.packages =
let
addons = nur.repos.rycee.firefox-addons;
in
[ addons.multi-account-containers ];
containers = {
raisin = {
color = "purple";
icon = "fruit";
id = 1;
};
pomme = {
color = "red";
icon = "fruit";
id = 2;
};
};
};
# Isolate it because it's proprietary
tampermonkey = {
id = 2;
inherit (config.programs.zen-browser.profiles.default)
settings
userChrome
;
extensions.packages =
let
addons = nur.repos.rycee.firefox-addons;
in
[ addons.tampermonkey ];
};
};
};
}

View file

@ -57,7 +57,7 @@
extraHosts = ''
#
# Generated from nixos configuration
# Generated from nixos configuartion
#
# This is the fascist one, just block it because I can't tell

View file

@ -54,7 +54,7 @@
# Use btrfs over ext4 for:
# - compression
# nix store can be shrunk using this feature
# nix store can be shrinked using this feature
# - more transparent partitions (subvolumes)
# no more "I need more space here and not there"
btrfs = {

View file

@ -78,7 +78,7 @@ in
# No
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
# Password manager
# Pasword manager
"signon.rememberSignons" = false;
"services.passwordSavingEnabled" = false;
"pref.privacy.disable_button.view_passwords" = false;
@ -141,7 +141,7 @@ in
"x-scheme-handler/unknown" = "firefox.desktop";
};
in
lib.mkIf cfg.enable {
lib.mkIf (cfg.enable && !config.programs.zen-browser.enable) {
enable = true;
associations.added = associations;
defaultApplications = associations;

View file

@ -0,0 +1,68 @@
{
config,
lib,
...
}:
let
cfg = config.programs.zen-browser;
firefoxCfg = config.programs.firefox;
in
{
programs.zen-browser = {
policies = firefoxCfg.policies;
# "locked" semantic from zen (doesn't seem to be doing anything, attempted for zen-twilight 1.18t)
# https://github.com/0xc000022070/zen-browser-flake/tree/main#preferences
#
# To check which option is mapped to which about:config
# - back preference file
# cp .zen/default/prefs.js{,.bk}
# - click the buttons
# - diff it
# diff .zen/default/prefs.js{.bk,}
profiles.default = lib.mkMerge [
firefoxCfg.profiles.default
{
# Zen specific
settings = {
"zen.theme.content-element-separation" = 0; # Remove "borders" around window
"zen.tabs.show-newtab-vertical" = false;
"zen.view.compact.toolbar-flash-popup" = true;
"zen.view.show-newtab-button-top" = false;
"zen.view.use-single-toolbar" = false;
"zen.tabs.ctrl-tab.ignore-pending-tabs" = true; # ctrl-tab ignore unloaded tabs
# https://github.com/zen-browser/desktop/discussions/12025
# This makes tabs sync across windows, which as annoying af
"zen.window-sync.enabled" = false;
};
}
];
};
xdg.mimeApps =
let
associations = lib.genAttrs [
"application/x-extension-shtml"
"application/x-extension-xhtml"
"application/x-extension-html"
"application/x-extension-xht"
"application/x-extension-htm"
# "x-scheme-handler/unknown"
# "x-scheme-handler/mailto"
"x-scheme-handler/chrome"
"x-scheme-handler/about"
"x-scheme-handler/https"
"x-scheme-handler/http"
"application/xhtml+xml"
# "application/json"
# "text/plain"
"text/html"
] (_: cfg.package.meta.desktopFileName);
in
lib.mkIf cfg.enable {
associations.added = associations;
defaultApplications = associations;
};
}

View file

@ -9,6 +9,16 @@
enable = true;
extraRules = [
{
# Invoke just with doas directly as a nixos-rebuild helper
#
# Specifiying just here is impractical, because
# - Use absolute path?
# Works only for a specific version of just binary.
# Also, for some reason, the rule won't match.
# - Use relative path?
# doas's docs says it searches in a "limited subset of PATH" if it's relative.
# I suspect that it doesn't search the PATH added ad-hoc by the nix-shell, also not a good solution.
# Also, for some reason, the rule won't match.
users = [ ":wheel" ];
setEnv = [ "PATH" ];
}

View file

@ -8,7 +8,7 @@
package = lib.mkDefault pkgs.nix;
settings = {
# it is impossible to anwser to the prompt in nix-direnv, so we force it to off.
# it is impossible to anser in nix-direnv, so we force it to off.
# https://github.com/nix-community/nix-direnv/issues/678
accept-flake-config = lib.mkForce false;

View file

@ -368,6 +368,19 @@
"revision": "491197a6a5ef9c65a85c3eb1531786f32ffff5b3",
"url": "https://github.com/Toqozz/wired-notify/archive/491197a6a5ef9c65a85c3eb1531786f32ffff5b3.tar.gz",
"hash": "sha256-wxkeSF0/3FI0HSBKhZ2mlAAmFviNrZzdhjHqTfWP6h0="
},
"zen-browser": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "0xc000022070",
"repo": "zen-browser-flake"
},
"branch": "main",
"submodules": false,
"revision": "0fac05e4b604c3304e7710a95572e78350fe9968",
"url": "https://github.com/0xc000022070/zen-browser-flake/archive/0fac05e4b604c3304e7710a95572e78350fe9968.tar.gz",
"hash": "sha256-jejW3u1bkqz0ObXZeiZqLQNwC7+MXb8/KMwf3VPQpRI="
}
},
"version": 7

View file

@ -4,7 +4,6 @@ in
{
pkgs ? import sources.nixpkgs {
overlays = map import [
./nix/overlays/agenix.nix
./nix/overlays/disko.nix
./nix/overlays/npins.nix
./nix/packages/overlay.nix
@ -19,10 +18,8 @@ pkgs.mkShell {
packages =
with pkgs;
[
agenix # from agenix repo
npins # from npins repo
disko # from disko flake
stow
manage
nixos-anywhere # comes from nixpkgs
]