Compare commits

..

No commits in common. "config" and "nvim-lspconfig" have entirely different histories.

43 changed files with 774 additions and 607 deletions

5
bors.toml Normal file
View file

@ -0,0 +1,5 @@
status = [ "check" ]
required_approvals = 1
up_to_date_approvals = true

View file

@ -2,17 +2,16 @@
"nodes": { "nodes": {
"agenix": { "agenix": {
"inputs": { "inputs": {
"darwin": "darwin",
"nixpkgs": [ "nixpkgs": [
"nixos" "nixos"
] ]
}, },
"locked": { "locked": {
"lastModified": 1682101079, "lastModified": 1662046976,
"narHash": "sha256-MdAhtjrLKnk2uiqun1FWABbKpLH090oeqCSiWemtuck=", "narHash": "sha256-BrTReGRhkVm/Kmmf4zQrL+oYWy0sds/BDBgXNX1CL3c=",
"owner": "ryantm", "owner": "ryantm",
"repo": "agenix", "repo": "agenix",
"rev": "2994d002dcff5353ca1ac48ec584c7f6589fe447", "rev": "9f136ecfa5bf954538aed3245e4408cf87c85097",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -39,46 +38,24 @@
"darwin": { "darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"agenix", "nixos"
"nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1673295039, "lastModified": 1661882940,
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", "narHash": "sha256-4LaVFnV22WrOA0aolqqk9dXrM8crikcrLQt29G18F7M=",
"owner": "lnl7", "owner": "LnL7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943", "rev": "80cec5115aae74accc4ccfb9f84306d7863f0632",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "lnl7", "owner": "LnL7",
"ref": "master",
"repo": "nix-darwin", "repo": "nix-darwin",
"type": "github" "type": "github"
} }
}, },
"darwin_2": { "darwin_2": {
"inputs": {
"nixpkgs": [
"nixos"
]
},
"locked": {
"lastModified": 1682009832,
"narHash": "sha256-QdNOeFE7sI+0ddqVfn9vQDCUs7OdxhJ7evo9sdyP82Y=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "a1ee4d333b092bc055655fb06229eb3013755812",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"darwin_3": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"digga", "digga",
@ -149,7 +126,7 @@
"digga": { "digga": {
"inputs": { "inputs": {
"blank": "blank", "blank": "blank",
"darwin": "darwin_3", "darwin": "darwin_2",
"deploy": [ "deploy": [
"deploy" "deploy"
], ],
@ -159,7 +136,9 @@
"home-manager": [ "home-manager": [
"home" "home"
], ],
"latest": "latest", "latest": [
"latest"
],
"nixlib": [ "nixlib": [
"nixos" "nixos"
], ],
@ -171,16 +150,15 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1659623226, "lastModified": 1659622306,
"narHash": "sha256-ewEjGFjQf37ymcqBoO8q2SrvfKGgm8nW91NJ+0NQufw=", "narHash": "sha256-Kpfm2PNs+kZU0W7qcugoPATLG8I2P7FJFGTgsf1LJiU=",
"owner": "divnix", "owner": "divnix",
"repo": "digga", "repo": "digga",
"rev": "34877733b78cb9e8a1345328a7e1a380101bee41", "rev": "d1193743a535d7fbbc7f3eda4e51295b10bd4d2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "divnix", "owner": "divnix",
"ref": "home-manager-22.11",
"repo": "digga", "repo": "digga",
"type": "github" "type": "github"
} }
@ -191,11 +169,11 @@
"rust-analyzer-src": "rust-analyzer-src" "rust-analyzer-src": "rust-analyzer-src"
}, },
"locked": { "locked": {
"lastModified": 1682749232, "lastModified": 1662101031,
"narHash": "sha256-tZdhmgUIuSrRB8j1fTa5JVdewdNf0crNwDMnNIKfYqE=", "narHash": "sha256-dTlT6J6+Rv6zno/VhJusBwgV7iFNRUdY4GgH7BUPWYk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "30d4a659367f2399cdc9e813c516ae53d46ab266", "rev": "42e17909b3c69577303fd0c7ae138df3f4888de2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -239,11 +217,11 @@
"flake-compat_3": { "flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1668681692, "lastModified": 1648199409,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", "narHash": "sha256-JwPKdC2PoVBkG6E+eWw3j6BMR6sL3COpYWfif7RVb8Y=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1", "rev": "64a525ee38886ab9028e6f61790de0832aa3ef03",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -318,15 +296,12 @@
} }
}, },
"flake-utils_3": { "flake-utils_3": {
"inputs": {
"systems": "systems"
},
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1659877975,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401", "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -352,11 +327,11 @@
}, },
"flake-utils_5": { "flake-utils_5": {
"locked": { "locked": {
"lastModified": 1667395993, "lastModified": 1644229661,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -372,15 +347,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1682759296, "lastModified": 1656169755,
"narHash": "sha256-FgBfP1e+TnED0lT3L9G6KJ6j07xQElFMRdLIsmKQ0Ss=", "narHash": "sha256-Nlnm4jeQWEGjYrE6hxi/7HYHjBSZ/E0RtjCYifnNsWk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "27d89b49e3cd3c83b9609a6ff9173a9b8d2d9ad4", "rev": "4a3d01fb53f52ac83194081272795aa4612c2381",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-22.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -403,11 +379,11 @@
}, },
"latest": { "latest": {
"locked": { "locked": {
"lastModified": 1657356697, "lastModified": 1662019588,
"narHash": "sha256-sT38tcx7m0Quz+Uj6jzx+yRa2+EVW2C3cE0FkROXUzQ=", "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "87e7965bbcdbac3d103e3ed14ff04f719a4f7a58", "rev": "2da64a81275b68fdad38af669afeda43d401e94b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -417,22 +393,6 @@
"type": "github" "type": "github"
} }
}, },
"latest_2": {
"locked": {
"lastModified": 1682764772,
"narHash": "sha256-PU1Til56N5L2SNHSbNavjzbDlYs5THfQqVjXtUpZHgM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0c97d307e68209414977ae270db9d9afafde21b6",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"naersk": { "naersk": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -440,11 +400,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1679567394, "lastModified": 1659610603,
"narHash": "sha256-ZvLuzPeARDLiQUt6zSZFGOs+HZmE+3g4QURc8mkBsfM=", "narHash": "sha256-LYgASYSPYo7O71WfeUOaEUzYfzuXm8c8eavJcel+pfI=",
"owner": "nmattia", "owner": "nmattia",
"repo": "naersk", "repo": "naersk",
"rev": "88cd22380154a2c36799fe8098888f0f59861a15", "rev": "c6a45e4277fa58abd524681466d3450f896dc094",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -453,52 +413,29 @@
"type": "github" "type": "github"
} }
}, },
"nixgl": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixos"
]
},
"locked": {
"lastModified": 1676383589,
"narHash": "sha256-KCkWZXCjH+C4Kn7fUGSrEl5btk+sERHhZueSsvVbPWc=",
"owner": "guibou",
"repo": "nixGL",
"rev": "c917918ab9ebeee27b0dd657263d3f57ba6bb8ad",
"type": "github"
},
"original": {
"owner": "guibou",
"repo": "nixGL",
"type": "github"
}
},
"nixos": { "nixos": {
"locked": { "locked": {
"lastModified": 1682692304, "lastModified": 1662025319,
"narHash": "sha256-9/lyXN2BpHw+1xE+D2ySBSLMCHWqiWu5tPHBMRDib8M=", "narHash": "sha256-ZJlBQ7jXynq4+Jg9+DgOe8FJG8sDIeFFYP3V3K98KUs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "937a9d1ee7b1351d8c55fff6611a8edf6e7c1c37", "rev": "b82ccafb54163ab9024e893e578d840577785fea",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-unstable", "ref": "nixos-22.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1680876084, "lastModified": 1662092548,
"narHash": "sha256-eP9yxP0wc7XuVaODugh+ajgbFGaile2O1ihxiLxOuvU=", "narHash": "sha256-nmAbyJ5+DBXcNJ2Rcy/Gx84maqtLdr6xEe82+AXCaY8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "3006d2860a6ed5e01b0c3e7ffb730e9b293116e2", "rev": "786633331724f36967853b98d9100b5cfaa4d798",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -509,11 +446,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1682692304, "lastModified": 1662019588,
"narHash": "sha256-9/lyXN2BpHw+1xE+D2ySBSLMCHWqiWu5tPHBMRDib8M=", "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "937a9d1ee7b1351d8c55fff6611a8edf6e7c1c37", "rev": "2da64a81275b68fdad38af669afeda43d401e94b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -534,11 +471,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1672979485, "lastModified": 1654975372,
"narHash": "sha256-LrY0K1yya3nvRlGDc98wm68ozVj7E6a1EXXEr7eHp8E=", "narHash": "sha256-wkNZ16akgKViuZzE/IM+bux4uaJ04KIwUeexH8gBjgw=",
"owner": "berberman", "owner": "berberman",
"repo": "nvfetcher", "repo": "nvfetcher",
"rev": "0a9ac5fd07b52467d81163b1f8c94c12e5c9aff9", "rev": "d4b237c10f14f72f8266b0f658faad822e491e55",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -580,11 +517,11 @@
"pycdc": "pycdc" "pycdc": "pycdc"
}, },
"locked": { "locked": {
"lastModified": 1667669150, "lastModified": 1645880943,
"narHash": "sha256-woULzWmHqrpfSDCo10QhZOGa6rB+E9ZqL4cjwX6u8TA=", "narHash": "sha256-mNtN0sk6NJILwdzCFgRzZ5xVFmfCkNCryV0HaKWRlQ0=",
"ref": "refs/heads/mistress", "ref": "refs/heads/mistress",
"rev": "6ee2339943853341cdc07bc6505df5125a1c45c3", "rev": "8459beb3385a9c4f45d8b4ad58ad90c7a5f503e4",
"revCount": 5, "revCount": 4,
"type": "git", "type": "git",
"url": "https://im.badat.dev/bad/pwnix.git" "url": "https://im.badat.dev/bad/pwnix.git"
}, },
@ -596,11 +533,11 @@
"pycdc": { "pycdc": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1664922278, "lastModified": 1637645353,
"narHash": "sha256-whpsEjk/nnnAUH68kzZBCs7azA13B0FTUy5NuF7kQrA=", "narHash": "sha256-iLf0pwmIF13/IS+vzpudT5O54Jj933pBZi0gbiz6Ebc=",
"owner": "zrax", "owner": "zrax",
"repo": "pycdc", "repo": "pycdc",
"rev": "44a730f3a889503014fec94ae6e62d8401cb75e5", "rev": "99b35a114a6fb84352ca92802c1a26fb8692a7b0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -612,31 +549,29 @@
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"darwin": "darwin_2", "darwin": "darwin",
"deploy": "deploy", "deploy": "deploy",
"digga": "digga", "digga": "digga",
"fenix": "fenix", "fenix": "fenix",
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_3",
"home": "home", "home": "home",
"latest": "latest_2", "latest": "latest",
"naersk": "naersk", "naersk": "naersk",
"nixgl": "nixgl",
"nixos": "nixos", "nixos": "nixos",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nvfetcher": "nvfetcher", "nvfetcher": "nvfetcher",
"peerix": "peerix", "peerix": "peerix",
"pwnix": "pwnix", "pwnix": "pwnix"
"stable": "stable"
} }
}, },
"rust-analyzer-src": { "rust-analyzer-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1682710505, "lastModified": 1662066014,
"narHash": "sha256-03cthpkTbEdQF7wpmJjPuBvwcQ5eSV4jDfWj8Evg4Lk=", "narHash": "sha256-DE4FsE2sxd9nFtG+8+lnv/IBbtf+6rAlKjIdfpWN488=",
"owner": "rust-lang", "owner": "rust-lang",
"repo": "rust-analyzer", "repo": "rust-analyzer",
"rev": "370b72c7dd3dcdb1efe92224ab1622e44639cb07", "rev": "93c52e41ec0d297c7512adf5936d8c464c820618",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -646,37 +581,6 @@
"type": "github" "type": "github"
} }
}, },
"stable": {
"locked": {
"lastModified": 1682669017,
"narHash": "sha256-Vi+p4y3wnl0/4gcwTdmCO398kKlDaUrNROtf3GOD2NY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "7449971a3ecf857b4a554cf79b1d9dcc1a4647d8",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": { "utils": {
"locked": { "locked": {
"lastModified": 1637014545, "lastModified": 1637014545,

View file

@ -4,23 +4,23 @@
nixConfig.extra-experimental-features = "nix-command flakes"; nixConfig.extra-experimental-features = "nix-command flakes";
inputs = inputs =
{ {
stable.url = "github:nixos/nixpkgs/nixos-22.11"; nixos.url = "github:nixos/nixpkgs/nixos-22.05";
nixos.url = "github:nixos/nixpkgs/nixos-unstable"; latest.url = "github:nixos/nixpkgs/nixos-unstable";
latest.url = "github:nixos/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
digga.url = "github:divnix/digga/home-manager-22.11"; digga.url = "github:divnix/digga";
digga.inputs.nixpkgs.follows = "nixos"; digga.inputs.nixpkgs.follows = "nixos";
digga.inputs.nixpkgs-unstable.follows = "latest"; digga.inputs.nixpkgs-unstable.follows = "latest";
digga.inputs.latest.follows = "latest";
digga.inputs.nixlib.follows = "nixos"; digga.inputs.nixlib.follows = "nixos";
digga.inputs.home-manager.follows = "home"; digga.inputs.home-manager.follows = "home";
digga.inputs.deploy.follows = "deploy"; digga.inputs.deploy.follows = "deploy";
home.url = "github:nix-community/home-manager"; home.url = "github:nix-community/home-manager/release-22.05";
#home.url = "github:nix-community/home-manager/release-22.05";
# home.url = "path:/home/mae/home-manager"; # home.url = "path:/home/mae/home-manager";
home.inputs.nixpkgs.follows = "latest"; home.inputs.nixpkgs.follows = "latest";
home.inputs.utils.follows = "flake-utils";
darwin.url = "github:LnL7/nix-darwin"; darwin.url = "github:LnL7/nix-darwin";
darwin.inputs.nixpkgs.follows = "nixos"; darwin.inputs.nixpkgs.follows = "nixos";
@ -45,13 +45,10 @@
nixos-hardware.url = "github:nixos/nixos-hardware"; nixos-hardware.url = "github:nixos/nixos-hardware";
fenix.url = "github:nix-community/fenix"; fenix.url = "github:nix-community/fenix";
# fenix.inputs.nixpkgs.follows = "nixos";
pwnix.url = "git+https://im.badat.dev/bad/pwnix.git"; pwnix.url = "git+https://im.badat.dev/bad/pwnix.git";
pwnix.inputs.nixpkgs.follows = "nixos"; pwnix.inputs.nixpkgs.follows = "nixos";
nixgl.url = "github:guibou/nixGL";
nixgl.inputs.nixpkgs.follows = "nixos";
nixgl.inputs.flake-utils.follows = "flake-utils";
}; };
outputs = outputs =
@ -65,7 +62,6 @@
, nvfetcher , nvfetcher
, deploy , deploy
, peerix , peerix
, nixgl
, ... , ...
} @ inputs: } @ inputs:
digga.lib.mkFlake digga.lib.mkFlake
@ -79,12 +75,12 @@
imports = [ (digga.lib.importOverlays ./overlays) ]; imports = [ (digga.lib.importOverlays ./overlays) ];
overlays = [ overlays = [
# fenix.overlay breaks the cache, because it uses the system nixpkgs # fenix.overlay breaks the cache, because it uses the system nixpkgs
(_: super: let pkgs = fenix.inputs.nixpkgs.legacyPackages.${super.system}; in fenix.overlays.default pkgs pkgs) (_: super: let pkgs = fenix.inputs.nixpkgs.legacyPackages.${super.system}; in fenix.overlay pkgs pkgs)
agenix.overlays.default agenix.overlay
nvfetcher.overlay
./pkgs/default.nix ./pkgs/default.nix
peerix.overlay peerix.overlay
nixgl.overlay
]; ];
}; };
latest = { }; latest = { };
@ -138,7 +134,9 @@
base = [ direnv git ]; base = [ direnv git ];
}; };
}; };
users = digga.lib.rakeLeaves ./users; users = {
nixos = { suites, ... }: { imports = suites.base; };
}; # digga.lib.importers.rakeLeaves ./users/hm;
}; };
homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations; homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations;

