My nixos configuration

Compare changes

Choose any two refs to compare.

Changed files
+40 -138
home
modules
profiles
base
development
programs
openshift
services
restic
+27 -27
flake.lock
··· 37 37 ] 38 38 }, 39 39 "locked": { 40 - "lastModified": 1744683403, 41 - "narHash": "sha256-ZphiIohrkf7bG5eKzQHhZqrpyiygbqdBrId6UgAHWOY=", 40 + "lastModified": 1745745433, 41 + "narHash": "sha256-fpb9C7rV2XxWnmr7QAgb9ioh21a7lstZVOYuDnR2Dxc=", 42 42 "owner": "nix-community", 43 43 "repo": "emacs-overlay", 44 - "rev": "d601c3de7e1932384a43585408a398ddccf3e1c6", 44 + "rev": "24a3e2b6b0dda50c1afaa3da730f156d0400e95a", 45 45 "type": "github" 46 46 }, 47 47 "original": { ··· 262 262 ] 263 263 }, 264 264 "locked": { 265 - "lastModified": 1744663884, 266 - "narHash": "sha256-a6QGaZMDM1miK8VWzAITsEPOdmLk+xTPyJSTjVs3WhI=", 265 + "lastModified": 1745802917, 266 + "narHash": "sha256-hI7BmIwKagCJlQdVgwxs1sLY2d8i97srcqT+OrhBDao=", 267 267 "owner": "nix-community", 268 268 "repo": "home-manager", 269 - "rev": "d5cdf55bd9f19a3debd55b6cb5d38f7831426265", 269 + "rev": "9c46dc881c2afcb50ac9ae9f1c36b2a4ebba3c8a", 270 270 "type": "github" 271 271 }, 272 272 "original": { ··· 303 303 "nixpkgs-regression": "nixpkgs-regression" 304 304 }, 305 305 "locked": { 306 - "lastModified": 1744638458, 307 - "narHash": "sha256-zcBauFa+aPRdhZb3/dmDKqvmhwPlMwSmNKwEwlaDzmg=", 306 + "lastModified": 1745707371, 307 + "narHash": "sha256-G9ggkngtuee05QnPnZX9GRrACVtkXHKRQyABb9InZuw=", 308 308 "owner": "nixos", 309 309 "repo": "nix", 310 - "rev": "b3aa07009d750ca2104e05ff5fe87f78419fef09", 310 + "rev": "c81202b358419ffff5af93f2299dd819fdaaed60", 311 311 "type": "github" 312 312 }, 313 313 "original": { ··· 360 360 }, 361 361 "nixpkgs": { 362 362 "locked": { 363 - "lastModified": 1743315132, 364 - "narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=", 363 + "lastModified": 1745391562, 364 + "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", 365 365 "owner": "NixOS", 366 366 "repo": "nixpkgs", 367 - "rev": "52faf482a3889b7619003c0daec593a1912fddc1", 367 + "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", 368 368 "type": "github" 369 369 }, 370 370 "original": { ··· 456 456 }, 457 457 "nixpkgs_2": { 458 458 "locked": { 459 - "lastModified": 1744463964, 460 - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", 459 + "lastModified": 1745526057, 460 + "narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=", 461 461 "owner": "nixos", 462 462 "repo": "nixpkgs", 463 - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", 463 + "rev": "f771eb401a46846c1aebd20552521b233dd7e18b", 464 464 "type": "github" 465 465 }, 466 466 "original": { ··· 472 472 }, 473 473 "nixpkgs_3": { 474 474 "locked": { 475 - "lastModified": 1744502386, 476 - "narHash": "sha256-QAd1L37eU7ktL2WeLLLTmI6P9moz9+a/ONO8qNBYJgM=", 475 + "lastModified": 1744868846, 476 + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", 477 477 "owner": "NixOS", 478 478 "repo": "nixpkgs", 479 - "rev": "f6db44a8daa59c40ae41ba6e5823ec77fe0d2124", 479 + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 480 480 "type": "github" 481 481 }, 482 482 "original": { ··· 515 515 "wrapper-manager": "wrapper-manager" 516 516 }, 517 517 "locked": { 518 - "lastModified": 1744665121, 519 - "narHash": "sha256-HruRfx3Ow39bmd7mbFkP24JbOIyK/1N2xMTlS1Z3Qt4=", 518 + "lastModified": 1745766071, 519 + "narHash": "sha256-udVsLF35zb9YSDP5mPeCVwgMhGDwuRYT9Uk4cVWYw8M=", 520 520 "owner": "nobbz", 521 521 "repo": "nobbz-vim", 522 - "rev": "a6b85d5462150c3cb24d7cc8a50cccc5db95a335", 522 + "rev": "36a897123ffd74b9b8c59ca4268ecbf1b8ca90b7", 523 523 "type": "github" 524 524 }, 525 525 "original": { ··· 556 556 "utils": "utils" 557 557 }, 558 558 "locked": { 559 - "lastModified": 1744677475, 560 - "narHash": "sha256-RY0eqKe6rlIlbQcbWTaRJjSGABC31HMkfb52OCXqQ88=", 559 + "lastModified": 1745780590, 560 + "narHash": "sha256-js+FPQVsH6KdxguYukxtA3pZu0pWK9rrFYjaI51ispo=", 561 561 "owner": "wamserma", 562 562 "repo": "flake-programs-sqlite", 563 - "rev": "d3a03bfdbb16419d33a3f1b6f8a3694285482d15", 563 + "rev": "ae9ef77cdcdbc173cd8f4d0c3f162acdefc77d25", 564 564 "type": "github" 565 565 }, 566 566 "original": { ··· 611 611 "nixpkgs": "nixpkgs_3" 612 612 }, 613 613 "locked": { 614 - "lastModified": 1744669848, 615 - "narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=", 614 + "lastModified": 1745310711, 615 + "narHash": "sha256-ePyTpKEJTgX0gvgNQWd7tQYQ3glIkbqcW778RpHlqgA=", 616 616 "owner": "Mic92", 617 617 "repo": "sops-nix", 618 - "rev": "61154300d945f0b147b30d24ddcafa159148026a", 618 + "rev": "5e3e92b16d6fdf9923425a8d4df7496b2434f39c", 619 619 "type": "github" 620 620 }, 621 621 "original": {
-2
home/modules/default.nix
··· 9 9 "programs/eza" = ./programs/eza; 10 10 "programs/ghostty" = ./programs/ghostty; 11 11 "programs/nixpkgs" = ./programs/nixpkgs; 12 - "programs/openshift" = ./programs/openshift; 13 12 "programs/p10k" = ./programs/p10k; 14 13 "programs/rbw" = ./programs/rbw; 15 14 "programs/wezterm" = ./programs/wezterm; 16 15 17 16 "services/insync" = ./services/insync; 18 - "services/restic" = ./services/restic; 19 17 "services/rustic" = ./services/rustic; 20 18 21 19 "misc/awesome" = ./misc/awesome;
+1 -1
home/modules/profiles/base/default.nix
··· 251 251 } 252 252 ]; 253 253 254 - initExtra = '' 254 + initContent = '' 255 255 bindkey "^[[1;5D" backward-word 256 256 bindkey "^[[1;5C" forward-word 257 257
+12
home/modules/profiles/development/default.nix
··· 13 13 }; 14 14 15 15 config = lib.mkIf cfg.enable { 16 + programs.jujutsu = { 17 + enable = true; 18 + settings = { 19 + user = { 20 + name = config.programs.git.userName; 21 + email = config.programs.git.userEmail; 22 + }; 23 + 24 + ui.diff.tool = [config.programs.git.extraConfig.diff.external "$left" "$right"]; 25 + }; 26 + }; 27 + 16 28 programs.gh.enable = true; 17 29 programs.git = { 18 30 enable = true;
-23
home/modules/programs/openshift/default.nix
··· 1 - _: { 2 - pkgs, 3 - lib, 4 - config, 5 - ... 6 - }: let 7 - cfg = config.programs.openshift; 8 - in { 9 - options.programs.openshift = { 10 - enable = lib.mkEnableOption "Tools to manage openshift instances"; 11 - }; 12 - 13 - config = lib.mkIf cfg.enable { 14 - home.packages = [pkgs.sops pkgs.openshift (lib.setPrio 0 pkgs.kubectl) pkgs.kubernetes-helm]; 15 - 16 - programs.zsh.initExtra = '' 17 - # Enable autocomplete for oc, kubectl and helm 18 - eval "$(${pkgs.openshift}/bin/oc completion zsh)" 19 - eval "$(${pkgs.kubectl}/bin/kubectl completion zsh)" 20 - eval "$(${pkgs.kubernetes-helm}/bin/helm completion zsh)" 21 - ''; 22 - }; 23 - }
-85
home/modules/services/restic/default.nix
··· 1 - {self, ...}: { 2 - config, 3 - lib, 4 - pkgs, 5 - self, 6 - ... 7 - }: let 8 - cfg = config.services.restic; 9 - 10 - bin = "${cfg.package}/bin/restic"; 11 - excludes = builtins.concatStringsSep " " (builtins.map (e: "--exclude=${e}") cfg.exclude); 12 - xFlags = lib.optionalString cfg.oneFileSystem "-x"; 13 - compressFlag = "--compression ${cfg.compression}"; 14 - flags = "${xFlags} ${compressFlag} ${excludes}"; 15 - 16 - command = "${bin} --tag home -vv backup ${flags} %h"; 17 - in { 18 - options.services.restic = { 19 - enable = lib.mkEnableOption "Restic Backup Tool"; 20 - 21 - package = lib.mkOption { 22 - type = lib.types.package; 23 - default = pkgs.restic; 24 - description = "Restic derivation to use"; 25 - }; 26 - 27 - exclude = lib.mkOption { 28 - type = lib.types.listOf lib.types.str; 29 - default = []; 30 - description = "Corresponds to `--exclude`. Use `%h` instead of `~`"; 31 - }; 32 - 33 - oneFileSystem = lib.mkOption { 34 - type = lib.types.bool; 35 - default = false; 36 - description = "If true, exclude other file systems, don't cross filesystem boundaries and subvolumes"; 37 - }; 38 - 39 - repo = lib.mkOption { 40 - type = lib.types.str; 41 - description = "Location of the repository"; 42 - }; 43 - 44 - compression = lib.mkOption { 45 - type = lib.types.enum ["off" "auto" "max"]; 46 - description = "The compression mode to use"; 47 - default = "auto"; 48 - }; 49 - 50 - # TODO: Add options for inlcude, password file, etc 51 - }; 52 - 53 - config = lib.mkIf cfg.enable { 54 - home.packages = [cfg.package]; 55 - 56 - systemd.user.services.restic-backup = { 57 - Unit = { 58 - Description = "Restic Backup Tool"; 59 - StartLimitIntervalSec = "25m"; 60 - StartLimitBurst = "4"; 61 - }; 62 - 63 - Service = { 64 - Environment = [ 65 - "PATH=${lib.makeBinPath [pkgs.openssh]}" 66 - "RESTIC_PASSWORD_FILE=%h/.config/restic/password" 67 - "RESTIC_REPOSITORY=${cfg.repo}" 68 - ]; 69 - Type = "oneshot"; 70 - ExecStart = command; 71 - Restart = "on-failure"; 72 - RestartSec = "2m"; 73 - }; 74 - }; 75 - 76 - systemd.user.timers.restic-backup = { 77 - Unit.Description = "Restic periodic backup"; 78 - Timer = { 79 - Unit = "restic-backup.service"; 80 - OnCalendar = "hourly"; 81 - }; 82 - Install.WantedBy = ["timers.target"]; 83 - }; 84 - }; 85 - }