Compare commits

..

11 Commits

21 changed files with 91 additions and 142 deletions

View File

@@ -1,2 +1,3 @@
# nix fmt
# nix fmt & statix
f011c8d71ba09bd94ab04b8d771858b90a03fbf9
3aff25b4486a143cd6282f8845c16216598e1c7e

View File

@@ -4,3 +4,11 @@ repos:
hooks:
- id: nixfmt-nix
args: [--, --check]
- repo: local
hooks:
- id: statix
name: statix
entry: statix check
language: system
files: \.nix$
pass_filenames: false

48
flake.lock generated
View File

@@ -255,11 +255,11 @@
]
},
"locked": {
"lastModified": 1770260404,
"narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
"lastModified": 1771744638,
"narHash": "sha256-EDLi+YAsEEAmMeZe1v6GccuGRbCkpSZp/+A6g+pivR8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
"rev": "cb6c151f5c9db4df0b69d06894dc8484de1f16a0",
"type": "github"
},
"original": {
@@ -300,11 +300,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1771545891,
"narHash": "sha256-aaVUfc/9q2pCsELZmYhf+uvYRMCUlBvccgL1VS27R+o=",
"lastModified": 1771891493,
"narHash": "sha256-L0OCnG8rsWJYZ3mzHSz0iENtlBXQjjcGgvMgsBqN14U=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "917b72d5e27bc217440655b81f701d7062bdd198",
"rev": "7db85d094c68697fc36801bccdf015b4c2bdb274",
"type": "github"
},
"original": {
@@ -316,11 +316,11 @@
"neovim-src": {
"flake": false,
"locked": {
"lastModified": 1771541613,
"narHash": "sha256-1Rpt5B4pNW/MNkWoEamqwCa5I4/9G84dSqp4eHS5zsA=",
"lastModified": 1771885993,
"narHash": "sha256-2c4H+5f0qhsp13Vx8pbsGiSRTHBJIfQaRAAUSHGEpgo=",
"owner": "neovim",
"repo": "neovim",
"rev": "e3d46a63375c84b7bd409f1f07ef56eb985eae50",
"rev": "d9d8c660fd5559d928c8870a21970a375674e310",
"type": "github"
},
"original": {
@@ -331,11 +331,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1771207753,
"narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=",
"lastModified": 1771423170,
"narHash": "sha256-K7Dg9TQ0mOcAtWTO/FX/FaprtWQ8BmEXTpLIaNRhEwU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d1c15b7d5806069da59e819999d70e1cec0760bf",
"rev": "bcc4a9d9533c033d806a46b37dc444f9b0da49dd",
"type": "github"
},
"original": {
@@ -347,11 +347,11 @@
},
"nixpkgs-master": {
"locked": {
"lastModified": 1771612900,
"narHash": "sha256-ToJ0wYbphG1ZN7bgGpCJxu69Tt3ij0+T6W4YljLCHak=",
"lastModified": 1771932323,
"narHash": "sha256-3PadsTzuMJT/x0KmiD/Me1GG6rW8kaHoWVduSs0ue7o=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f65d4c996f96838b8f50253859cf7b17e956a792",
"rev": "89bb5c5da7a857869cc88ef9b856bffdff8af264",
"type": "github"
},
"original": {
@@ -363,11 +363,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1771207753,
"narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=",
"lastModified": 1771482645,
"narHash": "sha256-MpAKyXfJRDTgRU33Hja+G+3h9ywLAJJNRq4Pjbb4dQs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d1c15b7d5806069da59e819999d70e1cec0760bf",
"rev": "724cf38d99ba81fbb4a347081db93e2e3a9bc2ae",
"type": "github"
},
"original": {
@@ -379,11 +379,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1771419570,
"narHash": "sha256-bxAlQgre3pcQcaRUm/8A0v/X8d2nhfraWSFqVmMcBcU=",
"lastModified": 1771714954,
"narHash": "sha256-nhZJPnBavtu40/L2aqpljrfUNb2rxmWTmSjK2c9UKds=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6d41bc27aaf7b6a3ba6b169db3bd5d6159cfaa47",
"rev": "afbbf774e2087c3d734266c22f96fca2e78d3620",
"type": "github"
},
"original": {
@@ -496,11 +496,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1771429540,
"narHash": "sha256-YKytDx8LOPOvE+dip1ja+1nbIpDVdqTaFbP4MaXwveM=",
"lastModified": 1771788390,
"narHash": "sha256-RzBpBwn93GWxLjacTte+ngwwg0L/BVOg4G/sSIeK3Rw=",
"owner": "danth",
"repo": "stylix",
"rev": "1a5c9d8be82127aeccc929f60b952e8a3df6b63c",
"rev": "ebb238f14d6f930068be4718472da3105fd5d3bf",
"type": "github"
},
"original": {

View File

@@ -50,9 +50,21 @@
}:
let
my-lib = import ./lib { lib = nixpkgs.lib; };
my-lib = import ./lib { inherit (nixpkgs) lib; };
overlays = [ ];
overlays = [
(_: prev: {
inherit
(
(import inputs.nixpkgs-unstable {
inherit (prev.stdenv.hostPlatform) system;
config.allowUnfree = true;
})
)
claude-code
;
})
];
mkHost = my-lib.mkHost {
inherit
@@ -86,7 +98,7 @@
nixosModules = import ./modules/nixos {
inherit my-lib;
lib = nixpkgs.lib;
inherit (nixpkgs) lib;
} { };
}
// flake-utils.lib.eachDefaultSystem (
@@ -95,15 +107,25 @@
pkgs = nixpkgs.legacyPackages.${system};
in
{
packages = import ./packages {
packages =
import ./packages
{
inherit my-lib;
lib = nixpkgs.lib;
} (inputs // { inherit system; });
inherit (nixpkgs) lib;
}
{
pkgs = nixpkgs.legacyPackages.${system};
pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.${system};
pkgs-master = inputs.nixpkgs-master.legacyPackages.${system};
};
formatter = pkgs.nixfmt-tree;
devShells.default = pkgs.mkShell {
packages = [ pkgs.pre-commit ];
packages = [
pkgs.pre-commit
pkgs.statix
];
};
}
);

View File

@@ -27,7 +27,6 @@ in
inputs.self.nixosModules.initrd-ssh
];
# Modules
yubikey.enable = true;
openssh.enable = true;
desktop.enable = true;
@@ -58,7 +57,6 @@ in
};
};
# Stylix theming
stylix = {
enable = true;
polarity = "dark";
@@ -66,28 +64,22 @@ in
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-medium.yaml";
};
# Boot
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Locale
time.timeZone = "Europe/Ljubljana";
environment.variables.TZ = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8";
# nix-ld for pip-installed binaries
# WARN:(matej) probably want to drop this in the future
# WARN:(@janezicmatej) nix-ld for running pip-installed binaries outside nix, probably want to drop this
programs.nix-ld.enable = true;
programs.nix-ld.libraries = options.programs.nix-ld.libraries.default;
# Security
security.pki.certificateFiles = [ packages.ca-matheo-si ];
services.gnome.gnome-keyring.enable = true;
# Services
services.teamviewer.enable = true;
# Programs
programs.thunderbird.enable = true;
programs._1password.enable = true;
programs._1password-gui.enable = true;
@@ -99,12 +91,10 @@ in
localNetworkGameTransfers.openFirewall = true;
};
# Hardware
hardware.keyboard.zsa.enable = true;
hardware.ledger.enable = true;
hardware.bluetooth.powerOnBoot = true;
# Networking
networking = {
hostName = "matej-nixos";
useDHCP = false;
@@ -123,7 +113,6 @@ in
];
};
# XDG
xdg.mime.defaultApplications = {
"application/pdf" = "org.pwmt.zathura.desktop";
};

View File

@@ -25,7 +25,6 @@
inputs.self.nixosModules.initrd-ssh
];
# Modules
yubikey.enable = true;
openssh.enable = true;
desktop.enable = true;
@@ -44,7 +43,6 @@
networkModule = "r8169";
};
# Stylix theming
stylix = {
enable = true;
polarity = "dark";
@@ -52,7 +50,8 @@
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-medium.yaml";
};
# Boot - Lanzaboote secure boot
# lanzaboote secure boot
boot.kernelParams = [ "btusb.reset=1" ];
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.lanzaboote = {
@@ -60,18 +59,15 @@
pkiBundle = "/var/lib/sbctl";
};
# Locale
time.timeZone = "Europe/Ljubljana";
environment.variables.TZ = "Europe/Ljubljana";
# Services
services.udisks2.enable = true;
# Programs
programs._1password.enable = true;
programs._1password-gui.enable = true;
# Higher sample rate pipewire for audio equipment
# higher sample rate for audio equipment
services.pipewire.extraConfig.pipewire.adjust-sample-rate = {
"context.properties" = {
"default.clock.rate" = 192000;
@@ -79,12 +75,10 @@
};
};
# System packages
environment.systemPackages = with pkgs; [
easyeffects
];
# XDG
xdg.mime.defaultApplications = {
"application/pdf" = "org.pwmt.zathura.desktop";
};