18
hosts/bootstrap.nix Normal file
View file

@ -0,0 +1,18 @@
{ profiles, ... }:
{
# build with: `bud build bootstrap bootstrapIso`
# reachable on the local link via ssh root@fe80::47%eno1
# where 'eno1' is replaced by your own machine's network
# interface that has the local link to the target machine
imports = [
# profiles.networking
profiles.core
profiles.users.root # make sure to configure ssh keys
profiles.users.nixos
];
boot.loader.systemd-boot.enable = true;
# will be overridden by the bootstrapIso instrumentation
fileSystems."/" = { device = "/dev/disk/by-label/nixos"; };
}

View file

@ -1,54 +0,0 @@
{ suites, pkgs, ... }:
{
imports = suites.lap;
system.stateVersion = "22.11";
boot.loader.efi.canTouchEfiVariables = true;
hardware.cpu.intel.updateMicrocode = false;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{
device = "/dev/disk/by-uuid/4727151b-8c08-4d35-b9e5-36575a4f3d12";
fsType = "btrfs";
};
fileSystems."/boot" =
{
device = "/dev/disk/by-uuid/5303-C8B9";
fsType = "vfat";
};
boot.kernelParams = [ "intel_pstate=no_hwp" ];
fileSystems."/".options = [ "noatime" "nodiratime" "discard" ];
boot.loader.grub = {
enable = true;
version = 2;
device = "nodev";
efiSupport = true;
enableCryptodisk = true;
gfxmodeEfi = "1024x768";
};
boot.loader.efi.efiSysMountPoint = "/boot";
boot.initrd.luks.devices = {
root = {
device = "/dev/disk/by-uuid/e0b1eb49-9bc5-462e-9576-52f59475aad3";
};
};
hardware.opengl.extraPackages = with pkgs; [
intel-ocl
intel-compute-runtime
];
networking.networkmanager.enable = true;
}

