diff --git a/README.md b/README.md index b1b0639..c2642e3 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,21 @@ nix build .#nixosConfigurations.bcachefs-iso.config.system.build.isoImage This will create an iso image in the result directory. +### Macos install +Initial install of nix using the determinate nix installer. Then a "full" bootstrap that installs all required packages such as `nh`, `git` etc.: +``` +sudo nix run nix-darwin/master#darwin-rebuild -- switch --flake .#Remys-MacBook-Pro +``` +> some modifications might be necessary (i.e. due to faulty git setup at that stage). +``` +# could also try something like this: +nix-shell -p git nh +``` +Finally, the desired state has been reached where `nh` is available: +``` +nh darwin switch . +``` + ## Installation TODO - disable root user ``` diff --git a/flake.lock b/flake.lock index e993a46..81fc2e2 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1762356719, - "narHash": "sha256-qwd/xdoOya1m8FENle+4hWnydCtlXUWLAW/Auk6WL7s=", + "lastModified": 1764370710, + "narHash": "sha256-7iZklFmziy6Vn5ZFy9mvTSuFopp3kJNuPxL5QAvtmFQ=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "6d0b3567584691bf9d8fedb5d0093309e2f979c7", + "rev": "561ae7fbe1ca15dfd908262ec815bf21a13eef63", "type": "github" }, "original": { @@ -101,6 +101,22 @@ "type": "github" } }, + "cl-nix-lite": { + "locked": { + "lastModified": 1763190794, + "narHash": "sha256-Uhdbf0YbPkBeCBfL1+5ONo/o8sFJd0Gahg6MD0ktwEQ=", + "owner": "r4v3n6101", + "repo": "cl-nix-lite", + "rev": "a781bd2bd0a444e27bdb5d4aabfc0e81422bdc91", + "type": "github" + }, + "original": { + "owner": "r4v3n6101", + "ref": "url-fix", + "repo": "cl-nix-lite", + "type": "github" + } + }, "dankMaterialShell": { "inputs": { "dgop": "dgop", @@ -109,11 +125,11 @@ ] }, "locked": { - "lastModified": 1763522195, - "narHash": "sha256-QW/SKfUN5nT8J1EIvtpNaGf886+BBp2vCvs/ZuMo0VE=", + "lastModified": 1764741581, + "narHash": "sha256-CbeO9Ie4Ecf8TsQWBJCrOenFmESC8XOSJ0UY69/ZTCw=", "owner": "AvengeMedia", "repo": "DankMaterialShell", - "rev": "dfdaa82245302d40ac1aa4c0d60728b4397dde61", + "rev": "0ea0602aecf5ec6814988c61d4d43ff36c613f18", "type": "github" }, "original": { @@ -143,26 +159,6 @@ "type": "github" } }, - "dms-cli": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1763078370, - "narHash": "sha256-wsYqJlLdRSlJpRE0tIuuPMU6aOyhMdV237rEG/enUxY=", - "owner": "AvengeMedia", - "repo": "danklinux", - "rev": "7a083a0d6d087d41d0bc5077d03e662e1417ce3c", - "type": "github" - }, - "original": { - "owner": "AvengeMedia", - "repo": "danklinux", - "type": "github" - } - }, "firefox-gnome-theme": { "flake": false, "locked": { @@ -182,11 +178,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "type": "github" }, "original": { @@ -195,6 +191,23 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1730663653, + "narHash": "sha256-kFCUWettiFHDIqxCWWQ9qY8pVh+Lj+XL0Giyy/kdomg=", + "owner": "hraban", + "repo": "flake-compat", + "rev": "e5b16676185cb7548581c852f51ce7f3a49bba5e", + "type": "github" + }, + "original": { + "owner": "hraban", + "ref": "fixed-output", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -216,6 +229,26 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": [ + "mac-app-util", + "systems" + ] + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "id": "flake-utils", + "type": "indirect" + } + }, "fromYaml": { "flake": false, "locked": { @@ -280,11 +313,11 @@ ] }, "locked": { - "lastModified": 1763416652, - "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=", + "lastModified": 1764736867, + "narHash": "sha256-Q/+03EAvtzCbhGXv7yLsYh+pXIzLUgibpQKxo5CI2bk=", "owner": "nix-community", "repo": "home-manager", - "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312", + "rev": "bcc7afa1d873ead5932fbb4d42f1916a9627c084", "type": "github" }, "original": { @@ -359,11 +392,11 @@ ] }, "locked": { - "lastModified": 1762462052, - "narHash": "sha256-6roLYzcDf4V38RUMSqycsOwAnqfodL6BmhRkUtwIgdA=", + "lastModified": 1763733840, + "narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "ffc999d980c7b3bca85d3ebd0a9fbadf984a8162", + "rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a", "type": "github" }, "original": { @@ -388,11 +421,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1763540034, - "narHash": "sha256-TogNk567BTZib1XiYheW04ELxNB2bhee6G4SgphRqmA=", + "lastModified": 1764725443, + "narHash": "sha256-A2UyZwPSHSdNfvW17J5GhxIo1TS0Z0rYv+Xgdp+w5wc=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "fbb31503f1b69402eeda81ba75a547c862c88bf2", + "rev": "3cf0280b11f370c11e6839275e547779a33f4a19", "type": "github" }, "original": { @@ -434,11 +467,11 @@ ] }, "locked": { - "lastModified": 1762755186, - "narHash": "sha256-ZjjETUHtoEhVN7JI1Cbt3p/KcXpK8ZQaPHx7UkG1OgA=", + "lastModified": 1764616927, + "narHash": "sha256-wRT0MKkpPo11ijSX3KeMN+EQWnpSeUlRtyF3pFLtlRU=", "owner": "hyprwm", "repo": "hyprland-guiutils", - "rev": "66356e20a8ed348aa49c1b9ceace786e224225b3", + "rev": "25cedbfdc5b3ea391d8307c9a5bea315e5df3c52", "type": "github" }, "original": { @@ -488,11 +521,11 @@ ] }, "locked": { - "lastModified": 1763254292, - "narHash": "sha256-JNgz3Fz2KMzkT7aR72wsgu/xNeJB//LSmdilh8Z/Zao=", + "lastModified": 1764612430, + "narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "deea98d5b61d066bdc7a68163edd2c4bd28d3a6b", + "rev": "0d00dc118981531aa731150b6ea551ef037acddd", "type": "github" }, "original": { @@ -540,11 +573,11 @@ ] }, "locked": { - "lastModified": 1762463729, - "narHash": "sha256-2fYkU/mdz8WKY3dkDPlE/j6hTxIwqultsx4gMMsMns0=", + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", "owner": "hyprwm", "repo": "hyprtoolkit", - "rev": "88483bdee5329ec985f0c8f834c519cd18cfe532", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", "type": "github" }, "original": { @@ -565,11 +598,11 @@ ] }, "locked": { - "lastModified": 1763323331, - "narHash": "sha256-+Z0OfCo1MS8/aIutSAW5aJR9zTae1wz9kcJYMgpwN6M=", + "lastModified": 1764637132, + "narHash": "sha256-vSyiKCzSY48kA3v39GFu6qgRfigjKCU/9k1KTK475gg=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "0c6411851cc779d551edc89b83966696201611aa", + "rev": "2f2413801beee37303913fc3c964bbe92252a963", "type": "github" }, "original": { @@ -590,11 +623,11 @@ ] }, "locked": { - "lastModified": 1755184602, - "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", + "lastModified": 1763640274, + "narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", + "rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671", "type": "github" }, "original": { @@ -603,6 +636,50 @@ "type": "github" } }, + "mac-app-util": { + "inputs": { + "cl-nix-lite": "cl-nix-lite", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_2", + "systems": "systems_2", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1756057867, + "narHash": "sha256-ziR5eQGqRWhW8tf8r0TIplaqNt+HXu1G1X41LUr4IYo=", + "owner": "hraban", + "repo": "mac-app-util", + "rev": "8414fa1e2cb775b17793104a9095aabeeada63ef", + "type": "github" + }, + "original": { + "owner": "hraban", + "repo": "mac-app-util", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764161084, + "narHash": "sha256-HN84sByg9FhJnojkGGDSrcjcbeioFWoNXfuyYfJ1kBE=", + "owner": "nix-darwin", + "repo": "nix-darwin", + "rev": "e95de00a471d07435e0527ff4db092c84998698e", + "type": "github" + }, + "original": { + "owner": "nix-darwin", + "ref": "nix-darwin-25.11", + "repo": "nix-darwin", + "type": "github" + } + }, "nix-flatpak": { "locked": { "lastModified": 1754777568, @@ -623,14 +700,14 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_3" }, "locked": { - "lastModified": 1763517711, - "narHash": "sha256-uY0Vr7ene4VlHyeZRHRNvT4WRwakAr8JShwmNEg7JB0=", + "lastModified": 1764727495, + "narHash": "sha256-sAxuKAnUf8CWsaW6TquDsdDDK4WA4cFNJi/NoccibOw=", "owner": "nix-community", "repo": "nix4vscode", - "rev": "ce4507078be02de77c001ca498657436ec815a35", + "rev": "97019369dd7847a198267a4d4ea8a9d3daf66f6a", "type": "github" }, "original": { @@ -641,11 +718,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1763283776, - "narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { @@ -657,11 +734,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1763421233, - "narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=", + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "89c2b2330e733d6cdb5eae7b899326930c2c0648", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { @@ -673,11 +750,43 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1763421233, - "narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=", + "lastModified": 1732617236, + "narHash": "sha256-PYkz6U0bSEaEB1al7O1XsqVNeSNS+s3NVclJw7YC43w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1754340878, + "narHash": "sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "89c2b2330e733d6cdb5eae7b899326930c2c0648", + "rev": "cab778239e705082fe97bb4990e0d24c50924c04", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", "type": "github" }, "original": { @@ -722,11 +831,11 @@ ] }, "locked": { - "lastModified": 1763319842, - "narHash": "sha256-YG19IyrTdnVn0l3DvcUYm85u3PaqBt6tI6VvolcuHnA=", + "lastModified": 1763988335, + "narHash": "sha256-QlcnByMc8KBjpU37rbq5iP7Cp97HvjRP0ucfdh+M4Qc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "7275fa67fbbb75891c16d9dee7d88e58aea2d761", + "rev": "50b9238891e388c9fdc6a5c49e49c42533a1b5ce", "type": "github" }, "original": { @@ -738,16 +847,16 @@ "root": { "inputs": { "dankMaterialShell": "dankMaterialShell", - "dms-cli": "dms-cli", "home-manager": "home-manager", "hyprland": "hyprland", + "mac-app-util": "mac-app-util", + "nix-darwin": "nix-darwin", "nix-flatpak": "nix-flatpak", "nix4vscode": "nix4vscode", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_4", "nixpkgs-unstable": "nixpkgs-unstable", "sops-nix": "sops-nix", "stylix": "stylix", - "watt": "watt", "zen-browser": "zen-browser" } }, @@ -758,11 +867,11 @@ ] }, "locked": { - "lastModified": 1763509310, - "narHash": "sha256-s2WzTAD3vJtPACBCZXezNUMTG/wC6SFsU9DxazB9wDI=", + "lastModified": 1764483358, + "narHash": "sha256-EyyvCzXoHrbL467YSsQBTWWg4sR96MH1sPpKoSOelB4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "3ee33c0ed7c5aa61b4e10484d2ebdbdc98afb03e", + "rev": "5aca6ff67264321d47856a2ed183729271107c9c", "type": "github" }, "original": { @@ -784,7 +893,7 @@ "nixpkgs" ], "nur": "nur", - "systems": "systems_3", + "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -792,11 +901,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1763497248, - "narHash": "sha256-OGP6MYc+lVkLVQOTS6ORszDcCnZm7kDOGpFBdDoLd0k=", + "lastModified": 1764722003, + "narHash": "sha256-s+rXjTHsjC39zcFFq8UkQPdpy/uzdhQU+RGvehYJQm0=", "owner": "nix-community", "repo": "stylix", - "rev": "f19ac46f6aa26188b2020ed40066a5b832be9c53", + "rev": "ddc49fd564a599474d6587df25553cbfd7325ece", "type": "github" }, "original": { @@ -821,6 +930,21 @@ } }, "systems_2": { + "locked": { + "lastModified": 1689347925, + "narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=", + "owner": "nix-systems", + "repo": "default-darwin", + "rev": "2235d7e6cc29ae99878133c95e9fe5e157661ffb", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-darwin", + "type": "github" + } + }, + "systems_3": { "flake": false, "locked": { "lastModified": 1681028828, @@ -836,7 +960,7 @@ "type": "github" } }, - "systems_3": { + "systems_4": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -932,24 +1056,21 @@ "type": "github" } }, - "watt": { + "treefmt-nix": { "inputs": { - "nixpkgs": [ - "nixpkgs" - ] + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1749377316, - "narHash": "sha256-hw3rL4rlIlYJMTeE7DlQ3lRhQDJURAhE+PC/NT4VAAQ=", - "owner": "NotAShelf", - "repo": "watt", - "rev": "154724c7b1bd49654ea55df719e1eb3219ec2000", + "lastModified": 1755934250, + "narHash": "sha256-CsDojnMgYsfshQw3t4zjRUkmMmUdZGthl16bXVWgRYU=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "74e1a52d5bd9430312f8d1b8b0354c92c17453e5", "type": "github" }, "original": { - "owner": "NotAShelf", - "ref": "v0.3.2", - "repo": "watt", + "owner": "numtide", + "repo": "treefmt-nix", "type": "github" } }, @@ -1002,11 +1123,11 @@ ] }, "locked": { - "lastModified": 1763521945, - "narHash": "sha256-Zcrafbe4niRJMbzaVOwg7+iedJhwBFttre2DpyCC6qA=", + "lastModified": 1764736168, + "narHash": "sha256-CQcj/oWKH4zN8Xkc1RglX+uOJTW1fwNWvMQWRXRlEys=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "24d7381b9231c23daceec5d372cc28e877f7785d", + "rev": "df63ce4f706567e6efa083ba63d5e7792bf70ffa", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index fae387a..faea01a 100644 --- a/flake.nix +++ b/flake.nix @@ -34,20 +34,24 @@ }; # quickshell - dms-cli = { - url = "github:AvengeMedia/danklinux"; - inputs.nixpkgs.follows = "nixpkgs"; - }; dankMaterialShell = { url = "github:AvengeMedia/DankMaterialShell"; inputs.nixpkgs.follows = "nixpkgs"; - inputs.dms-cli.follows = "dms-cli"; }; nix4vscode = { url = "github:nix-community/nix4vscode"; inputs.nixpkgs.follows = "nixpkgs"; }; + + + nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11"; + nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; + mac-app-util = { + # see https://github.com/hraban/mac-app-util/issues/39#issuecomment-3503946041 + url = "github:hraban/mac-app-util"; + inputs.cl-nix-lite.url = "github:r4v3n6101/cl-nix-lite/url-fix"; + }; }; outputs = { @@ -58,6 +62,8 @@ stylix, sops-nix, nix4vscode, + nix-darwin, + mac-app-util, ... } @ inputs: let @@ -147,6 +153,25 @@ ) systems; + darwinConfigurations."Remys-MacBook-Pro" = nix-darwin.lib.darwinSystem { + modules = [ + home-manager.darwinModules.home-manager { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.backupFileExtension = ".backup"; + home-manager.extraSpecialArgs = { inherit inputs pkgs-unstable; }; + + home-manager.users.remy.imports = [ + ./users/remy_macos + mac-app-util.homeManagerModules.default + ]; + } + mac-app-util.darwinModules.default + { nixpkgs.overlays = [ inputs.nix4vscode.overlays.default ]; } + ./hosts/macbook-pro + ]; + }; + # ## Useful nix build tools # # iso builder TODO # nixosConfigurations.bcachefs-iso = nixpkgs.lib.nixosSystem { diff --git a/hosts/macbook-pro/configuration.nix b/hosts/macbook-pro/configuration.nix new file mode 100644 index 0000000..a66edf8 --- /dev/null +++ b/hosts/macbook-pro/configuration.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: + +{ + users.users.remy = { + home = "/Users/remy"; + }; + system.primaryUser = "remy"; + + nix.enable=false; + nixpkgs.config.allowUnfree = true; + security.pam.services.sudo_local.touchIdAuth = true; + + # Necessary for using flakes on this system. + nix.settings.experimental-features = "nix-command flakes"; + + # Enable alternative shell support in nix-darwin. + # programs.fish.enable = true; + + # Set Git commit hash for darwin-version. + # system.configurationRevision = self.rev or self.dirtyRev or null; + + # Used for backwards compatibility, please read the changelog before changing. + # $ darwin-rebuild changelog + system.stateVersion = 6; + nixpkgs.hostPlatform = "aarch64-darwin"; +} diff --git a/hosts/macbook-pro/default.nix b/hosts/macbook-pro/default.nix new file mode 100644 index 0000000..8e3b93f --- /dev/null +++ b/hosts/macbook-pro/default.nix @@ -0,0 +1,15 @@ +{ + config = { + #nix-config = { + # networking.hostName = "nyx"; + + # userName = "remy"; + #}; + }; + + # Merge the configuration and hardware configuration + imports = [ + ./configuration.nix + ../../modules/macos/tiling.nix + ]; +} diff --git a/hosts/mobile-usb/default.nix b/hosts/mobile-usb/default.nix index b485ddb..2f9107f 100644 --- a/hosts/mobile-usb/default.nix +++ b/hosts/mobile-usb/default.nix @@ -24,7 +24,6 @@ ../../modules/nixos/ld.nix ../../modules/nixos/monitoring.nix ../../modules/nixos/networking.nix - ../../modules/nixos/nh.nix ../../modules/nixos/pipewire.nix ../../modules/nixos/podman.nix ../../modules/nixos/power.nix diff --git a/hosts/yoga-7-pro/default.nix b/hosts/yoga-7-pro/default.nix index 0bada65..41c6d1a 100644 --- a/hosts/yoga-7-pro/default.nix +++ b/hosts/yoga-7-pro/default.nix @@ -22,7 +22,6 @@ ../../modules/nixos/ld.nix ../../modules/nixos/monitoring.nix ../../modules/nixos/networking.nix - ../../modules/nixos/nh.nix ../../modules/nixos/pipewire.nix ../../modules/nixos/podman.nix ../../modules/nixos/power.nix diff --git a/modules/home-manager/browser.nix b/modules/home-manager/browser.nix index 9f7b73d..95099db 100644 --- a/modules/home-manager/browser.nix +++ b/modules/home-manager/browser.nix @@ -1,12 +1,27 @@ {pkgs, inputs, ...}: { - programs.firefox = { - ## Enable the Firefox web browser + imports = [ + inputs.zen-browser.homeModules.beta + ]; + + programs.zen-browser = { enable = true; + ## Global preferences policies = { BlockAboutConfig = true; - DefaultDownloadDirectory = "\${home}/Downloads"; + AutofillAddressEnabled = false; + AutofillCreditCardEnabled = false; + + DisableAppUpdate = true; + DisableFeedbackCommands = true; + DisableTelemetry = true; + DisablePocket = true; + + DontCheckDefaultBrowser = true; + OfferToSaveLogins = false; + + ExtensionSettings = with builtins; let extension = shortId: uuid: { name = uuid; @@ -17,128 +32,20 @@ }; in listToAttrs [ (extension "ublock-origin" "uBlock0@raymondhill.net") - (extension "tabliss" "extension@tabliss.io") - (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") - (extension "keepassxc-browser" "keepassxc-browser@keepassxc.org") (extension "ghostery" "firefox@ghostery.com") + (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") ]; }; - ## Per-profile preferences - profiles.default = { - search = { - force = true; - default = "ddg"; - privateDefault = "ddg"; - order = ["ddg" "google"]; - }; - settings = { - "browser.startup.homepage" = "about:home"; - - # Disable irritating first-run stuff - "browser.disableResetPrompt" = true; - "browser.download.panel.shown" = true; - "browser.feeds.showFirstRunUI" = false; - "browser.messaging-system.whatsNewPanel.enabled" = false; - "browser.rights.3.shown" = true; - "browser.shell.checkDefaultBrowser" = false; - "browser.shell.defaultBrowserCheckCount" = 1; - "browser.startup.homepage_override.mstone" = "ignore"; - "browser.uitour.enabled" = false; - "startup.homepage_override_url" = ""; - "trailhead.firstrun.didSeeAboutWelcome" = true; - "browser.bookmarks.restore_default_bookmarks" = false; - "browser.bookmarks.addedImportButton" = true; - - # Disable "save password" prompt - "signon.rememberSignons" = false; - - # Harden - "privacy.trackingprotection.enabled" = true; - "dom.security.https_only_mode" = true; - - # Disable Pocket - "extensions.pocket.enabled" = false; - - # Disable telemetry - "toolkit.telemetry.enabled" = false; - - # Remove bookmarks toolbar - "browser.toolbars.bookmarks.visibility" = "never"; - - # Restore session on startup - "browser.startup.page" = 3; - - # Automatically enable extensions - "extensions.autoDisableScopes" = 0; - - - }; - - }; + # ## Per-profile preferences + # profiles.default = { + # search = { + # force = true; + # default = "ddg"; + # privateDefault = "ddg"; + # order = ["ddg" "google"]; + # }; + # }; }; - home.packages = with pkgs; [ - inputs.zen-browser.packages."${system}".default - - # inputs.zen-browser.packages."${system}".default.override { - # policies = { - # DisableAppUpdate = true; - # DisableTelemetry = true; - - # OfferToSaveLogins = false; - # AutofillAddressEnabled = true; - # AutofillCreditCardEnabled = false; - # # BlockAboutConfig = true; - - # DefaultDownloadDirectory = "\${home}/Downloads"; - - # ExtensionSettings = with builtins; - # let extension = shortId: uuid: { - # name = uuid; - # value = { - # install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; - # installation_mode = "normal_installed"; - # }; - # }; - # in listToAttrs [ - # (extension "ublock-origin" "uBlock0@raymondhill.net") - # (extension "ghostery" "firefox@ghostery.com") - # (extension "keepassxc-browser" "keepassxc-browser@keepassxc.org") - # (extension "morphine" "{b252db54-e4f6-440f-914a-1f017a3a390d}") - # ]; - # }; - # } - - ]; - # programs.zen-browser = { - # enable = true; - - # policies = { - # DisableAppUpdate = true; - # DisableTelemetry = true; - - # OfferToSaveLogins = false; - # AutofillAddressEnabled = true; - # AutofillCreditCardEnabled = false; - # # BlockAboutConfig = true; - - # DefaultDownloadDirectory = "\${home}/Downloads"; - - # ExtensionSettings = with builtins; - # let extension = shortId: uuid: { - # name = uuid; - # value = { - # install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; - # installation_mode = "normal_installed"; - # }; - # }; - # in listToAttrs [ - # (extension "ublock-origin" "uBlock0@raymondhill.net") - # (extension "ghostery" "firefox@ghostery.com") - # (extension "keepassxc-browser" "keepassxc-browser@keepassxc.org") - # (extension "morphine" "{b252db54-e4f6-440f-914a-1f017a3a390d}") - # ]; - # }; - # }; } diff --git a/modules/home-manager/code.nix b/modules/home-manager/code.nix index 7731d61..9162f0a 100644 --- a/modules/home-manager/code.nix +++ b/modules/home-manager/code.nix @@ -114,7 +114,6 @@ in # Flutter and co "dart-code.flutter" "dart-code.dart-code" - ]; keybindings = baseKeybindings; @@ -177,5 +176,15 @@ in }; }; }; + + profiles.cloud = { + extensions = baseExtensions ++ pkgs.nix4vscode.forVscode [ + "Tim-Koehler.helm-intellisense" + "HashiCorp.terraform" + "signageos.signageos-vscode-sops" + ]; + keybindings = baseKeybindings; + userSettings = baseSettings; + }; }; } diff --git a/modules/home-manager/macos-fixes.nix b/modules/home-manager/macos-fixes.nix new file mode 100644 index 0000000..4f309ce --- /dev/null +++ b/modules/home-manager/macos-fixes.nix @@ -0,0 +1,21 @@ +{pkgs, ...}: + +{ + # on macos we don't set the default shell to fish + # instead we just tell the terminal to run fish as the first command + # this means that the first thing fish should do is to clear the screen + programs.fish = { + interactiveShellInit = "clear"; + }; + + + # stylix will be tricky as well, so we just install the fonts manually + fonts.fontconfig.enable = true; + + home.packages = with pkgs; [ + nerd-fonts.fira-code + noto-fonts-color-emoji + ] ++ [ # some more packages that are not available as flatpaks + pkgs.spotify + ]; +} diff --git a/modules/nixos/nh.nix b/modules/home-manager/nh.nix similarity index 100% rename from modules/nixos/nh.nix rename to modules/home-manager/nh.nix diff --git a/modules/home-manager/work/aliases.nix b/modules/home-manager/work/aliases.nix new file mode 100644 index 0000000..71df09f --- /dev/null +++ b/modules/home-manager/work/aliases.nix @@ -0,0 +1,11 @@ +{pkgs, ...}: +{ + # Add aliases for the various environments in aws so that their contexts can be easily switched + programs.fish.shellAliases = { + cdev = "aws-vault exec dev --"; + cstage = "aws-vault exec stage --"; + cprod = "aws-vault exec prod --"; + clogs = "aws-vault exec logs --"; + cshared = "aws-vault exec shared --"; + }; +} diff --git a/modules/home-manager/work/cryptography.nix b/modules/home-manager/work/cryptography.nix new file mode 100644 index 0000000..56a2175 --- /dev/null +++ b/modules/home-manager/work/cryptography.nix @@ -0,0 +1,7 @@ +{pkgs, ...}: +{ + home.packages = [ + pkgs.gnupg + pkgs.sops + ]; +} diff --git a/modules/home-manager/work/default.nix b/modules/home-manager/work/default.nix new file mode 100644 index 0000000..cd35d46 --- /dev/null +++ b/modules/home-manager/work/default.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: +let + cfg = config.nix-config.hypr; +in +{ + options = { + }; + + imports = [ + ./aliases.nix + ./cryptography.nix + ./git.nix + ./kluster.nix + ]; +} diff --git a/modules/home-manager/work/git.nix b/modules/home-manager/work/git.nix new file mode 100644 index 0000000..dd0edd3 --- /dev/null +++ b/modules/home-manager/work/git.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + ... +}: +{ + programs.git = { + enable = true; + settings = { + user.name = "Remy Moll"; + user.email = "remy.moll@artidis.com"; + }; + }; +} diff --git a/modules/home-manager/work/kluster.nix b/modules/home-manager/work/kluster.nix new file mode 100644 index 0000000..30a697a --- /dev/null +++ b/modules/home-manager/work/kluster.nix @@ -0,0 +1,14 @@ +{pkgs, ...}: +{ + home.packages = [ + pkgs.kubernetes-helm + pkgs.awscli2 + pkgs.aws-vault + pkgs.k9s + + # some parsers + pkgs.ripgrep + pkgs.jq + pkgs.yq + ]; +} diff --git a/modules/macos/tiling.nix b/modules/macos/tiling.nix new file mode 100644 index 0000000..ecd4ed0 --- /dev/null +++ b/modules/macos/tiling.nix @@ -0,0 +1,79 @@ +{ config, pkgs, lib, ... }: + +{ + # Enable yabai service + # Caution: at the very least yabai requires Accessibility permissions to be granted + # https://github.com/koekeishiya/yabai/issues/2688 + services.yabai = { + enable = true; + config = { + layout = "bsp"; + focus_follows_mouse = "autoraise"; + + window_placement = "second_child"; + window_topmost = "on"; + window_shadow = "float"; + + # by default, set balanced split ratio and auto balance => three windows will be evenly spaced on an ultrawide monitor + split_ratio = "0.50"; + auto_balance = "on"; + + mouse_modifier = "alt"; + mouse_action1 = "move";# + mouse_action2 = "resize"; + + window_opacity = "on"; + normal_window_opacity = 0.9; + + top_padding = 0; + bottom_padding = 0; + left_padding = 0; + right_padding = 0; + window_gap = 10; + }; + + extraConfig = '' + # Example: rules for floating windows + yabai -m rule --add app="System Preferences" manage=off + ''; + }; + + # # Enable skhd service + # services.skhd = { + # enable = true; + # package = pkgs.skhd; + # skhdConfig = '' + # # Focus windows with Command + Arrow keys + # cmd - left : yabai -m window --focus west + # cmd - right : yabai -m window --focus east + # cmd - up : yabai -m window --focus north + # cmd - down : yabai -m window --focus south + + # # Swap windows with Command + Shift + Arrow keys + # cmd + shift - left : yabai -m window --swap west + # cmd + shift - right : yabai -m window --swap east + # cmd + shift - up : yabai -m window --swap north + # cmd + shift - down : yabai -m window --swap south + + # # Move windows with Command + Control + Arrow keys + # cmd + ctrl - left : yabai -m window --warp west + # cmd + ctrl - right : yabai -m window --warp east + # cmd + ctrl - up : yabai -m window --warp north + # cmd + ctrl - down : yabai -m window --warp south + + # # Resize windows with Command + Option + Arrow keys + # cmd + alt - left : yabai -m window --resize left:-50:0 + # cmd + alt - right : yabai -m window --resize right:50:0 + # cmd + alt - up : yabai -m window --resize top:0:-50 + # cmd + alt - down : yabai -m window --resize bottom:0:50 + + # # Toggle window float with Command + F + # cmd - f : yabai -m window --toggle float + + # # Toggle window fullscreen with Command + Enter + # cmd - return : yabai -m window --toggle zoom-fullscreen + + # ''; + # }; + +} diff --git a/users/remy.nix b/users/remy.nix index 20b101f..77f8bfc 100644 --- a/users/remy.nix +++ b/users/remy.nix @@ -9,6 +9,7 @@ home.username = "remy"; home.homeDirectory = "/home/remy"; + ## Utils relevant to this user only programs.git = { enable = true; diff --git a/users/remy_macos/default.nix b/users/remy_macos/default.nix new file mode 100644 index 0000000..22c6d93 --- /dev/null +++ b/users/remy_macos/default.nix @@ -0,0 +1,23 @@ +{ config, pkgs, lib, ... }: +with lib.hm.gvariant; +{ + config = { + home.stateVersion = "24.05"; + }; + + + + imports = [ + ../../modules/home-manager/browser.nix + ../../modules/home-manager/code.nix + + ../../modules/home-manager/dev.nix + ../../modules/home-manager/fish.nix + + ../../modules/home-manager/kubectl.nix + ../../modules/home-manager/macos-fixes.nix + ../../modules/home-manager/nh.nix + ../../modules/home-manager/obsidian.nix + ../../modules/home-manager/work + ]; +} diff --git a/users/remy_usb/default.nix b/users/remy_usb/default.nix index e519669..1658482 100644 --- a/users/remy_usb/default.nix +++ b/users/remy_usb/default.nix @@ -27,6 +27,7 @@ with lib.hm.gvariant; ../../modules/home-manager/kubectl.nix ../../modules/home-manager/obsidian.nix ../../modules/home-manager/owncloud-client.nix + ../../modules/home-manager/nh.nix ../../modules/home-manager/ssh.nix ../../modules/home-manager/stylix.nix ../../modules/home-manager/thunderbird.nix diff --git a/users/remy_yoga/default.nix b/users/remy_yoga/default.nix index 708f65a..29a083d 100644 --- a/users/remy_yoga/default.nix +++ b/users/remy_yoga/default.nix @@ -30,6 +30,7 @@ with lib.hm.gvariant; ../../modules/home-manager/kitty.nix ../../modules/home-manager/kubectl.nix ../../modules/home-manager/launcher.nix + ../../modules/home-manager/nh.nix ../../modules/home-manager/obsidian.nix ../../modules/home-manager/owncloud-client.nix ../../modules/home-manager/quickshell