View File

@@ -1,6 +1,6 @@
lib:
# takes dir as an argument and creates an attribute set by importing all .nix files in that directory
# import all .nix files in dir as attribute set
dir:
let
readDir = builtins.readDir dir;

View File

@@ -15,12 +15,10 @@ let
hostHWConfig = ../hosts/${name}/hardware-configuration.nix;
hasHWConfig = builtins.pathExists hostHWConfig;
# Load NixOS-level user config (account, groups, SSH keys)
userNixosConfigs = map (user: ../users/${user}/nixos.nix) (
builtins.filter (user: builtins.pathExists ../users/${user}/nixos.nix) users
);
# Load home-manager user config
userHMConfigs = nixpkgs.lib.genAttrs users (user: import ../users/${user}/home-manager.nix);
in

View File

@@ -12,26 +12,20 @@
};
config = lib.mkIf config.desktop.enable {
# Audio
services.pipewire = {
enable = true;
pulse.enable = true;
};
# Bluetooth
hardware.bluetooth.enable = true;
services.blueman.enable = true;
# Security
security.polkit.enable = true;
# D-Bus
services.dbus.enable = true;
# Player control
services.playerctld.enable = true;
# XDG Portals
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
@@ -41,7 +35,6 @@
];
};
# Fonts
fonts.packages = with pkgs; [
font-awesome
nerd-fonts.jetbrains-mono

View File

@@ -7,9 +7,7 @@ let
# TODO:(@janezicmatej) restructure keys import
keys = import ../../users/matej/keys.nix;
cfg = config.initrd-ssh;
# Generate keys on new machines: ./scripts/initrd-ssh-keygen.sh
# generate host keys for new machines: ./scripts/initrd-ssh-keygen.sh
keyDir = "/etc/secrets/initrd";
mkIpString =
@@ -32,25 +30,21 @@ in
address = lib.mkOption {
type = lib.types.str;
description = "Static IP address";
example = "10.222.0.247";
};
gateway = lib.mkOption {
type = lib.types.str;
description = "Gateway address";
example = "10.222.0.1";
};
netmask = lib.mkOption {
type = lib.types.str;
default = "255.255.255.0";
description = "Network mask";
};
interface = lib.mkOption {
type = lib.types.str;
description = "Network interface";
example = "enp5s0";
};
};
@@ -58,21 +52,19 @@ in
authorizedKeys = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = keys.sshAuthorizedKeys;
description = "SSH public keys authorized for initrd unlock";
};
networkModule = lib.mkOption {
type = lib.types.str;
description = "Kernel module for network interface (e.g., r8169, e1000e)";
example = "r8169";
};
};
};
config = lib.mkIf cfg.enable {
boot.initrd.kernelModules = [ cfg.networkModule ];
boot.kernelParams = lib.mkIf cfg.ip.enable [
"ip=${mkIpString cfg.ip}"
config = lib.mkIf config.initrd-ssh.enable {
boot.initrd.kernelModules = [ config.initrd-ssh.networkModule ];
boot.kernelParams = lib.mkIf config.initrd-ssh.ip.enable [
"ip=${mkIpString config.initrd-ssh.ip}"
];
boot.initrd.network = {
@@ -84,7 +76,7 @@ in
"${keyDir}/ssh_host_rsa_key"
"${keyDir}/ssh_host_ed25519_key"
];
authorizedKeys = cfg.authorizedKeys;
inherit (config.initrd-ssh) authorizedKeys;
};
postCommands = ''
echo 'cryptsetup-askpass' >> /root/.profile

View File

@@ -10,7 +10,6 @@
port = lib.mkOption {
type = lib.types.port;
default = 22;
description = "SSH server port";
};
};
};

View File