5
overlays/manix.nix Normal file
View file

@ -0,0 +1,5 @@
final: prev: {
manix = prev.manix.overrideAttrs (o: rec{
inherit (prev.sources.manix) pname version src;
});
}

View file

@ -3,10 +3,35 @@ let
latest = channels.latest; latest = channels.latest;
in in
{ {
__dontExport = true; # overrides clutter up actual creations __dontExport = true; # overrides clutter up actual creations
inherit (latest) inherit (latest)
asdf; cachix
nix-direnv
minetest
dhall
discord
element-desktop
rage
ghidra
podman
nixpkgs-fmt
qutebrowser
nvfetcher
signal-desktop
delve
neovim
polymc
lutris
sumneko-lua-language-server
cargo-crev
cargo-fuzz
tdesktop
vimPlugins
neovim-unwrapped;
latest = latest; latest = latest;
haskellPackages = prev.haskellPackages.override haskellPackages = prev.haskellPackages.override

View file

@ -8,10 +8,6 @@
rocm-opencl-runtime rocm-opencl-runtime
amdvlk amdvlk
]; ];
hardware.opengl.extraPackages32 = with pkgs; [
driversi686Linux.amdvlk
];
boot.initrd.kernelModules = [ "amdgpu" ]; boot.initrd.kernelModules = [ "amdgpu" ];
services.xserver.videoDrivers = [ "amdgpu" ];
boot.kernelModules = [ "kvm-amd" ]; boot.kernelModules = [ "kvm-amd" ];
} }

View file

@ -1,6 +1,7 @@
{ ... }: { ... }:
{ {
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.bluetooth.hsphfpd.enable = true;
services.blueman.enable = true; services.blueman.enable = true;
services.ofono.enable = true; services.ofono.enable = true;
} }

View file

@ -2,44 +2,16 @@
let inherit (lib) fileContents; let inherit (lib) fileContents;
in in
{ {
# Cachix # Cachix
nix = { nix = {
settings = { binaryCaches = [
substituters = [
"https://cache.nixos.org/" "https://cache.nixos.org/"
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
]; ];
trusted-public-keys = [ binaryCachePublicKeys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
]; ];
trusted-users = [ "root" "@wheel" ];
system-features = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
sandbox = true;
auto-optimise-store = true;
};
registry = {
nixpkgs.flake = self.inputs.nixos;
latest.flake = self.inputs.latest;
stable.flake = self.inputs.stable;
pwnix.flake = self.inputs.pwnix;
};
# Improve nix store disk usage
gc.automatic = true;
optimise.automatic = true;
# Generally useful nix option defaults
extraOptions = ''
keep-outputs = true
keep-derivations = true
fallback = true
'';
}; };
# For rage encryption, all hosts need a ssh key pair # For rage encryption, all hosts need a ssh key pair
@ -48,6 +20,11 @@ in
openFirewall = lib.mkDefault false; openFirewall = lib.mkDefault false;
}; };
# This is just a representation of the nix default
nix.systemFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
nix.registry.nixpkgs.flake = self.inputs.nixos;
nix.registry.latest.flake = self.inputs.latest;
nix.registry.pwnix.flake = self.inputs.pwnix;
# Fix zsh autocompletion with home-manager # Fix zsh autocompletion with home-manager
environment.pathsToLink = [ "/share/zsh" ]; environment.pathsToLink = [ "/share/zsh" ];
@ -115,6 +92,27 @@ in
}; };
}; };
nix = {
# Improve nix store disk usage
autoOptimiseStore = true;
gc.automatic = true;
optimise.automatic = true;
# Prevents impurities in builds
useSandbox = true;
# give root and @wheel special privileges with nix
trustedUsers = [ "root" "@wheel" ];
# Generally useful nix option defaults
extraOptions = ''
keep-outputs = true
keep-derivations = true
fallback = true
'';
};
time.timeZone = "Europe/Warsaw"; time.timeZone = "Europe/Warsaw";
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";

