Compare commits

..

No commits in common. "mainline" and "darwin-patch-nodejs_20" have entirely different histories.

18 changed files with 384 additions and 428 deletions

View file

@ -1 +0,0 @@
ce54be9aac846c7798307d6d6fcee3346c01f601

View file

@ -28,6 +28,7 @@ in
# configure console # configure console
console = { console = {
font = "Lat2-Terminus16";
keyMap = "de"; keyMap = "de";
}; };
@ -180,7 +181,7 @@ in
# Flatpak support # Flatpak support
services.flatpak.enable = true; services.flatpak.enable = true;
xdg.portal.extraPortals = [ pkgs.kdePackages.xdg-desktop-portal-kde ]; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-kde ];
# Define a user account. Don't forget to set a password with `passwd`. # Define a user account. Don't forget to set a password with `passwd`.
users.users.spiollinux = { users.users.spiollinux = {
@ -268,5 +269,4 @@ in
networking.networkmanager.unmanaged = [ "interface-name:ve-*" ]; networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
services.dbus.implementation = "broker"; services.dbus.implementation = "broker";
system.rebuild.enableNg = true;
} }

View file

@ -40,7 +40,7 @@
exfat exfat
iotop iotop
cifs-utils cifs-utils
dool dstat
lsof lsof
macchanger macchanger
borgbackup borgbackup

View file