@@ -12,7 +12,6 @@
cmdFlags = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = "additional command line flags to pass to sway";
};
};
};
@@ -24,23 +23,20 @@
wrapperFeatures.gtk = true;
extraOptions = config.sway.cmdFlags;
extraSessionCommands = ''
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
# fix for java awt apps not rendering
export _JAVA_AWT_WM_NONREPARENTING=1
'';
};
environment.systemPackages = with pkgs; [
# default extra packages
brightnessctl
foot
grim
pulseaudio
swayidle
# swaylock - use swaylock-effects instead
# use swaylock-effects instead of swaylock
swaylock-effects
wmenu
# additional things i like
slurp
wofi
wl-clipboard

View File

@@ -4,9 +4,6 @@
pkgs,
...
}:
let
cfg = config.tuigreet;
in
{
options = {
tuigreet = {
@@ -14,23 +11,20 @@ in
command = lib.mkOption {
type = lib.types.str;
description = "Session command to launch";
};
};
};
config = lib.mkIf cfg.enable {
config = lib.mkIf config.tuigreet.enable {
services.greetd = {
enable = true;
useTextGreeter = true;
settings = {
default_session = {
command = builtins.toString (
pkgs.writeShellScript "tuigreet-session" ''
command = pkgs.writeShellScript "tuigreet-session" ''
${pkgs.util-linux}/bin/setterm --blank 1 --powersave powerdown --powerdown 1
exec ${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd ${cfg.command}
''
);
exec ${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd ${config.tuigreet.command}
'';
user = "greeter";
};
};

View File

@@ -4,9 +4,6 @@
pkgs,
...
}:
let
cfg = config.workstation;
in
{
options = {
workstation = {
@@ -14,7 +11,7 @@ in
};
};
config = lib.mkIf cfg.enable {
config = lib.mkIf config.workstation.enable {
virtualisation.docker = {
enable = true;
logDriver = "json-file";

View File

@@ -1,7 +1,6 @@
{ nixpkgs, system, ... }:
{ pkgs, ... }:
let
pkgs = import nixpkgs { inherit system; };
version = "v0.3.2";
in
pkgs.rustPlatform.buildRustPackage {

View File

@@ -1,13 +1,12 @@
{ nixpkgs, system, ... }:
{ pkgs, ... }:
let
pkgs = import nixpkgs { inherit system; };
version = "C6r62em";
in
pkgs.stdenv.mkDerivation {
pname = "ca-matheo-si";
version = version;
inherit version;
src = pkgs.fetchurl {
url = "http://ipa2.matheo.si/ipa/config/ca.crt";

View File

@@ -1,8 +1,7 @@
{ nixpkgs-master, system, ... }:
{ pkgs-master, ... }:
let
nixpkgs = nixpkgs-master;
pkgs = import nixpkgs { inherit system; };
pkgs = pkgs-master;
version = "e24855c";
in
pkgs.buildGoModule.override

View File

@@ -1,7 +1,6 @@
{ nixpkgs, system, ... }:
{ pkgs, ... }:
let
pkgs = import nixpkgs { inherit system; };
version = "main";
in
pkgs.stdenv.mkDerivation {

View File

@@ -1,28 +0,0 @@
{ nixpkgs-master, system, ... }:
let
nixpkgs = nixpkgs-master;
pkgs = import nixpkgs { inherit system; };
version = "v1.25.0";
python = pkgs.python313;
in
python.pkgs.buildPythonPackage rec {
pname = "releasectl";
version = "1.2.0";
src = pkgs.fetchurl {
url = "https://gitlab.com/flarenetwork/infra-public/pipeliner/-/package_files/216813866/download";
sha256 = "sha256-ScBG8BoOKDdOAHTFP+zwyk+Kfu31WoKQSRkutOvnJ5E";
};
format = "wheel"; # if it uses poetry/PEP517, otherwise "setuptools"
# nativeBuildInputs = [ python.pkgs.setuptools python.pkgs.wheel ];
# propagatedBuildInputs = with python.pkgs; [
# # add runtime deps here if needed
# ];
# pyproject = true;
# build-system = [ pkgs.python313Packages.hatchling ];
}

1
statix.toml Normal file
View File

@@ -0,0 +1 @@
disabled = ["repeated_keys"]

View File

@@ -13,7 +13,7 @@ in
{
home.stateVersion = "24.11";
# TODO:(janezicmatej) do i need this here?
# TODO:(@janezicmatej) do i need this here?
services.dunst.enable = true;
home.packages = [
@@ -99,7 +99,6 @@ in
luajit
nodejs_22 # copilot
# treesitter
tree-sitter
# lua_fzf
@@ -109,7 +108,6 @@ in
gnumake
delta
# language server
pyright
typescript-language-server
lua-language-server
@@ -117,7 +115,6 @@ in
nil
nixd
# formatters
nixpkgs-fmt
stylua
];