View file

@ -2,13 +2,15 @@
networking = { networking = {
nameservers = [ "127.0.0.1" "::1" ]; nameservers = [ "127.0.0.1" "::1" ];
resolvconf.useLocalResolver = true; resolvconf.useLocalResolver = true;
# If using dhcpcd:
dhcpcd.extraConfig = "nohook resolv.conf";
# If using NetworkManager: # If using NetworkManager:
# networkmanager.dns = "none"; networkmanager.dns = "none";
}; };
services.dnscrypt-proxy2 = { services.dnscrypt-proxy2 = {
enable = true; enable = true;
settings = { settings = {
ipv6_servers = true; ipv6_servers = false;
require_dnssec = true; require_dnssec = true;
cloaking_rules = ./cloaking_rules; cloaking_rules = ./cloaking_rules;
@ -17,7 +19,7 @@
"https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md" "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
"https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md" "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
]; ];
cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md"; cache_file = "/var/lib/dnscrypt-proxy2/public-resolvers.md";
minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3"; minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
}; };
}; };
@ -26,8 +28,4 @@
enable = true; enable = true;
bindInterface = false; bindInterface = false;
}; };
services.avahi = {
enable = true;
nssmdns = true;
};
} }

View file

@ -6,8 +6,9 @@
steam-run steam-run
minetest minetest
mumble mumble
polymc
(retroarch.override { cores = [ libretro.snes9x ]; }) (retroarch.override { cores = [ libretro.snes9x ]; })
olympus olympus
godot_4 godot
]; ];
} }

View file

@ -10,6 +10,33 @@
pulse.enable = true; pulse.enable = true;
# If you want to use JACK applications, uncomment this # If you want to use JACK applications, uncomment this
#jack.enable = true; #jack.enable = true;
wireplumber.enable = true;
#bluetooth config
media-session.config.bluez-monitor.rules = [
{
# Matches all cards
matches = [{ "device.name" = "~bluez_card.*"; }];
actions = {
"update-props" = {
"bluez5.reconnect-profiles" = [ "hfp_hf" "hsp_hs" "a2dp_sink" ];
# mSBC is not expected to work on all headset + adapter combinations.
"bluez5.msbc-support" = true;
# SBC-XQ is not expected to work on all headset + adapter combinations.
"bluez5.sbc-xq-support" = true;
};
};
}
{
matches = [
# Matches all sources
{ "node.name" = "~bluez_input.*"; }
# Matches all outputs
{ "node.name" = "~bluez_output.*"; }
];
actions = {
"node.pause-on-idle" = false;
};
}
];
}; };
} }

View file

@ -1,5 +0,0 @@
{pkgs, ...}: {
boot.enableContainers = false;
virtualisation.podman.enable = true;
virtualisation.podman.defaultNetwork.settings.dns_enabled = true;
}

View file

@ -4,5 +4,6 @@
hardware.pulseaudio = { hardware.pulseaudio = {
enable = true; enable = true;
package = pkgs.pulseaudioFull; package = pkgs.pulseaudioFull;
extraModules = [ pkgs.pulseaudio-modules-bt ];
}; };
} }

View file

@ -7,7 +7,6 @@
cargo-watch cargo-watch
cargo-fuzz cargo-fuzz
cargo-expand cargo-expand
cargo-nextest
]; ];
environment.variables.RUST_SRC_PATH = "${pkgs.fenix.latest.rust-src}/lib/rustlib/src/rust/library/"; environment.variables.RUST_SRC_PATH = "${pkgs.fenix.latest.rust-src}/lib/rustlib/src/rust/library/";
} }

View file

@ -1,12 +1,10 @@
{ ... }: { { ... }: {
services.openssh = { services.openssh = {
enable = true; enable = true;
settings = { forwardX11 = true;
X11Forwarding = true; permitRootLogin = "no";
PermitRootLogin = "no";
PasswordAuthentication = false;
};
startWhenNeeded = true; startWhenNeeded = true;
openFirewall = true; openFirewall = true;
passwordAuthentication = false;
}; };
} }

View file

@ -5,7 +5,6 @@
}; };
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
virtualisation.waydroid.enable = true;
virtualisation.spiceUSBRedirection.enable = true; virtualisation.spiceUSBRedirection.enable = true;
programs.dconf.enable = true; programs.dconf.enable = true;
environment.systemPackages = with pkgs; [ virt-manager ]; environment.systemPackages = with pkgs; [ virt-manager ];

View file

@ -2,7 +2,7 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pavucontrol pavucontrol
signal-desktop signal-desktop
telegram-desktop tdesktop
firefox-wayland firefox-wayland
chromium chromium
nomacs nomacs
@ -10,7 +10,6 @@
gimp gimp
krita krita
inkscape inkscape
thunderbird
syncplay syncplay
pcmanfm pcmanfm
ark ark
@ -22,5 +21,6 @@
services.gvfs.enable = true; services.gvfs.enable = true;
services.udisks2.enable = true; services.udisks2.enable = true;
services.devmon.enable = true; services.devmon.enable = true;
virtualisation.waydroid.enable = true;
boot.supportedFilesystems = [ "ntfs" ]; boot.supportedFilesystems = [ "ntfs" ];
} }

View file

@ -1,7 +1,7 @@
{ profiles, ... }: { profiles, ... }:
with profiles; rec { with profiles; rec {
base = [ users.root core dns ]; base = [ users.root core dnscrypt ];
workstation = base ++ [ sway develop game profiles.workstation ssh flatpak torrents pwn tor rust virtualization java networkmanager pipewire flatpak tailscale podman users.mae ]; workstation = base ++ [ sway develop game profiles.workstation ssh flatpak torrents pwn tor rust virtualization java networkmanager pipewire flatpak peerix tailscale users.mae ];
desktop = workstation ++ [ amd ]; desktop = workstation ++ [ amd three_dee ];
lap = workstation ++ [ laptop bluetooth print ]; lap = workstation ++ [ laptop bluetooth print ];
} }

View file

