Compare commits

...

7 commits

18 changed files with 48 additions and 352 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -6,12 +6,20 @@
}: }:
{ {
home.packages = [ 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 # preview markdown
pkgs.python3Packages.grip pkgs.python3Packages.grip
# For {nix,haskell} contribution # For {nix,haskell} contribution
pkgs.gh pkgs.gh
pkgs.act # pkgs.act
pkgs.nixfmt-rfc-style pkgs.nixfmt-rfc-style
pkgs.nix-doc pkgs.nix-doc
pkgs.nixpkgs-review pkgs.nixpkgs-review
@ -19,6 +27,7 @@
pkgs.fx # json viewer pkgs.fx # json viewer
# LSPs
pkgs.lua-language-server pkgs.lua-language-server
pkgs.stylua # lua pkgs.stylua # lua
pkgs.nil # nix pkgs.nil # nix
@ -28,9 +37,7 @@
pkgs.vscode-langservers-extracted # JSON etc pkgs.vscode-langservers-extracted # JSON etc
pkgs.yaml-language-server # yaml pkgs.yaml-language-server # yaml
pkgs.cornelis # agda pkgs.cornelis # agda
pkgs.shfmt # bash
# bash
pkgs.shfmt
pkgs.nodePackages.bash-language-server pkgs.nodePackages.bash-language-server
# ghc # ghc
@ -59,14 +66,6 @@
programs.gpg.enable = true; programs.gpg.enable = true;
# programs.vscode = {
# enable = true;
# profiles.default.extensions = [
# pkgs.vscode-extensions.redhat.java
# pkgs.vscode-extensions.vscjava.vscode-java-pack
# ];
# };
nix = { nix = {
settings = { settings = {
extra-substituters = [ extra-substituters = [

View file

@ -18,21 +18,17 @@
}; };
home.packages = [ home.packages = [
# TODO: write a simple rpn calculator for scripting (and learn bash properly)
pkgs.ghc # my favorite calculator pkgs.ghc # my favorite calculator
pkgs.lsr # fast ls with io_uring pkgs.lsr # fast ls with io_uring
pkgs.nmap pkgs.nmap
pkgs.stow
pkgs.zip pkgs.zip
pkgs.unzip pkgs.unzip
pkgs.gnutar pkgs.gnutar
pkgs.p7zip pkgs.p7zip
pkgs.bc
pkgs.dig pkgs.dig
pkgs.hutils pkgs.hutils # TODO: simplify this project
pkgs.miniserve
pkgs.agenix
pkgs.nix-which
# To quote a legendary programer: # To quote a legendary programer:
# > for whenever people think mac is hardcoded in hardware. # > for whenever people think mac is hardcoded in hardware.
@ -41,50 +37,20 @@
# lol # lol
pkgs.macchanger pkgs.macchanger
# The file picker is not ergonomic enough, sadly
pkgs.helix
# pkgs.nushell
pkgs.ruler pkgs.ruler
pkgs.mini-calc
# pdf # pdf
pkgs.poppler-utils # pdfseparate, pdfunite pkgs.poppler-utils # pdfseparate, pdfunite
pkgs.easyscan 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 # productivity / media
pkgs.evolution pkgs.evolution # TODO: find an alternative
pkgs.libreoffice # pkgs.libreoffice
pkgs.calibre pkgs.calibre
pkgs.digikam pkgs.digikam
pkgs.nautilus pkgs.nautilus
pkgs.sushi # space bar previewer pkgs.sushi # space bar previewer
# pkgs.xournalpp
pkgs.picard # music tagger pkgs.picard # music tagger
pkgs.mousai
pkgs.nicotine-plus
pkgs.qbittorrent pkgs.qbittorrent
pkgs.mkvtoolnix pkgs.mkvtoolnix
pkgs.localsend # file share with iOS pkgs.localsend # file share with iOS
@ -116,12 +82,7 @@
defaultEditor = true; defaultEditor = true;
}; };
lazygit.enable = true; lazygit.enable = true;
fish = { fish.enable = true;
enable = true;
shellAbbrs = {
"fdoc" = "find ~/Documents -name";
};
};
starship.enable = true; starship.enable = true;
tmux.enable = true; tmux.enable = true;
direnv.enable = true; direnv.enable = true;

View file

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

View file

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

View file

@ -1,166 +0,0 @@
{
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 = '' extraHosts = ''
# #
# Generated from nixos configuartion # Generated from nixos configuration
# #
# This is the fascist one, just block it because I can't tell # This is the fascist one, just block it because I can't tell

View file

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

View file

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

View file

@ -1,68 +0,0 @@
{
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,16 +9,6 @@
enable = true; enable = true;
extraRules = [ 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" ]; users = [ ":wheel" ];
setEnv = [ "PATH" ]; setEnv = [ "PATH" ];
} }

View file

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

View file

@ -368,19 +368,6 @@
"revision": "491197a6a5ef9c65a85c3eb1531786f32ffff5b3", "revision": "491197a6a5ef9c65a85c3eb1531786f32ffff5b3",
"url": "https://github.com/Toqozz/wired-notify/archive/491197a6a5ef9c65a85c3eb1531786f32ffff5b3.tar.gz", "url": "https://github.com/Toqozz/wired-notify/archive/491197a6a5ef9c65a85c3eb1531786f32ffff5b3.tar.gz",
"hash": "sha256-wxkeSF0/3FI0HSBKhZ2mlAAmFviNrZzdhjHqTfWP6h0=" "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 "version": 7

View file

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