@ -1,7 +1,7 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
# Enable sound. # Enable sound.
services.pulseaudio = { hardware.pulseaudio = {
enable = true; enable = true;
package = pkgs.pulseaudioFull; package = pkgs.pulseaudioFull;
# decouple pulseaudio application and sink volumes # decouple pulseaudio application and sink volumes

View file

@ -4,6 +4,7 @@
imports = [ ../common/nix-settings.nix ]; imports = [ ../common/nix-settings.nix ];
nix = { nix = {
enable = true; enable = true;
package = pkgs.nixVersions.nix_2_25;
settings = { settings = {
trusted-users = [ trusted-users = [
"os" "os"
@ -20,6 +21,9 @@
}; };
}; };
# Auto upgrade nix package and the daemon service.
services.nix-daemon.enable = true;
# List packages installed in system profile. To search by name, run: # List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget # $ nix-env -qaP | grep wget
environment.systemPackages = [ pkgs.vim ]; environment.systemPackages = [ pkgs.vim ];
@ -34,7 +38,6 @@
# system-wide SSH configuration, used by nix-daemon for remote builders # system-wide SSH configuration, used by nix-daemon for remote builders
# show hidden files # show hidden files
system.primaryUser = "os";
system.defaults.NSGlobalDomain.AppleShowAllFiles = true; system.defaults.NSGlobalDomain.AppleShowAllFiles = true;
# Used for backwards compatibility, please read the changelog before changing. # Used for backwards compatibility, please read the changelog before changing.

80
flake.lock generated
View file

@ -102,16 +102,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753592768, "lastModified": 1747020534,
"narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", "narHash": "sha256-D/6rkiC6w2p+4SwRiVKrWIeYzun8FBg7NlMKMwQMxO0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "fc3add429f21450359369af74c2375cb34a2d204", "rev": "b4bbdc6fde16fc2051fcde232f6e288cd22007ca",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-25.05", "ref": "release-24.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -163,27 +163,27 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749744770, "lastModified": 1743127615,
"narHash": "sha256-MEM9XXHgBF/Cyv1RES1t6gqAX7/tvayBC1r/KPyK1ls=", "narHash": "sha256-+sMGqywrSr50BGMLMeY789mSrzjkoxZiu61eWjYS/8o=",
"owner": "LnL7", "owner": "LnL7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "536f951efb1ccda9b968e3c9dee39fbeb6d3fdeb", "rev": "fc843893cecc1838a59713ee3e50e9e7edc6207c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "LnL7", "owner": "LnL7",
"ref": "nix-darwin-25.05", "ref": "nix-darwin-24.11",
"repo": "nix-darwin", "repo": "nix-darwin",
"type": "github" "type": "github"
} }
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1754564048, "lastModified": 1747129300,
"narHash": "sha256-dz303vGuzWjzOPOaYkS9xSW+B93PSAJxvBd6CambXVA=", "narHash": "sha256-L3clA5YGeYCF47ghsI7Tcex+DnaaN/BbQ4dR2wzoiKg=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "26ed7a0d4b8741fe1ef1ee6fa64453ca056ce113", "rev": "e81fd167b33121269149c57806599045fd33eeed",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -195,11 +195,11 @@
}, },
"nixos-unstable": { "nixos-unstable": {
"locked": { "locked": {
"lastModified": 1754725699, "lastModified": 1746904237,
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -243,27 +243,27 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1754937576, "lastModified": 1746957726,
"narHash": "sha256-3sWA5WJybUE16kIMZ3+uxcxKZY/JRR4DFBqLdSLBo7w=", "narHash": "sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5+SHJkS5ID/Jo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ddae11e58c0c345bf66efbddbf2192ed0e58f896", "rev": "a39ed32a651fdee6842ec930761e31d1f242cb94",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-25.05", "ref": "nixos-24.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1754725699, "lastModified": 1746904237,
"narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -276,14 +276,15 @@
"nur": { "nur": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts_2",
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3",
"treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1755080806, "lastModified": 1747261242,
"narHash": "sha256-P94SMIPWhpSX5tvX4ccFDEC1pm0SsddKNouM49Dz5Oo=", "narHash": "sha256-6p8kO62jbk+LUrDrLT23XbClNRyosnlfh/KCbE5fwnQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "3a675e8f6015cb8ea14138b0c69722b2a0e09dee", "rev": "e29c558fa4174da179e2e7f9a41c34466a200fda",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -329,7 +330,7 @@
"nixos-unstable": "nixos-unstable", "nixos-unstable": "nixos-unstable",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"nur": "nur", "nur": "nur",
"treefmt-nix": "treefmt-nix", "treefmt-nix": "treefmt-nix_2",
"utils": "utils" "utils": "utils"
} }
}, },
@ -372,15 +373,36 @@
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nur",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1748243702, "lastModified": 1733222881,
"narHash": "sha256-9YzfeN8CB6SzNPyPm2XjRRqSixDopTapaRsnTpXUEY8=", "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "1f3f7b784643d488ba4bf315638b2b0a4c5fb007", "rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1746216483,
"narHash": "sha256-4h3s1L/kKqt3gMDcVfN8/4v2jqHrgLIe4qok4ApH5x4=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "29ec5026372e0dec56f890e50dbe4f45930320fd",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -2,11 +2,11 @@
description = "NixOS system flake"; description = "NixOS system flake";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
nixos-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixos-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-25.05"; url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
lanzaboote = { lanzaboote = {
@ -19,7 +19,7 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-darwin = { nix-darwin = {
url = "github:LnL7/nix-darwin/nix-darwin-25.05"; url = "github:LnL7/nix-darwin/nix-darwin-24.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@ -53,7 +53,7 @@
(import nixpkgs { inherit system; }).applyPatches { (import nixpkgs { inherit system; }).applyPatches {
name = "nixpkgs-patched"; name = "nixpkgs-patched";
src = nixpkgs; src = nixpkgs;
patches = [ ]; patches = [ ./patches/nixos-nixpkgs-362c2bc76d359b908ad1389ee28c23ee0e862324.patch ];
}; };
# necessary to make the top-level inputs available to system configuration # necessary to make the top-level inputs available to system configuration
@ -166,7 +166,6 @@
# inspired by https://github.com/Mic92/dotfiles/blob/main/home-manager/flake-module.nix # inspired by https://github.com/Mic92/dotfiles/blob/main/home-manager/flake-module.nix
# run like: `nix run .#hm -- <action>` # run like: `nix run .#hm -- <action>`
apps.hm = { apps.hm = {
meta.description = "Wrapper around home-manager with automatic profile selection";
type = "app"; type = "app";
program = "${pkgs.writeShellScriptBin "hm" '' program = "${pkgs.writeShellScriptBin "hm" ''
set -x set -x

View file

@ -11,7 +11,6 @@
./modules/packages.nix ./modules/packages.nix
./modules/vscodium.nix ./modules/vscodium.nix
./modules/fonts.nix ./modules/fonts.nix
./modules/captive-browser.nix
]; ];
home.homeDirectory = home.homeDirectory =
if pkgs.stdenv.isDarwin then "/Users/${config.home.username}" else "/home/${config.home.username}"; if pkgs.stdenv.isDarwin then "/Users/${config.home.username}" else "/home/${config.home.username}";
@ -52,7 +51,9 @@
merge.tool = "vimdiff"; merge.tool = "vimdiff";
# provide `git mergetool -t nixfmt` # provide `git mergetool -t nixfmt`
mergetool.nixfmt = { mergetool.nixfmt = {
cmd = "${lib.getExe pkgs.nixfmt-rfc-style} --mergetool \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""; cmd = "${
lib.getExe inputs.nixos-unstable.legacyPackages.${system}.nixfmt-rfc-style
} --mergetool \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"";
trustExitCode = true; trustExitCode = true;
}; };
core.excludesfile = toString ( core.excludesfile = toString (
@ -104,7 +105,7 @@
enable = true; enable = true;
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
history.ignoreSpace = true; history.ignoreSpace = true;
initContent = '' initExtra = ''
# Uncomment following line if you want red dots to be displayed while waiting for completion # Uncomment following line if you want red dots to be displayed while waiting for completion
COMPLETION_WAITING_DOTS="true" COMPLETION_WAITING_DOTS="true"
### Fix slowness of pastes with zsh-syntax-highlighting.zsh ### Fix slowness of pastes with zsh-syntax-highlighting.zsh

View file

@ -33,45 +33,46 @@
contacts = import "${inputs.mysecrets}/contacts.nix" { inherit lib; }; contacts = import "${inputs.mysecrets}/contacts.nix" { inherit lib; };
in in
{ {
includes = [ includes =
{ [
condition = "gitdir:~/Seafile/Studium/"; {
contents = { condition = "gitdir:~/Seafile/Studium/";
user.name = contacts.personal.name;
user.email = contacts.uni.email;
};
}
{
condition = "gitdir:~/src/nixpkgs/";
contents = {
user.name = "Trolli Schmittlauch";
user.email = contacts.nixOs.email;
};
}
]
# set default name for several other common locations
++
map
(dir: {
condition = "gitdir:${dir}";
contents = { contents = {
user = { user.name = contacts.personal.name;
inherit (contacts.schmittlauch) email name; user.email = contacts.uni.email;
};
}; };
}) }
[ {
"~/src/" condition = "gitdir:~/src/nixpkgs/";
"~/bin/" contents = {
"~/tmp/" user.name = "Trolli Schmittlauch";
"~/nixconfigs/" user.email = contacts.nixOs.email;
]; };
}
]
# set default name for several other common locations
++
map
(dir: {
condition = "gitdir:${dir}";
contents = {
user = {
inherit (contacts.schmittlauch) email name;
};
};
})
[
"~/src/"
"~/bin/"
"~/tmp/"
"~/nixconfigs/"
];
}; };
services.gpg-agent = { services.gpg-agent = {
enable = true; enable = true;
#enableSshSupport = true; #enableSshSupport = true;
pinentry.package = pkgs.pinentry-qt; pinentryPackage = pkgs.pinentry-qt;
}; };
programs.ssh = { programs.ssh = {

View file

@ -1,81 +0,0 @@
{
pkgs,
lib,
inputs,
config,
system,
...
}:
let
tomlFormat = pkgs.formats.toml { };
cfg = config.programs.captive-browser;
inherit (pkgs.stdenv.hostPlatform) isDarwin;
in
{
options.programs.captive-browser = {
enable = lib.mkEnableOption "Enable custom captive-browser in user PATH";
package = lib.mkPackageOption pkgs "captive-browser" { nullable = true; };
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = tomlFormat.type;
options = {
browser = lib.mkOption {
type = lib.types.str;
description = "command to invoke the browser with";
# browser is the shell (/bin/sh) command executed once the proxy starts.
# When browser exits, the proxy exits. An extra env var PROXY is available.
#
# Here, we use a separate Chrome instance in Incognito mode, so that
# it can run (and be waited for) alongside the default one, and that
# it maintains no state across runs. To configure this browser open a
# normal window in it, settings will be preserved.
default = ''
${cfg.browserCommand} \
--user-data-dir="$HOME/Library/Application Support/Google/Captive" \
--proxy-server="socks5://$PROXY" \
--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE localhost" \
--no-first-run --new-window --incognito \
http://example.com
'';
};
};
};
};
interface = lib.mkOption {
type = lib.types.str;
description = "WLAN interface to use";
};
browserCommand = lib.mkOption {
type = lib.types.str;
default = if isDarwin then "open -n -W -a \"Google Chrome\" --args" else (lib.getExe pkgs.chromium);
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
programs.captive-browser.settings = builtins.mapAttrs (_: lib.mkOptionDefault) {
# dhcp-dns is the shell (/bin/sh) command executed to obtain the DHCP
# DNS server address. The first match of an IPv4 regex is used.
# IPv4 only, because let's be real, it's a captive portal.
dhcp-dns =
if isDarwin then
"ipconfig getoption ${cfg.interface} domain_name_server"
else
"${lib.getExe pkgs.dhcpcd} -U ${cfg.interface} | grep domain_name_servers";
# socks5-addr is the listen address for the SOCKS5 proxy server.
socks5-addr = "localhost:1666";
};
home.file.".config/captive-browser.toml" = lib.mkIf (isDarwin && !config.xdg.enable) {
source = tomlFormat.generate "captive-browser-config" cfg.settings;
};
xdg.configFile."captive-browser.toml" = lib.mkIf (!(isDarwin && !config.xdg.enable)) {
source = tomlFormat.generate "captive-browser-config" cfg.settings;
};
};
}

View file

@ -43,6 +43,5 @@ in
koma-script koma-script
; ;
}) })
] ] ++ lib.optionals config.schmittlauch.latex.guiTools latexGuiTools;
++ lib.optionals config.schmittlauch.latex.guiTools latexGuiTools;
} }

View file

@ -12,85 +12,83 @@ let
unstable = inputs.nixos-unstable.legacyPackages.${system}; unstable = inputs.nixos-unstable.legacyPackages.${system};
nur = inputs.nur.legacyPackages.${system}; nur = inputs.nur.legacyPackages.${system};
graphicsApps = [ graphicsApps =
inkscape [
darktable inkscape
exiftool darktable
] exiftool
++ (with gimp3Plugins; [ gimp
#fourier # broken ]
#lqrPlugin # broken ++ (with gimpPlugins; [
]) fourier
++ lib.optionals pkgs.stdenv.isLinux [ lqrPlugin
gimp3 ])
hugin ++ lib.optionals pkgs.stdenv.isLinux [
#luminanceHDR # FIXME, build failure hugin
xournalpp luminanceHDR
] xournal
++ lib.optionals pkgs.stdenv.isDarwin [ ];
gimp
];
multimediaApps = [ multimediaApps =
mpv [
yt-dlp mpv
] yt-dlp
++ lib.optionals pkgs.stdenv.isDarwin [ vlc-bin ] ]
++ lib.optionals pkgs.stdenv.isLinux [ ++ lib.optionals pkgs.stdenv.isLinux [
vlc vlc
amarok amarok
clementine clementine
kdePackages.elisa elisa
musescore musescore
tenacity tenacity
soundkonverter soundkonverter
#nur.repos.fooker.studio-link #nur.repos.fooker.studio-link
]; ];
cliApps = [ cliApps =
coreutils [
myVim coreutils
htop myVim
tmux htop
httpie tmux
rsync httpie
ponysay ponysay
gti gti
tree tree
lsof lsof
mosh mosh
openssh openssh
sshfs-fuse sshfs-fuse
sshuttle sshuttle
cryfs cryfs
thefuck thefuck
gnupg gnupg
unar unar
lzop lzop
p7zip p7zip
pwgen pwgen
pandoc pandoc
pdfgrep pdfgrep
# zig dependency breaks occasionally, stay on C version for now # zig dependency breaks occasionally, stay on C version for now
ncdu_1 ncdu_1
dos2unix dos2unix
unzip unzip
fswatch fswatch
jq jq
age age
lnav lnav
spacer spacer
nix-output-monitor # putting this here as a plain `nix` alternative nix-output-monitor # putting this here as a plain `nix` alternative
] ]
++ lib.optionals pkgs.stdenv.isLinux [ ++ lib.optionals pkgs.stdenv.isLinux [
xclip xclip
smbnetfs # for FUSE smb mounting smbnetfs # for FUSE smb mounting
psmisc # for killall psmisc # for killall
torsocks torsocks
agrep agrep
reptyr # re-bind running program to other tty reptyr # re-bind running program to other tty
]; ];
nixHelpers = [ nixHelpers = [
nixpkgs-review nixpkgs-review
@ -98,32 +96,33 @@ let
nix-top nix-top
statix statix
]; ];
devTools = [ devTools =
curl [
httpie curl
gcc httpie
shellcheck gcc
mtr shellcheck
ripgrep mtr
fd ripgrep
gitui fd
pre-commit gitui
scriv pre-commit
scriv
# Haskell # Haskell
ghc ghc
cabal2nix cabal2nix
] ]
++ lib.optionals pkgs.stdenv.isLinux [ ++ lib.optionals pkgs.stdenv.isLinux [
gdb gdb
strace strace
ltrace ltrace
valgrind valgrind
zeal zeal
]; ];
pythonTools = with python3Packages; [ pythonTools = with python3Packages; [
python # to shadow old macOS python python3 # to shadow old macOS python
ipython ipython
uv uv
pip pip
@ -143,12 +142,13 @@ let
desktopCommon = [ desktopCommon = [
keepassxc keepassxc
tigervnc
]; ];
desktopLinux = [ desktopLinux = [
firefox firefox
chromium chromium
kdePackages.falkon falkon
thunderbird thunderbird
calibre calibre
dino dino
@ -164,15 +164,15 @@ let
seafile-client seafile-client
alacritty alacritty
libreoffice-qt6 # still with KDE integration libreoffice-qt6 # still with KDE integration
backintime-common
anki anki
signal-desktop signal-desktop
(tor-browser-bundle-bin.override { (tor-browser-bundle-bin.override {
mediaSupport = true; mediaSupport = true;
pulseaudioSupport = pkgs.stdenv.isLinux; pulseaudioSupport = pkgs.stdenv.isLinux;
}) })
tigervnc
rustdesk-flutter
pdfpc pdfpc
quaternion
nheko nheko
gpxsee gpxsee
subsurface subsurface
@ -183,7 +183,7 @@ let
#(pkgs.pidgin-with-plugins.override { #(pkgs.pidgin-with-plugins.override {
# plugins = [ pkgs.pidginotr ];}) # plugins = [ pkgs.pidginotr ];})
logseq unstable.logseq
# for Hibiscus banking software # for Hibiscus banking software
jameica jameica
@ -192,32 +192,33 @@ let
chromedriver chromedriver
]; ];
kdeTools = [ kdeTools =
okteta [
plasma5Packages.kdeconnect-kde okteta
] plasma5Packages.kdeconnect-kde
++ (with kdePackages; [ ]
okular ++ (with kdePackages; [
gwenview okular
yakuake gwenview
dolphin yakuake
spectacle dolphin
kate spectacle
kleopatra kate
qdirstat kleopatra
ark qdirstat
kwalletmanager ark
#ktouch # TODO: unbreak kwalletmanager
kcharselect #ktouch # TODO: unbreak
konversation kcharselect
krdc konversation
skanlite krdc
akonadiconsole skanlite
tokodon # mastodon client akonadiconsole
networkmanager-qt tokodon # mastodon client
kcrash networkmanager-qt
breeze-gtk kcrash
]); breeze-gtk
]);
in in
{ {
options.schmittlauch.packages = { options.schmittlauch.packages = {

View file

@ -11,110 +11,112 @@
enable = true; enable = true;
package = pkgs.vscodium; package = pkgs.vscodium;
mutableExtensionsDir = true; mutableExtensionsDir = true;
profiles.default = { extensions =
extensions = with pkgs.vscode-extensions;
with pkgs.vscode-extensions; [
[ ms-python.python
ms-python.python vscodevim.vim
charliermarsh.ruff yzhang.markdown-all-in-one
vscodevim.vim bungcip.better-toml
yzhang.markdown-all-in-one eamodio.gitlens
bungcip.better-toml jnoortheen.nix-ide
eamodio.gitlens mkhl.direnv
jnoortheen.nix-ide editorconfig.editorconfig
mkhl.direnv ]
editorconfig.editorconfig ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
]
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "Sync-Rsync";
publisher = "vscode-ext";
version = "0.36.0";
sha256 = "sha256-0b/OHLZfXo0NAVAVkzZSqMGDzF0uvPRoiqsZtW1iOdA";
}
# TODO: probably available in nixpkgs soonish?
{
name = "mypy-type-checker";
publisher = "ms-python";
version = "2023.3.12681020";
sha256 = "sha256-rhed7CQlvxksVCGc9nPU2oYQWtXcAV5TzuG63e8Y3zM=";
}
{
name = "vscode-pets";
publisher = "tonybaloney";
version = "1.25.1";
sha256 = "sha256-as3e2LzKBSsiGs/UGIZ06XqbLh37irDUaCzslqITEJQ=";
}
];
userSettings =
let
defaultPython = pkgs.python3.withPackages (ps: [
ps.jedi
ps.jedi-language-server
ps.pip
ps.setuptools # for pkg_resources
ps.black
ps.mypy
]);
in
{ {
"editor.fontLigatures" = true; name = "Sync-Rsync";
"editor.accessibilitySupport" = false; # prevent asking publisher = "vscode-ext";
"editor.cursorBlinking" = "phase"; version = "0.36.0";
"editor.stickyScroll.enabled" = true; sha256 = "sha256-0b/OHLZfXo0NAVAVkzZSqMGDzF0uvPRoiqsZtW1iOdA";
"workbench.editor.highlightModifiedTabs" = true; }
"window.autoDetectColorScheme" = true; # TODO: probably available in nixpkgs soonish?
"workbench.preferredDarkColorTheme" = "Default Dark Modern"; {
"workbench.preferredLightColorTheme" = "Default Light Modern"; name = "mypy-type-checker";
"[nix]" = { publisher = "ms-python";
"editor.insertSpaces" = true; version = "2023.3.12681020";
"editor.tabSize" = 2; sha256 = "sha256-rhed7CQlvxksVCGc9nPU2oYQWtXcAV5TzuG63e8Y3zM=";
# for now, disable automatic formatting to prevent disruption of existing code bases }
"editor.formatOnPaste" = false; {
"editor.formatOnSave" = false; name = "black-formatter";
"editor.formatOnType" = false; publisher = "ms-python";
}; version = "2023.5.12771008";
"nix.formatterPath" = lib.getExe pkgs.nixfmt-rfc-style; sha256 = "sha256-lJG0RRUUMhQGs2a6oBtoqt+uY1kSJ0+cbmaP07hNh2o=";
"nix.enableLanguageServer" = true; }
"nix.serverPath" = lib.getExe pkgs.nixd; {
"nix.serverSettings" = { }; name = "vscode-pets";
"editor.fontSize" = 13; publisher = "tonybaloney";
"editor.fontWeight" = "normal"; version = "1.25.1";
"git.detectSubmodulesLimit" = 30; sha256 = "sha256-as3e2LzKBSsiGs/UGIZ06XqbLh37irDUaCzslqITEJQ=";
"[python]" = { }
"breadcrumbs.showClasses" = true; ];
"breadcrumbs.showFunctions" = true; userSettings =
"gitlens.codeLens.symbolScopes" = [ "!Module" ]; let
"editor.defaultFormatter" = "charliermarsh.ruff"; defaultPython = pkgs.python3.withPackages (ps: [
"editor.formatOnSave" = true; ps.jedi
}; ps.jedi-language-server
"python.experiments.enabled" = false; ps.pip
"python.languageServer" = "Jedi"; # don't use proprietary pylance server ps.setuptools # for pkg_resources
"python.defaultInterpreterPath" = "${defaultPython}/bin/python"; ps.black
"mypy-type-checker.path" = [ "${pkgs.python3Packages.mypy}/bin/mypy" ]; ps.mypy
"mypy-type-checker.importStrategy" = "fromEnvironment"; ]);
"mypy-type-checker.args" = [ "--ignore-missing-imports" ]; in
"ruff.path" = [ (lib.getExe pkgs.ruff) ]; {
"ruff.importStrategy" = "fromEnvironment"; "editor.fontLigatures" = true;
"gitlens.telemetry.enabled" = false; "editor.accessibilitySupport" = false; # prevent asking
"vim.highlightedyank.enable" = true; "editor.cursorBlinking" = "phase";
"vim.history" = 500; "editor.stickyScroll.enabled" = true;
"vim.neovimUseConfigFile" = true; "workbench.editor.highlightModifiedTabs" = true;
"vim.enableNeovim" = true; "window.autoDetectColorScheme" = true;
"git.suggestSmartCommit" = false; "workbench.preferredDarkColorTheme" = "Default Dark Modern";
"editor.rulers" = [ 79 ]; "workbench.preferredLightColorTheme" = "Default Light Modern";
"vim.useSystemClipboard" = true; "[nix]" = {
"vim.smartRelativeLine" = true; "editor.insertSpaces" = true;
"diffEditor.ignoreTrimWhitespace" = false; "editor.tabSize" = 2;
"files.associations" = { # for now, disable automatic formatting to prevent disruption of existing code bases
"*.py" = "python"; "editor.formatOnPaste" = false;
}; "editor.formatOnSave" = false;
"editor.renderWhitespace" = "all"; "editor.formatOnType" = false;
"editor.fontFamily" = "Iosevka Curly Slab, Menlo, Monaco, 'Courier New', monospace";
"vim.neovimPath" = lib.getExe pkgs.myVim;
"sync-rsync.options" = [ ];
"direnv.path.executable" = lib.getExe pkgs.direnv;
}; };
}; "nix.formatterPath" = lib.getExe pkgs.nixfmt-rfc-style;
"nix.enableLanguageServer" = true;
"nix.serverPath" = lib.getExe pkgs.nixd;
"nix.serverSettings" = { };
"editor.fontSize" = 13;
"editor.fontWeight" = "normal";
"git.detectSubmodulesLimit" = 30;
"[python]" = {
"breadcrumbs.showClasses" = true;
"breadcrumbs.showFunctions" = true;
"gitlens.codeLens.symbolScopes" = [ "!Module" ];
"editor.defaultFormatter" = "ms-python.black-formatter";
"editor.formatOnSave" = true;
};
"python.languageServer" = "Jedi"; # don't use proprietary pylance server
"python.defaultInterpreterPath" = "${defaultPython}/bin/python";
"black-formatter.path" = [ "${pkgs.python3Packages.black}/bin/black" ];
"black-formatter.importStrategy" = "fromEnvironment";
"mypy-type-checker.path" = [ "${pkgs.python3Packages.mypy}/bin/mypy" ];
"mypy-type-checker.importStrategy" = "fromEnvironment";
"mypy-type-checker.args" = [ "--ignore-missing-imports" ];
"gitlens.telemetry.enabled" = false;
"vim.highlightedyank.enable" = true;
"vim.history" = 500;
"vim.neovimUseConfigFile" = true;
"vim.enableNeovim" = true;
"git.suggestSmartCommit" = false;
"editor.rulers" = [ 79 ];
"vim.useSystemClipboard" = true;
"vim.smartRelativeLine" = true;
"diffEditor.ignoreTrimWhitespace" = false;
"files.associations" = {
"*.py" = "python";
};
"editor.renderWhitespace" = "all";
"editor.fontFamily" = "Iosevka Curly Slab, Menlo, Monaco, 'Courier New', monospace";
"vim.neovimPath" = lib.getExe pkgs.myVim;
"sync-rsync.options" = [ ];
"direnv.path.executable" = lib.getExe pkgs.direnv;
};
}; };
} }

View file

@ -35,11 +35,9 @@ in
# defaults in bottom match block "*" # defaults in bottom match block "*"
# TODO: common config for desktop as well # TODO: common config for desktop as well
# multiplexer, e.g. to avoid rate limiting on jumphost usage # multiplexer, e.g. to avoid rate limiting on jumphost usage
serverAliveInterval = 10; serverAliveInterval = 60;
serverAliveCountMax = 2; # 2 strikes and you're out
controlMaster = "auto"; controlMaster = "auto";
# not too long, due to the frequent keepalives controlPersist = "4h";
controlPersist = "1h";
# ssh host config # ssh host config
matchBlocks = { matchBlocks = {
@ -47,6 +45,7 @@ in
"*" = { "*" = {
extraOptions = { extraOptions = {
IdentityAgent = "\"~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock\""; IdentityAgent = "\"~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock\"";
#ControlPath = "/tmp/ssh_mux_%h_%p_%r";
}; };
}; };
@ -67,38 +66,34 @@ in
contacts = import "${inputs.mysecrets}/contacts.nix" { inherit lib; }; contacts = import "${inputs.mysecrets}/contacts.nix" { inherit lib; };
in in
{ {
includes = [ includes =
{ [
condition = "gitdir:~/src/schmittlauch/"; {
condition = "gitdir:~/src/schmittlauch/";
contents = {
user = {
inherit (contacts.schmittlauch) name email;
};
};
}
]
# set default name for several other common locations
++ map (dir: {
condition = "gitdir:${dir}";
contents = { contents = {
user = { user = {
inherit (contacts.schmittlauch) name email; inherit (contacts.work) name email;
}; };
}; };
} }) [ "~/" ];
]
# set default name for several other common locations
++ map (dir: {
condition = "gitdir:${dir}";
contents = {
user = {
inherit (contacts.work) name email;
};
};
}) [ "~/" ];
}; };
# some extra shell scripts # some extra shell scripts
programs.zsh.initContent = lib.mkAfter ( programs.zsh.initExtra = lib.mkAfter (
import ./scripts/reporsync.nix { inherit pkgs lib; } import ./scripts/reporsync.nix { inherit pkgs lib; }
+ import ./scripts/ssh-loop-fc.nix { inherit pkgs lib; } + import ./scripts/ssh-loop-fc.nix { inherit pkgs lib; }
); );
# separate proxied browser using the DHCP-supplied DNS for accessing captive portals
programs.captive-browser = {
enable = true;
interface = "en0";
};
launchd.agents.hydra_proxy = { launchd.agents.hydra_proxy = {
enable = true; enable = true;
config = { config = {
@ -108,7 +103,7 @@ in
"0" "0"
"-D" "-D"
"1080" "1080"
"-oServerAliveInterval=30" "-oServerAliveInterval=60"
"-oControlMaster=no" "-oControlMaster=no"
"-N" "-N"
"vpn-whq.services.fcio.net" "vpn-whq.services.fcio.net"

View file

@ -39,17 +39,6 @@ in
fsType = "vfat"; fsType = "vfat";
options = [ "discard" ]; options = [ "discard" ];
}; };
# nix/ lix build directory
# lix:
# > If you plan to use a tmpfs, we **strongly recommend** to set `mode=0755` as a mount option for that `tmpfs`, otherwise you are effectively reverting this mitigation.
"/nix/var/nix/builds" = {
device = "tmpfs";
fsType = "tmpfs";
options = [
"mode=0755"
"size=75%"
];
};
}; };
services.fstrim.enable = true; services.fstrim.enable = true;

View file

@ -21,6 +21,7 @@
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
nix.settings.max-jobs = lib.mkDefault 4; nix.settings.max-jobs = lib.mkDefault 4;
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
# modesetting is always better than intel (legacy) # modesetting is always better than intel (legacy)
services.xserver.videoDrivers = [ "modesetting" ]; services.xserver.videoDrivers = [ "modesetting" ];

View file

@ -1 +0,0 @@
ssh-ng://schmittlauch@build01.nix-community.org x86_64-linux /root/.ssh/remote_builder_key 64 1 big-parallel,kvm,nixos-test -

View file

@ -0,0 +1,26 @@
From 362c2bc76d359b908ad1389ee28c23ee0e862324 Mon Sep 17 00:00:00 2001
From: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
Date: Mon, 7 Apr 2025 21:03:09 -0400
Subject: [PATCH] nodejs_20: fix test failure on darwin on latest MacOS 15.4
Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
(cherry picked from commit 9674c1f688d12b99fbde26e6068ab62609fef3b1)
---
pkgs/development/web/nodejs/v20.nix | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/pkgs/development/web/nodejs/v20.nix b/pkgs/development/web/nodejs/v20.nix
index b9c9345c441afa..20cceb5b5d1cda 100644
--- a/pkgs/development/web/nodejs/v20.nix
+++ b/pkgs/development/web/nodejs/v20.nix
@@ -50,5 +50,10 @@ buildNodejs {
stripLen = 1;
hash = "sha256-6y3aEqxNC4iTQEv1oewodJrhOHxjp5xZMq1P1QL94Rg=";
})
+ # fix test failure on macos 15.4
+ (fetchpatch2 {
+ url = "https://github.com/nodejs/node/commit/33f6e1ea296cd20366ab94e666b03899a081af94.patch?full_index=1";
+ hash = "sha256-aVBMcQlhQeviUQpMIfC988jjDB2BgYzlMYsq+w16mzU=";
+ })
] ++ gypPatches;
}