@ -1,21 +1,19 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
programs.zsh.enable = true;
users.users.mae = { users.users.mae = {
uid = 1000; uid = 1000;
isNormalUser = true; isNormalUser = true;
hashedPassword = "$6$vyS4lqYbl3$OXztJnAC5ZayA4eCBSIRlYtsi9u1HnafsfNL28l4CJh0BISVlSj6D48CA80cshnvYW/EEzfEj7z4zTNFpJAT/."; hashedPassword = "$6$vyS4lqYbl3$OXztJnAC5ZayA4eCBSIRlYtsi9u1HnafsfNL28l4CJh0BISVlSj6D48CA80cshnvYW/EEzfEj7z4zTNFpJAT/.";
shell = pkgs.zsh; shell = pkgs.zsh;
extraGroups = [ "wheel" "video" "lp" "scanner" "adbusers" "render" "libvirtd" ]; extraGroups = [ "wheel" "video" "lp" "scanner" "adbusers" "render" "libvirtd" "podman" "docker" ];
}; };
home-manager.users.mae = { pkgs, ... }: { home-manager.users.mae = { pkgs, ... }: {
imports = [ ../profiles/core ../profiles/direnv ../profiles/git ../profiles/zsh ../profiles/neovim ../profiles/syncthing ../profiles/kdeconnect ../profiles/tmux ../profiles/mpv ../profiles/sway ../profiles/podman ]; imports = [ ../profiles/direnv ../profiles/git ../profiles/zsh ../profiles/neovim ../profiles/syncthing ../profiles/kdeconnect ../profiles/podman ../profiles/alacritty ../profiles/tmux ../profiles/mpv ../profiles/sway ];
mae.alacritty.enable = true;
home.sessionVariables = { home.sessionVariables = {
XDG_DATA_DIRS = "$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share"; XDG_DATA_DIRS = "$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share";
EDITOR = "${pkgs.neovim}/bin/nvim";
MOZ_ENABLE_WAYLAND = 1; MOZ_ENABLE_WAYLAND = 1;
}; };
home.stateVersion = "18.09"; home.stateVersion = "18.09";

View file

@ -1,33 +0,0 @@
{ pkgs, ... }: {
imports = [ ../profiles/core ../profiles/direnv ../profiles/zsh ../profiles/neovim ../profiles/syncthing ../profiles/kdeconnect ../profiles/tmux ../profiles/mpv ../profiles/sway ];
home.stateVersion = "22.11";
targets.genericLinux.enable = true;
home.packages = [ pkgs.home-manager pkgs.element-desktop pkgs.nixgl.nixGLIntel pkgs.nixgl.nixVulkanIntel ];
wayland.windowManager.sway.extraSessionCommands = ''
export WLR_NO_HARDWARE_CURSORS=1
'';
mae.alacritty = {
enable = true;
# libglWrapper = true;
};
home.sessionVariables = {
MOZ_ENABLE_WAYLAND = 1;
};
gtk = {
enable = true;
theme = {
name = "Arc-Dark";
package = pkgs.arc-theme;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
};
};
programs.go = {
enable = true;
goPath = ".local/go";
};
}

View file

@ -1,83 +0,0 @@
{ pkgs, lib, config, ... }:
let
cfg = config.mae.alacritty;
alacrittyLibGL = pkgs.symlinkJoin {
name = "alacritty-nixgl";
paths = [
(pkgs.writeShellScriptBin
"alacritty"
''
${pkgs.nixgl.nixGLIntel}/bin/nixGLIntel ${pkgs.alacritty}/bin/alacritty "$@"
'')
pkgs.alacritty
];
};
in
{
options.mae.alacritty = {
enable = lib.mkEnableOption "Enable the alacritty terminal";
libglWrapper = lib.mkOption {
default = false;
type = lib.types.bool;
description = "Wrap alacritty in libgl to make it work on non nixos systems";
};
};
config = lib.mkIf cfg.enable {
fonts.fontconfig.enable = true;
home.packages = [
(pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
];
programs.alacritty = {
package = lib.mkIf cfg.libglWrapper alacrittyLibGL;
enable = true;
settings = {
window = {
padding = {
x = 6;
y = 6;
};
};
font = {
normal = {
family = "JetBrainsMono Nerd Font";
};
size = 12;
};
colors = {
primary = {
background = "#161821";
foreground = "#d2d4de";
};
normal = {
black = "#161821";
red = "#e27878";
green = "#b4be82";
yellow = "#e2a478";
blue = "#84a0c6";
magenta = "#a093c7";
cyan = "#89b8c2";
white = "#c6c8d1";
};
bright = {
black = "#6b7089";
red = "#e98989";
green = "#c0ca8e";
yellow = "#e9b189";
blue = "#91acd1";
magenta = "#ada0d3";
cyan = "#95c4ce";
white = "#d2d4de";
};
};
cursor = {
style = "Block";
blinking = "On";
};
live_config_reload = false;
mouse = {
hide_when_typing = false;
};
};
};
};
}

View file

@ -1,20 +0,0 @@
{ lib, pkgs, config, ... }:
let
cfg = config.mae.nvim.dart;
in
with lib;
{
options.mae.nvim.dart.enable = lib.mkEnableOption "Enable dart support in neovim";
config = mkIf cfg.enable {
mae.nvim.lsp.servers.dartls = {
enable = true;
script = ''
{
cmd = { "${pkgs.latest.dart}/bin/dart", "language-server" },
}
'';
};
programs.neovim.plugins = with pkgs.vimPlugins; [ dart-vim-plugin ];
};
}

View file

@ -10,18 +10,13 @@ in
./go.nix ./go.nix
./rust.nix ./rust.nix
./nix.nix ./nix.nix
./python.nix
./clangd.nix ./clangd.nix
./elixir.nix
./dart.nix
./hexeditor.nix
]; ];
options.mae.nvim = { options.mae.nvim = {
enable = mkEnableOption "enable neovim"; enable = mkEnableOption "enable neovim";
}; };
config = { config = {
home.sessionVariables.EDITOR = "${pkgs.neovim}/bin/nvim";
programs.neovim = mkIf cfg.enable { programs.neovim = mkIf cfg.enable {
enable = true; enable = true;
vimdiffAlias = true; vimdiffAlias = true;
@ -35,6 +30,7 @@ in
config = "colorscheme iceberg"; config = "colorscheme iceberg";
} }
vim-sleuth vim-sleuth
]; ];
extraPackages = with pkgs; [ extraPackages = with pkgs; [
nodePackages.prettier nodePackages.prettier
@ -44,7 +40,6 @@ in
set termguicolors set termguicolors
set ic set ic
set mouse=
set number set number
set autoindent set autoindent

View file

@ -1,22 +0,0 @@
{ lib, pkgs, config, ... }:
let
cfg = config.mae.nvim.elixir;
in
with lib;
{
options.mae.nvim.elixir.enable = lib.mkEnableOption "Enable elixir support in neovim";
config = mkIf cfg.enable {
mae.nvim.lsp.servers.elixirls = {
enable = true;
script = ''
{
cmd = { "${pkgs.elixir_ls}/bin/elixir-ls" },
}
'';
};
home.packages = with pkgs; [ elixir_1_14 ];
home.sessionVariables."ELIXIR_ERL_OPTIONS" = "-kernel shell_history enabled";
programs.neovim.plugins = with pkgs.vimPlugins; [ vim-elixir ];
};
}

View file

@ -1,22 +0,0 @@
{ lib, pkgs, config, ... }:
let
cfg = config.mae.nvim.hexeditor;
in
{
options.mae.nvim.hexeditor.enable = lib.mkEnableOption "Enable hexediting in neovim";
config = lib.mkIf cfg.enable {
programs.neovim.extraConfig = ''
augroup Binary
au!
au BufReadPre *.bin let &bin=1
au BufReadPost *.bin if &bin | %!xxd
au BufReadPost *.bin set ft=xxd | endif
au BufWritePre *.bin if &bin | %!xxd -r
au BufWritePre *.bin endif
au BufWritePost *.bin if &bin | %!xxd
au BufWritePost *.bin set nomod | endif
augroup END
'';
};
}

View file

@ -12,16 +12,12 @@ let
}; };
}; };
mkLspLangConfig = name: cfg: '' mkLspLangConfig = name: cfg: ''
local cfg = ${cfg.script} require'lspconfig'["${name}"].setup(require'coq'.lsp_ensure_capabilities(${cfg.script}))
cfg["capabilities"] = require('cmp_nvim_lsp').default_capabilities()
require'lspconfig'["${name}"].setup(cfg)
''; '';
mkLspLangConfigs = cfgs: lib.strings.concatStringsSep "\n" ((lib.attrsets.mapAttrsToList mkLspLangConfig cfgs)); mkLspLangConfigs = cfgs: lib.strings.concatStringsSep "\n" ((lib.attrsets.mapAttrsToList mkLspLangConfig cfgs));
in in
{ {
options.mae.nvim.lsp = { options.mae.nvim.lsp = {
enable = mkEnableOption "Enable lsp support in nvim with nvim-lspconfig and cmp-nvim"; enable = mkEnableOption "Enable lsp support in nvim with nvim-lspconfig and cmp-nvim";
servers = mkOption { servers = mkOption {
type = types.attrsOf lspLangConfigType; type = types.attrsOf lspLangConfigType;
@ -32,50 +28,13 @@ in
config = mkIf cfg.lsp.enable { config = mkIf cfg.lsp.enable {
programs.neovim = { programs.neovim = {
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
nvim-snippy
cmp-nvim-lsp
cmp-buffer
cmp-path
cmp-tmux
cmp-snippy
{ {
plugin = nvim-cmp; plugin = coq_nvim;
config = '' config = ''
local cmp = require'cmp' vim.g.coq_settings = {
xdg = true,
cmp.setup({ auto_start = true
snippet = { }
-- REQUIRED - you must specify a snippet engine
expand = function(args)
require('snippy').expand_snippet(args.body)
end,
},
window = {},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'snippy' },
{ name = 'path' }
}, {
{ name = 'buffer' },
{ name= 'tmux' }
})
})
-- Set configuration for specific filetype.
cmp.setup.filetype('gitcommit', {
sources = cmp.config.sources({
{ name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it.
}, {
{ name = 'buffer' },
})
})
''; '';
type = "lua"; type = "lua";
} }

View file

@ -1,19 +0,0 @@
{ lib, pkgs, config, ... }:
let
cfg = config.mae.nvim.python;
in
with lib;
{
options.mae.nvim.python.enable = lib.mkEnableOption "Enable python language support in neovim";
config = mkIf cfg.enable {
mae.nvim.lsp.servers.pyright = {
enable = true;
script = ''
{
cmd = { "${pkgs.nodePackages.pyright}/bin/pyright-langserver", "--stdio" },
}
'';
};
};
}

View file

@ -0,0 +1,123 @@
{ config, lib, pkgs, ... }:
let
cfg = config.virtualisation.containers;
inherit (lib) mkOption types;
toml = pkgs.formats.toml { };
in
{
options.virtualisation.containers = {
enable =
mkOption {
type = types.bool;
default = false;
description = ''
This option enables the common /etc/containers configuration module.
'';
};
ociSeccompBpfHook.enable = mkOption {
type = types.bool;
default = false;
description = "Enable the OCI seccomp BPF hook";
};
containersConf.settings = mkOption {
type = toml.type;
default = { };
description = "containers.conf configuration";
};
containersConf.cniPlugins = mkOption {
type = types.listOf types.package;
defaultText = ''
[
pkgs.cni-plugins
]
'';
example = lib.literalExample ''
[
pkgs.cniPlugins.dnsname
]
'';
description = ''
CNI plugins to install on the system.
'';
};
registries = {
search = mkOption {
type = types.listOf types.str;
default = [ "docker.io" "quay.io" ];
description = ''
List of repositories to search.
'';
};
insecure = mkOption {
default = [ ];
type = types.listOf types.str;
description = ''
List of insecure repositories.
'';
};
block = mkOption {
default = [ ];
type = types.listOf types.str;
description = ''
List of blocked repositories.
'';
};
};
policy = mkOption {
default = { };
type = types.attrs;
example = lib.literalExample ''
{
default = [ { type = "insecureAcceptAnything"; } ];
transports = {
docker-daemon = {
"" = [ { type = "insecureAcceptAnything"; } ];
};
};
}
'';
description = ''
Signature verification policy file.
If this option is empty the default policy file from
<literal>skopeo</literal> will be used.
'';
};
};
config = lib.mkIf cfg.enable {
virtualisation.containers.containersConf.cniPlugins = [ pkgs.cni-plugins ];
virtualisation.containers.containersConf.settings = {
network.cni_plugin_dirs = map (p: "${lib.getBin p}/bin") cfg.containersConf.cniPlugins;
engine = {
init_path = "${pkgs.catatonit}/bin/catatonit";
} // lib.optionalAttrs cfg.ociSeccompBpfHook.enable {
hooks_dir = [ config.boot.kernelPackages.oci-seccomp-bpf-hook ];
};
};
xdg.configFile."containers/containers.conf".source =
toml.generate "containers.conf" cfg.containersConf.settings;
xdg.configFile."containers/registries.conf".source = toml.generate "registries.conf" {
registries = lib.mapAttrs (n: v: { registries = v; }) cfg.registries;
};
xdg.configFile."containers/policy.json".source =
if cfg.policy != { } then pkgs.writeText "policy.json" (builtins.toJSON cfg.policy)
else "${pkgs.skopeo.src}/default-policy.json";
};
}

View file

@ -0,0 +1,7 @@
{ ... }: {
imports = [
./podman.nix
./containers.nix
./podman-dnsname.nix
];
}

View file

@ -0,0 +1,36 @@
{ config, lib, pkgs, ... }:
let
inherit (lib)
mkOption
mkIf
types
;
cfg = config.services.podman;
in
{
options = {
services.podman = {
defaultNetwork.dnsname.enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable DNS resolution in the default podman network.
'';
};
};
};
config = {
virtualisation.containers.containersConf.cniPlugins = mkIf cfg.defaultNetwork.dnsname.enable [ pkgs.dnsname-cni ];
services.podman.defaultNetwork.extraPlugins =
lib.optional cfg.defaultNetwork.dnsname.enable {
type = "dnsname";
domainName = "dns.podman";
capabilities.aliases = true;
};
};
}

View file

@ -0,0 +1,183 @@
{ config, lib, pkgs, ... }:
let
cfg = config.services.podman;
toml = pkgs.formats.toml { };
json = pkgs.formats.json { };
inherit (lib) mkOption types;
podmanPackage = (pkgs.podman.override { inherit (cfg) extraPackages; });
# Provides a fake "docker" binary mapping to podman
dockerCompat = pkgs.runCommandNoCC "${podmanPackage.pname}-docker-compat-${podmanPackage.version}"
{
outputs = [ "out" "man" ];
inherit (podmanPackage) meta;
} ''
mkdir -p $out/bin
ln -s ${podmanPackage}/bin/podman $out/bin/docker
mkdir -p $man/share/man/man1
for f in ${podmanPackage.man}/share/man/man1/*; do
basename=$(basename $f | sed s/podman/docker/g)
ln -s $f $man/share/man/man1/$basename
done
'';
net-conflist = pkgs.runCommand "87-podman-bridge.conflist"
{
nativeBuildInputs = [ pkgs.jq ];
extraPlugins = builtins.toJSON cfg.defaultNetwork.extraPlugins;
jqScript = ''
. + { "plugins": (.plugins + $extraPlugins) }
'';
} ''
jq <${cfg.package}/etc/cni/net.d/87-podman-bridge.conflist \
--argjson extraPlugins "$extraPlugins" \
"$jqScript" \
>$out
'';
in
{
imports = [
./podman-dnsname.nix
#./podman-network-socket.nix
(lib.mkRenamedOptionModule [ "virtualisation" "podman" "libpod" ] [ "virtualisation" "containers" "containersConf" ])
];
meta = {
maintainers = lib.teams.podman.members;
};
options.services.podman = {
enable =
mkOption {
type = types.bool;
default = false;
description = ''
This option enables Podman, a daemonless container engine for
developing, managing, and running OCI Containers on your Linux System.
It is a drop-in replacement for the <command>docker</command> command.
'';
};
dockerSocket.enable = mkOption {
type = types.bool;
default = false;
description = ''
Make the Podman socket available in place of the Docker socket, so
Docker tools can find the Podman socket.
Podman implements the Docker API.
'';
};
dockerCompat = mkOption {
type = types.bool;
default = false;
description = ''
Create an alias mapping <command>docker</command> to <command>podman</command>.
'';
};
enableNvidia = mkOption {
type = types.bool;
default = false;
description = ''
Enable use of NVidia GPUs from within podman containers.
'';
};
extraPackages = mkOption {
type = with types; listOf package;
default = [ ];
example = lib.literalExample ''
[
pkgs.gvisor
]
'';
description = ''
Extra packages to be installed in the Podman wrapper.
'';
};
package = lib.mkOption {
type = types.package;
default = podmanPackage;
internal = true;
description = ''
The final Podman package (including extra packages).
'';
};
defaultNetwork.extraPlugins = lib.mkOption {
type = types.listOf json.type;
default = [ ];
description = ''
Extra CNI plugin configurations to add to podman's default network.
'';
};
};
config = lib.mkIf cfg.enable (lib.mkMerge [
{
home.packages = [ cfg.package ]
++ lib.optional cfg.dockerCompat dockerCompat;
xdg.configFile."cni/net.d/87-podman-bridge.conflist".source = net-conflist;
virtualisation.containers = {
enable = true; # Enable common /etc/containers configuration
containersConf.settings = lib.optionalAttrs cfg.enableNvidia {
engine = {
conmon_env_vars = [ "PATH=${lib.makeBinPath [ pkgs.nvidia-podman ]}" ];
runtimes.nvidia = [ "${pkgs.nvidia-podman}/bin/nvidia-container-runtime" ];
};
};
};
systemd.user = {
services.podman = {
Unit = {
Description = "Podman API Service";
Requires = "podman.socket";
After = "podman.socket";
Documentation = "man:podman-system-service(1)";
StartLimitIntervalSec = 0;
};
Service = {
Type = "exec";
KillMode = "process";
Environment = "LOGGING=\" --log-level=info\"";
ExecStart = [ "" "${cfg.package}/bin/podman $LOGGING system service" ];
};
Install = {
WantedBy = [ "multi-user.target" ];
};
};
sockets.podman = {
Unit = {
Description = "Podman API Socket";
Documentation = "man:podman-system-service(1)";
};
Socket = {
ListenStream = "%t/podman/podman.sock";
SocketMode = 0660;
};
Install.WantedBy = [ "sockets.target" ];
};
};
}
(lib.mkIf cfg.dockerSocket.enable {
home.sessionVariables."DOCKER_HOST" = "unix:///run/user/$UID/podman/podman.sock";
})
]);
}

View file

@ -0,0 +1,53 @@
{
programs.alacritty = {
enable = true;
settings = {
window = {
padding = {
x = 6;
y = 6;
};
};
font = {
normal = {
family = "JetBrainsMono Nerd Font";
};
size = 12;
};
colors = {
primary = {
background = "#161821";
foreground = "#d2d4de";
};
normal = {
black = "#161821";
red = "#e27878";
green = "#b4be82";
yellow = "#e2a478";
blue = "#84a0c6";
magenta = "#a093c7";
cyan = "#89b8c2";
white = "#c6c8d1";
};
bright = {
black = "#6b7089";
red = "#e98989";
green = "#c0ca8e";
yellow = "#e9b189";
blue = "#91acd1";
magenta = "#ada0d3";
cyan = "#95c4ce";
white = "#d2d4de";
};
};
cursor = {
style = "Block";
blinking = "On";
};
live_config_reload = false;
mouse = {
hide_when_typing = false;
};
};
};
}

View file

@ -1,3 +0,0 @@
{
home.sessionPath = [ "$HOME/.local/bin" "$HOME/.cargo/bin/" ];
}

View file

@ -1,13 +1,12 @@
{ {
programs.git = { programs.git = {
enable = true; enable = true;
lfs.enable = true;
extraConfig = { extraConfig = {
init.defaultBranch = "mistress"; init.defaultBranch = "mistress";
pull.ff = "only"; pull.ff = "only";
}; };
userEmail = "git@badat.dev"; userEmail = "badatnames@tutanota.com";
userName = "mae"; userName = "bad";
}; };
} }

View file

@ -9,9 +9,6 @@
rust.enable = true; rust.enable = true;
go.enable = true; go.enable = true;
clangd.enable = true; clangd.enable = true;
python.enable = true; #python.enable = true;
elixir.enable = true;
dart.enable = true;
hexeditor.enable = true;
}; };
} }

View file

@ -1,17 +1,6 @@
{ pkgs, config, ... }: { pkgs, ... }:
let
podman_sock = "unix://$XDG_RUNTIME_DIR/podman/podman.sock";
podmanCompose = pkgs.runCommand "docker-compose-podman-compat"
{ {
buildInputs = [ pkgs.makeWrapper ]; services.podman.enable = true;
} '' services.podman.defaultNetwork.dnsname.enable = true;
mkdir -p $out/bin services.podman.dockerSocket.enable = true;
makeWrapper '${pkgs.docker-compose}/bin/docker-compose' "$out/bin/podman-compose" \
--set-default "DOCKER_HOST" '${podman_sock}' \
--set-default DOCKER_BUILDKIT 0
'';
in
{
home.packages = [ podmanCompose ];
home.sessionVariables.DOCKER_HOST = podman_sock;
} }

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }@inputs: { pkgs, lib, ... }@inputs:
let let
rofi = pkgs.rofi.override { plugins = [ pkgs.rofi-emoji ]; }; rofi = pkgs.rofi.override { plugins = [ pkgs.rofi-emoji ]; };
scripts = ((import ./scripts.nix) inputs); scripts = ((import ./scripts.nix) inputs);
@ -8,7 +8,7 @@ in
wayland.windowManager.sway = rec { wayland.windowManager.sway = rec {
enable = true; enable = true;
config = { config = {
terminal = "alacritty"; terminal = "${pkgs.alacritty}/bin/alacritty";
menu = "${rofi}/bin/rofi -show combi"; menu = "${rofi}/bin/rofi -show combi";
modifier = "Mod4"; modifier = "Mod4";
output = { output = {
@ -22,7 +22,6 @@ in
accel_profile = "flat"; accel_profile = "flat";
dwt = "disabled"; dwt = "disabled";
pointer_accel = "0.0"; pointer_accel = "0.0";
xkb_options = "caps:escape";
}; };
}; };
bars = [{ bars = [{
@ -31,20 +30,24 @@ in
}]; }];
floating.criteria = [{ title = "Steam - Update News"; }]; floating.criteria = [{ title = "Steam - Update News"; }];
startup = [ startup = [
# Support for old style xembed tray icons, mostly used by wine # Copied from https://git.sr.ht/~sumner/home-manager-config/tree/master/item/modules/window-manager/wayland.nix#L64
{ command = "${pkgs.plasma-workspace}/bin/xembedsniproxy"; } # See https://github.com/nix-community/home-manager/issues/2028
# Make all the pinentry stuff work
# See: https://github.com/NixOS/nixpkgs/issues/119445#issuecomment-820507505
# and: https://github.com/NixOS/nixpkgs/issues/57602#issuecomment-820512097
{ command = "dbus-update-activation-environment WAYLAND_DISPLAY"; }
]; ];
keybindings = lib.mkOptionDefault { keybindings = lib.mkOptionDefault {
"XF86PowerOff" = "exec systemctl suspend"; "XF86PowerOff" = "exec systemctl hibernate";
}; };
}; };
wrapperFeatures.gtk = true; wrapperFeatures.gtk = true;
systemdIntegration = true; systemdIntegration = true;
extraSessionCommands = '' extraSessionCommands = ''
#export SDL_VIDEODRIVER=wayland #export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_WAYLAND_FORCE_DPI=physical export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio), # Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly: # use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1 export _JAVA_AWT_WM_NONREPARENTING=1
@ -64,9 +67,8 @@ in
exec = pkgs.writeShellScript "riley-gender" '' exec = pkgs.writeShellScript "riley-gender" ''
set -euo pipefail set -euo pipefail
until ping -c1 google.com >/dev/null 2>&1; do :; done until ping -c1 google.com >/dev/null 2>&1; do :; done
summary="$(${pkgs.curl}/bin/curl 'https://riley.lgbt/api/summary')" gender="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/gender')"
pronouns="$(echo $summary | jq -r '.pronouns')" pronouns="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/pronouns')"
gender="$(echo $summary | jq -r '.gender')"
echo -n "Riley: $gender ($pronouns)" echo -n "Riley: $gender ($pronouns)"
''; '';
}; };
@ -98,7 +100,7 @@ in
}; };
}; };
services.mako = { programs.mako = {
enable = true; enable = true;
defaultTimeout = 2000; defaultTimeout = 2000;
}; };

View file

@ -1,23 +1,40 @@
* {
all: unset;
}
* { * {
/* `otf-font-awesome` is required to be installed for icons */ /* `otf-font-awesome` is required to be installed for icons */
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
font-size: 11px;
} }
window#waybar { window#waybar {
background-color: rgba(43, 48, 59, 0.5); background-color: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
color: #ffffff; color: #ffffff;
transition-property: background-color; transition-property: background-color;
transition-duration: .5s; transition-duration: .5s;
} }
window#waybar.hidden {
opacity: 0.2;
}
/*
window#waybar.empty {
background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
#workspaces button { #workspaces button {
padding: 0px 10px; padding: 0 5px;
background-color: transparent; background-color: transparent;
color: #ffffff; color: #ffffff;
/* Use box-shadow instead of border so the text isn't offset */ /* Use box-shadow instead of border so the text isn't offset */
@ -42,6 +59,11 @@ window#waybar {
background-color: #eb4d4b; background-color: #eb4d4b;
} }
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock, #clock,
#battery, #battery,
#cpu, #cpu,
@ -54,26 +76,32 @@ window#waybar {
#custom-media, #custom-media,
#mode, #mode,
#idle_inhibitor, #idle_inhibitor,
#scratchpad,
#custom-riley-gender, #custom-riley-gender,
#mpd { #mpd {
padding: 5px 10px; padding: 0 10px;
color: #ffffff; color: #ffffff;
} }
#mode { #tray * {
background-color: #64727D; padding: 0 5px;
border-bottom: 3px solid #ffffff;
} }
#custom-riley-gender { #custom-riley-gender {
background-color: #7D9EFF; background-color: #7D9EFF;
} }
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces { .modules-left > widget:first-child > #workspaces {
margin-left: 0; margin-left: 0;
} }
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces { .modules-right > widget:last-child > #workspaces {
margin-right: 0; margin-right: 0;
} }
@ -130,17 +158,44 @@ label:focus {
background-color: #90b1b1; background-color: #90b1b1;
} }
#network {
background-color: #2980b9;
}
#network.disconnected {
background-color: #f53c3c;
}
#pulseaudio { #pulseaudio {
background-color: #f1c40f; background-color: #f1c40f;
color: #000000; color: #000000;
} }
#pulseaudio.muted { #pulseaudio.muted {
background-color: #90b1b1;
color: #2a5c45; color: #2a5c45;
} }
#tray * { #custom-media {
padding: 0 5px; background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
background-color: #f0932b;
}
#temperature.critical {
background-color: #eb4d4b;
} }
#tray { #tray {
@ -155,3 +210,53 @@ label:focus {
-gtk-icon-effect: highlight; -gtk-icon-effect: highlight;
background-color: #eb4d4b; background-color: #eb4d4b;
} }
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: #00b093;
color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: #97e1ad;
color: #000000;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}

View file

@ -0,0 +1,11 @@
{ pkgs, ... }:
{
programs.vscode = {
enable = true;
package = pkgs.vscodium;
extensions = with pkgs.vscode-extensions; [
ms-vsliveshare.vsliveshare
vscodevim.vim
];
};
}

View file

@ -28,8 +28,6 @@
${builtins.readFile ./p10k.zsh} ${builtins.readFile ./p10k.zsh}
''; '';
}; };
programs.direnv.enableZshIntegration = true; programs.direnv.enableZshIntegration = true;
home.packages = [ pkgs.fzf ];
} }