From 6bfa5e0b73bb37dd91bb3bc0e52a773305387ac3 Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Tue, 26 Nov 2024 14:03:41 +0100 Subject: [PATCH] Make pianonix work --- flake.lock | 384 +++++++++++++++--- flake.nix | 51 ++- .../x86_64-linux/julian@pianonix/default.nix | 28 +- overlays/input-flake-packages/default.nix | 5 + systems/aarch64-linux/pianonix/default.nix | 172 ++++++++ .../pianonix/hardware-configuration.nix | 36 ++ systems/x86_64-linux/pianonix/default.nix | 103 ----- .../x86_64-linux/pianonix/disko-config.nix | 41 -- .../pianonix/hardware-configuration.nix | 80 ---- 9 files changed, 616 insertions(+), 284 deletions(-) create mode 100644 overlays/input-flake-packages/default.nix create mode 100644 systems/aarch64-linux/pianonix/default.nix create mode 100644 systems/aarch64-linux/pianonix/hardware-configuration.nix delete mode 100644 systems/x86_64-linux/pianonix/default.nix delete mode 100644 systems/x86_64-linux/pianonix/disko-config.nix delete mode 100644 systems/x86_64-linux/pianonix/hardware-configuration.nix diff --git a/flake.lock b/flake.lock index ec459ab..945a4ef 100644 --- a/flake.lock +++ b/flake.lock @@ -65,6 +65,47 @@ "type": "github" } }, + "crane": { + "inputs": { + "nixpkgs": [ + "sheet-organizer", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1717469187, + "narHash": "sha256-UVvFGiWFGPfVXG7Xr6HPKChx9hhtzkGaGAS/Ph1Khjg=", + "owner": "ipetkov", + "repo": "crane", + "rev": "7e86136dc729cdf237aa59a5a02687bc0d1144b6", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "utils": "utils" + }, + "locked": { + "lastModified": 1727447169, + "narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, "devshell": { "inputs": { "nixpkgs": [ @@ -107,6 +148,26 @@ "type": "github" } }, + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732540163, + "narHash": "sha256-5EYzmoTpem2IB9JWzd41sL98pz3lyyCSTiCjv08i4Uk=", + "owner": "nix-community", + "repo": "disko", + "rev": "2ed5e30fc7e34adf455db8b02b9151d3922a54ea", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -156,20 +217,6 @@ } }, "flake-compat_4": { - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "revCount": 57, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" - } - }, - "flake-compat_5": { "flake": false, "locked": { "lastModified": 1696426674, @@ -185,7 +232,37 @@ "type": "github" } }, + "flake-compat_5": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { "flake": false, "locked": { "lastModified": 1650374568, @@ -224,7 +301,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems_2" + "systems": "systems_4" }, "locked": { "lastModified": 1726560853, @@ -242,7 +319,7 @@ }, "flake-utils-plus": { "inputs": { - "flake-utils": "flake-utils_2" + "flake-utils": "flake-utils_3" }, "locked": { "lastModified": 1715533576, @@ -261,7 +338,25 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_3" + "systems": "systems_5" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_6" }, "locked": { "lastModified": 1694529238, @@ -279,7 +374,7 @@ }, "git-hooks": { "inputs": { - "flake-compat": "flake-compat_5", + "flake-compat": "flake-compat_6", "gitignore": "gitignore_3", "nixpkgs": [ "nixvim", @@ -450,17 +545,17 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems", + "systems": "systems_2", "xdph": "xdph" }, "locked": { - "lastModified": 1732291262, - "narHash": "sha256-EDTvzp9ExAljyfESZZN8UQM08bpYvI2hFTaXivp3frg=", + "lastModified": 1732545731, + "narHash": "sha256-nRit2lb7kha7bcNB6pwhySbpI7Tjc1PLnkJvayBiJr8=", "ref": "refs/heads/main", - "rev": "745a82ce8ab19d958e344f5925bb1dc8ea7d6a53", - "revCount": 5488, + "rev": "268778823676ef2bbda42050d78946e1fc27fc31", + "revCount": 5497, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -605,6 +700,47 @@ "type": "github" } }, + "music-reader": { + "inputs": { + "naersk": "naersk", + "nixpkgs": [ + "nixpkgs" + ], + "utils": "utils_2" + }, + "locked": { + "lastModified": 1732479786, + "narHash": "sha256-N2NxDB5ggCUzeGZKA5CL5IKu/tuMDTDusacMy1ua+SQ=", + "ref": "refs/heads/master", + "rev": "c8795588d83f1238637e60a0e1a484402502df53", + "revCount": 50, + "type": "git", + "url": "https://gitlab.julian-mutter.de/julian/music-reader" + }, + "original": { + "type": "git", + "url": "https://gitlab.julian-mutter.de/julian/music-reader" + } + }, + "naersk": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1698420672, + "narHash": "sha256-/TdeHMPRjjdJub7p7+w55vyABrsJlt5QkznPYy55vKA=", + "owner": "nix-community", + "repo": "naersk", + "rev": "aeb58d5e8faead8980a807c840232697982d47b9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "naersk", + "type": "github" + } + }, "nix-colors": { "inputs": { "base16-schemes": "base16-schemes", @@ -667,17 +803,17 @@ }, "nix-matlab": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1731942113, - "narHash": "sha256-BQWjXeukGYAMxsxUV9QEDz93GWEQ+nzfoe6FXvk2ygU=", + "lastModified": 1732460506, + "narHash": "sha256-BE5aJOUwTINKg80xQhVeTwELCXpvQ3NCFynQ9Uzbcd0=", "owner": "doronbehar", "repo": "nix-matlab", - "rev": "eec33c6addd18912889d8a19bb49ce3428935abb", + "rev": "0a764e005f1311dc4a0e9cfa3193afcbfeda7a7a", "type": "gitlab" }, "original": { @@ -709,18 +845,34 @@ "type": "github" } }, - "nixpkgs": { + "nixos-hardware": { "locked": { - "lastModified": 1731676054, - "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=", + "lastModified": 1732483221, + "narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add", + "repo": "nixos-hardware", + "rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1702272962, + "narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -789,6 +941,36 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1731676054, + "narHash": "sha256-OZiZ3m8SCMfh3B6bfGC/Bm4x3qc1m2SVEAlkV6iY7Yg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5e4fbfb6b3de1aa2872b76d49fafc942626e2add", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1704842529, + "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1731797254, "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=", @@ -807,7 +989,7 @@ "nixvim": { "inputs": { "devshell": "devshell_2", - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_5", "flake-parts": "flake-parts", "git-hooks": "git-hooks", "home-manager": "home-manager_2", @@ -834,7 +1016,7 @@ }, "pre-commit-hooks": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "gitignore": "gitignore", "nixpkgs": [ "hyprland", @@ -858,7 +1040,7 @@ }, "pre-commit-hooks_2": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "gitignore": "gitignore_2", "nixpkgs": [ "nix-topology", @@ -886,36 +1068,63 @@ "root": { "inputs": { "alacritty-theme": "alacritty-theme", + "deploy-rs": "deploy-rs", + "disko": "disko", "home-manager": "home-manager", "hyprland": "hyprland", "hyprland-plugins": "hyprland-plugins", + "music-reader": "music-reader", "nix-colors": "nix-colors", "nix-ld": "nix-ld", "nix-matlab": "nix-matlab", "nix-topology": "nix-topology", - "nixpkgs": "nixpkgs_2", + "nixos-hardware": "nixos-hardware", + "nixpkgs": "nixpkgs_4", "nixpkgs-stable": "nixpkgs-stable_2", "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", + "sheet-organizer": "sheet-organizer", "snowfall-lib": "snowfall-lib", "sops-nix": "sops-nix", "yazi-flavors": "yazi-flavors" } }, + "sheet-organizer": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732563271, + "narHash": "sha256-YvNdoK/FvH34DZQqR4V2RoFN4q7q1QQQgV8Rvv3HqfY=", + "ref": "refs/heads/master", + "rev": "26133a692f2b218e54b98f1f21335ba43f2ee086", + "revCount": 68, + "type": "git", + "url": "https://gitlab.julian-mutter.de/julian/sheet-organizer" + }, + "original": { + "type": "git", + "url": "https://gitlab.julian-mutter.de/julian/sheet-organizer" + } + }, "snowfall-lib": { "inputs": { - "flake-compat": "flake-compat_6", + "flake-compat": "flake-compat_7", "flake-utils-plus": "flake-utils-plus", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1730136121, - "narHash": "sha256-tfVayj13Zw+zzOKrmJhnvBod7Hdb9ixBR6/4GUlyMA0=", + "lastModified": 1732544274, + "narHash": "sha256-qvzLIxuqukl0nxpXHEh5+iw1BLeLxYOwRC0+7cFUbPo=", "owner": "snowfallorg", "repo": "lib", - "rev": "dd348182c1a010993e68004eada86cf0341fe2c4", + "rev": "cfeacd055545ab5de0ecfd41e09324dcd8fb2bbb", "type": "github" }, "original": { @@ -945,6 +1154,21 @@ } }, "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", @@ -959,7 +1183,7 @@ "type": "github" } }, - "systems_2": { + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -974,7 +1198,37 @@ "type": "github" } }, - "systems_3": { + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1010,6 +1264,42 @@ "type": "github" } }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ @@ -1054,11 +1344,11 @@ "yazi-flavors": { "flake": false, "locked": { - "lastModified": 1731512520, - "narHash": "sha256-O6lYGY1DdMUTG9rrB+1R2i4KFgDEWsksp5MYbDmAvJo=", + "lastModified": 1732522261, + "narHash": "sha256-zqbwE8SvY9nQyGt0NDxK9OlFMAJ5EHtTeEDZtpb1FuA=", "owner": "yazi-rs", "repo": "flavors", - "rev": "4a3082f4e96914f2fd9c5e42714c27173526fbb3", + "rev": "c04be98a3fde8787da4a7b07dec65451b40ee600", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7132fdf..8cff773 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,10 @@ nixpkgs = nixpkgs-stable; + deploy-rs.url = "github:serokell/deploy-rs"; + + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; @@ -17,6 +21,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + disko = { + url = "github:nix-community/disko"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + alacritty-theme = { url = "github:alacritty/alacritty-theme"; flake = false; @@ -54,6 +63,13 @@ nix-ld.url = "github:Mic92/nix-ld"; nix-ld.inputs.nixpkgs.follows = "nixpkgs"; + + ## My projects + sheet-organizer.url = "git+https://gitlab.julian-mutter.de/julian/sheet-organizer"; + sheet-organizer.inputs.nixpkgs.follows = "nixpkgs"; + + music-reader.url = "git+https://gitlab.julian-mutter.de/julian/music-reader"; + music-reader.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = @@ -94,20 +110,33 @@ systems.modules.nixos = with inputs; [ nix-topology.nixosModules.default + sops-nix.nixosModules.sops disko.nixosModules.disko ]; + systems.hosts.pianonix.modules = with inputs; [ nixos-hardware.nixosModules.raspberry-pi-4 ]; - topology = - with inputs; - let - host = self.nixosConfigurations.${builtins.head (builtins.attrNames self.nixosConfigurations)}; - in - import nix-topology { - inherit (host) pkgs; # Only this package set must include nix-topology.overlays.default - modules = [ - (import ./topology { inherit (host) config; }) - { inherit (self) nixosConfigurations; } - ]; + # topology = + # with inputs; + # let + # host = self.nixosConfigurations.${builtins.head (builtins.attrNames self.nixosConfigurations)}; + # in + # import nix-topology { + # inherit (host) pkgs; # Only this package set must include nix-topology.overlays.default + # modules = [ + # (import ./topology { inherit (host) config; }) + # { inherit (self) nixosConfigurations; } + # ]; + # }; + + # deploy-rs node configuration + deploy.nodes.pianonix = { + hostname = "pianonix.local"; + profiles.system = { + sshUser = "root"; + user = "root"; + path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos inputs.self.nixosConfigurations.pianonix; + confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services }; + }; }; } diff --git a/homes/x86_64-linux/julian@pianonix/default.nix b/homes/x86_64-linux/julian@pianonix/default.nix index 8951c30..5d65147 100644 --- a/homes/x86_64-linux/julian@pianonix/default.nix +++ b/homes/x86_64-linux/julian@pianonix/default.nix @@ -9,7 +9,7 @@ # Additional metadata is provided by Snowfall Lib. namespace, # The namespace used for your flake, defaulting to "internal" if not set. - home, # The home architecture for this host (eg. `x86_64-linux`). + home, target, # The Snowfall Lib target for this home (eg. `x86_64-home`). format, # A normalized name for the home target (eg. `home`). virtual, # A boolean to determine whether this home is a virtual target using nixos-generators. @@ -18,7 +18,7 @@ # All other arguments come from the home home. config, ... -}: +}@arguments: { home.username = "julian"; home.homeDirectory = "/home/julian"; @@ -39,6 +39,30 @@ fonts.enable = true; }; + # Prevent screen from going blank (check these settings with `xset q`) + # And disable bell sound (b) + xsession.initExtra = '' + ${pkgs.xorg.xset}/bin/xset s off + ${pkgs.xorg.xset}/bin/xset -dpms + ${pkgs.xorg.xset}/bin/xset b off + ''; + + services.syncthing.tray.enable = true; + services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available + + home.packages = with pkgs; [ + music-reader + sheet-organizer + ]; + + # Autostart link + home.file = { + ".config/autostart/sheet-organizer.desktop".source = "${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop"; + ".config/sheet-organizer/config.toml".text = '' + working_directory = "/home/julian/Klavier" + ''; + }; + # Let Home Manager install and manage itself. programs.home-manager.enable = true; diff --git a/overlays/input-flake-packages/default.nix b/overlays/input-flake-packages/default.nix new file mode 100644 index 0000000..38fcdd0 --- /dev/null +++ b/overlays/input-flake-packages/default.nix @@ -0,0 +1,5 @@ +{ inputs, ... }: +final: prev: { + sheet-organizer = "inputs.sheet-organizer.defaultPackage.${prev.system}"; + music-reader = "inputs.music-reader.defaultPackage.${prev.system}"; +} diff --git a/systems/aarch64-linux/pianonix/default.nix b/systems/aarch64-linux/pianonix/default.nix new file mode 100644 index 0000000..dab2f7c --- /dev/null +++ b/systems/aarch64-linux/pianonix/default.nix @@ -0,0 +1,172 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ + lib, + inputs, + config, + pkgs, + ... +}: +{ + imports = [ ./hardware-configuration.nix ]; + + # disko.devices.disk.main.device = "/dev/mmcblk1"; + + networking.networkmanager.enable = true; + # networking.wireless.enable = true; + # networking.wireless.environmentFile = config.sops.secrets."wifi/pianonix".path; + # networking.wireless.networks = { + # "@SSID@".psk = "@PSK@"; + # }; + networking.hostName = "pianonix"; # Define your hostname. + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + modules = { + nix-settings.enable = true; + xserver-defaults.enable = true; + keymap.enable = true; + builder.enable = false; + # system.boot-efi.enable = true; + sound.enable = true; + + locales.enable = true; + pcmanfm.enable = true; + + # i3.enable = true; + # gdm.enable = true; + redshift.enable = true; + + # wayland.enable = true; + # hyprland.enable = true; + # tuigreet.enable = true; + + # virtualbox.enable = true; + users-julian.enable = true; + syncthing = { + enable = true; + overrideSettings = true; + }; + # xdg-portal.enable = true; + polkit.enable = true; + keyring.enable = true; + }; + + users.mutableUsers = false; + users.users.julian.hashedPasswordFile = config.sops.secrets."password/pianonix".path; + + # Enable the Desktop Environment. + # services.xserver.displayManager.lightdm.enable = true; + services.displayManager.autoLogin = { + enable = true; + user = "julian"; + }; + + boot.loader.timeout = 1; # Set boot loader timeout to 1s + + programs.dconf.enable = true; + # De-facto disable network manager, which is enabled by gnome + # networking.networkmanager.unmanaged = [ "*" ]; + services.xserver.desktopManager = { + xfce = { + enable = true; + }; + }; + + services.xserver.xautolock.enable = false; + services.xserver.desktopManager.xfce.enableScreensaver = false; + + # xdg.portal.lxqt.enable = true; + + services.openssh = { + enable = true; + # require public key authentication for better security + settings.PasswordAuthentication = false; + settings.KbdInteractiveAuthentication = false; + settings.PermitRootLogin = "yes"; + }; + users.users."root".openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDVk/m4ydcYXzHxTWeNw2MlwxKU+JirTVOeHsYR4wdTokwYyNWZ3/zPcU4+XekSRatwJW1LJYrZ1Y5IJkobzgnOvYVI7SXZ1Tbzb1kAcnChSt+Dp/pKdMPZ8yY3PTFZh+R5F3rWFA/YZqTRhh0vuxPIVbLl7zOPExWwYGn9crkZaYZvKHVvgE5660hXo9pxbUKsSs+DIy/AE7gfKiZLusY95nk9T/jZ7Vmhl0UsF0RiDsfxgE664/vEKe8b+82kKCDt5nJVe8THSrjaw4+NUhef6R8UoUO1/Pn4TKq3Gil3Z36wPEPdkw2lYzX+d1EFyaC3hZJedSUfdFliPOejIbNvvhPBBD1wAGxxyuJZB5KLwWN7/efwCgw45buLbVfUuwwug7K7GK84A3yzqClbZKKv8rYdO04UG64A+Taq2LeyxQIDjygTgGk/1j/0Neb1RO0FbjlbTeNMZ54P+u7BTEcikJCsbFeseWDtYzupQtLt96KMbcdRgHy0CTGqFHE+my8= julian@julian-aspi" + ]; + + # Do not alway generate man-cache, making builds much faster + documentation.man.generateCaches = false; + + # MDNS on local network + services.avahi = { + enable = true; + nssmdns4 = true; + publish.enable = true; + publish.addresses = true; + }; + + services.syncthing.key = config.sops.secrets."syncthing/pianonix/key".path; + services.syncthing.cert = config.sops.secrets."syncthing/pianonix/cert".path; + services.syncthing.settings = { + devices = { + "aspi-nix" = { + id = "DM5QRYU-ILJ4XYB-4V6NZDG-RAMVOND-3RSDSYR-52TW6RW-3XIU333-T7FNAA3"; + }; + "pianonix" = { + id = "FD3XSFW-7LQSCIQ-KHZPLNQ-7VZYGKH-RJ2ZKTJ-BG67NRH-36TQIZM-CXDYWAH"; + }; + }; + folders = { + "Klavier" = { + path = "/home/julian/Klavier"; + id = "flc3m-q4gp2"; + devices = [ + "aspi-nix" + "pianonix" + ]; + }; + }; + }; + + # Packages needed as root + environment.systemPackages = with pkgs; [ + vim + htop + mc + ]; + + # VNC server + # services.x2goserver.enable = true; + + # networking.firewall.enable = false; + + # networking.firewall.allowedTCPPorts = [ + # 8000 + # 5901 + # ]; + + # Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI! + # If no user is logged in, the machine will power down after 20 minutes. + systemd.targets.sleep.enable = false; + systemd.targets.suspend.enable = false; + systemd.targets.hibernate.enable = false; + systemd.targets.hybrid-sleep.enable = false; + + ## Raspberry pi specific config + hardware.raspberry-pi."4" = { + fkms-3d.enable = true; + touch-ft5406.enable = true; + }; + # Prevent host becoming unreachable on wifi after some time (for raspberry pi) + networking.networkmanager.wifi.powersave = false; + # Enable audio devices on raspberry pi + # boot.kernelParams = [ + # "snd_bcm2835.enable_hdmi=1" + # "snd_bcm2835.enable_headphones=1" + # ]; + # boot.loader.raspberryPi.firmwareConfig = '' + # dtparam=audio=on + # ''; + + # ======================== DO NOT CHANGE THIS ======================== + system.stateVersion = "22.11"; + # ======================== DO NOT CHANGE THIS ======================== +} diff --git a/systems/aarch64-linux/pianonix/hardware-configuration.nix b/systems/aarch64-linux/pianonix/hardware-configuration.nix new file mode 100644 index 0000000..c21f1a1 --- /dev/null +++ b/systems/aarch64-linux/pianonix/hardware-configuration.nix @@ -0,0 +1,36 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + pkgs, + modulesPath, + ... +}: + +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.end0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlan0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; +} diff --git a/systems/x86_64-linux/pianonix/default.nix b/systems/x86_64-linux/pianonix/default.nix deleted file mode 100644 index 9b5f892..0000000 --- a/systems/x86_64-linux/pianonix/default.nix +++ /dev/null @@ -1,103 +0,0 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - -{ - lib, - inputs, - config, - pkgs, - ... -}: -{ - imports = [ ./disko-config.nix ]; - - disko.devices.disk.main.device = "/dev/sda"; - - networking.networkmanager.enable = true; - networking.hostName = "pianonix"; # Define your hostname. - - # Set your time zone. - time.timeZone = "Europe/Berlin"; - - modules = { - nix-settings.enable = true; - xserver-defaults.enable = true; - keymap.enable = true; - builder.enable = false; - system.boot-efi.enable = true; - sound.enable = true; - - locales.enable = true; - pcmanfm.enable = true; - - # i3.enable = true; - # gdm.enable = true; - redshift.enable = true; - - wayland.enable = true; - # hyprland.enable = true; - # tuigreet.enable = true; - - # virtualbox.enable = true; - users-julian.enable = true; - # syncthing.enable = true; - xdg-portal.enable = true; - polkit.enable = true; - keyring.enable = true; - }; - - users.mutableUsers = false; - users.users.root.hashedPassword = "$y$j9T$mDQgl0GARH9fKg01akW1V0$2E5Z4TVra0RbY.tO2B6rW2YnVtJ6tbzZkJRvGWciSkB"; - # no password - users.users.julian.hashedPassword = "$y$j9T$khuv2ubKt48fkWS754jkL1$/YSqi4mWV9ccfnMAWCF0yumnwZrJ/ddg2TZTuZaDsi8"; - - # Enable the Desktop Environment. - # services.xserver.displayManager.lightdm.enable = true; - services.displayManager.autoLogin = { - enable = true; - user = "julian"; - }; - - services.xserver.desktopManager = { - # xterm.enable = false; - lxqt = { - enable = true; - }; - }; - xdg.portal.lxqt.enable = true; - - services.openssh = { - enable = true; - # require public key authentication for better security - settings.PasswordAuthentication = false; - settings.KbdInteractiveAuthentication = false; - settings.PermitRootLogin = "yes"; - }; - users.users."root".openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDVk/m4ydcYXzHxTWeNw2MlwxKU+JirTVOeHsYR4wdTokwYyNWZ3/zPcU4+XekSRatwJW1LJYrZ1Y5IJkobzgnOvYVI7SXZ1Tbzb1kAcnChSt+Dp/pKdMPZ8yY3PTFZh+R5F3rWFA/YZqTRhh0vuxPIVbLl7zOPExWwYGn9crkZaYZvKHVvgE5660hXo9pxbUKsSs+DIy/AE7gfKiZLusY95nk9T/jZ7Vmhl0UsF0RiDsfxgE664/vEKe8b+82kKCDt5nJVe8THSrjaw4+NUhef6R8UoUO1/Pn4TKq3Gil3Z36wPEPdkw2lYzX+d1EFyaC3hZJedSUfdFliPOejIbNvvhPBBD1wAGxxyuJZB5KLwWN7/efwCgw45buLbVfUuwwug7K7GK84A3yzqClbZKKv8rYdO04UG64A+Taq2LeyxQIDjygTgGk/1j/0Neb1RO0FbjlbTeNMZ54P+u7BTEcikJCsbFeseWDtYzupQtLt96KMbcdRgHy0CTGqFHE+my8= julian@julian-aspi" - ]; - - # Packages needed as root - environment.systemPackages = with pkgs; [ - vim - htop - mc - ]; - - ## Raspberry pi specific config - # Prevent host becoming unreachable on wifi after some time (for raspberry pi) - networking.networkmanager.wifi.powersave = false; - # Enable audio devices on raspberry pi - boot.kernelParams = [ - "snd_bcm2835.enable_hdmi=1" - "snd_bcm2835.enable_headphones=1" - ]; - boot.loader.raspberryPi.firmwareConfig = '' - dtparam=audio=on - ''; - - # ======================== DO NOT CHANGE THIS ======================== - system.stateVersion = "22.11"; - # ======================== DO NOT CHANGE THIS ======================== -} diff --git a/systems/x86_64-linux/pianonix/disko-config.nix b/systems/x86_64-linux/pianonix/disko-config.nix deleted file mode 100644 index d68cc85..0000000 --- a/systems/x86_64-linux/pianonix/disko-config.nix +++ /dev/null @@ -1,41 +0,0 @@ -# USAGE in your configuration.nix. -# Update devices to match your hardware. -# { -# imports = [ ./disko-config.nix ]; -# disko.devices.disk.main.device = "/dev/sda"; -# } -{ - disko.devices = { - disk = { - main = { - type = "disk"; - content = { - type = "gpt"; - partitions = { - boot = { - size = "1M"; - type = "EF02"; # for grub MBR - }; - ESP = { - size = "1G"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - }; - }; - root = { - size = "100%"; - content = { - type = "filesystem"; - format = "ext4"; - mountpoint = "/"; - }; - }; - }; - }; - }; - }; - }; -} diff --git a/systems/x86_64-linux/pianonix/hardware-configuration.nix b/systems/x86_64-linux/pianonix/hardware-configuration.nix deleted file mode 100644 index 8cd9409..0000000 --- a/systems/x86_64-linux/pianonix/hardware-configuration.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - config, - lib, - pkgs, - modulesPath, - ... -}: - -{ - - # TODO: This has to adapted yet !!! - - boot.initrd.availableKernelModules = [ - "vmd" - "xhci_pci" - "ahci" - "nvme" - "usb_storage" - "usbhid" - "sd_mod" - ]; - boot.initrd.kernelModules = [ "dm-snapshot" ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - boot.initrd.luks.devices = { - root = { - device = "/dev/disk/by-uuid/a4dc9a2c-725b-4252-8fbb-093a271c31ba"; - preLVM = true; - allowDiscards = true; - }; - }; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c"; - fsType = "btrfs"; - options = [ - "subvol=root" - "compress=zstd" - ]; - }; - - fileSystems."/home" = { - device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c"; - fsType = "btrfs"; - options = [ - "subvol=home" - "compress=zstd" - ]; - }; - - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c"; - fsType = "btrfs"; - options = [ - "subvol=nix" - "compress=zstd" - "noatime" - ]; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/7040-F37C"; - fsType = "vfat"; - }; - - swapDevices = [ { device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80"; } ]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -}